| gio | cefb3b5 | 2025-06-24 21:55:52 +0400 | [diff] [blame] | 1 | This project is a web application for building dodo-app. It can be thought of as WYSIWYG editor for generating JSON configuration conforming to `back/dodo-app.jsonschema` JSON schema, which describes the infrastructure environment dodo-app requires. It sends generated dodo-app project configuration to external API for deployment. Read `back/dodo-app.jsonschema` to understand the structure of the configuration. It is a monorepo consisting of three main components: |
| 2 | 1. `config/`: Contains shared libraries and types used across the `front` and `back` packages. `Config` is Typescript equivalent of the dodo-app.jsonschema. |
| 3 | 2. `front/`: Implements the React-based user interface. This is what the user interacts with to build their dodo-app configuration. It's main component is Canvas where the same dodo-app configuration is presented to the user as a graph, where each node represents different parts of the dodo-app configuration and connections between them represets component dependencies. For each node there is a specific node details React component implementation, which lets users configure the component. `front/` is responsible for validating project configuration, converting graph representation into dodo-app configuration and sending (via `back/`) generated configuration to external API for deployment. |
| 4 | 3. `back/`: Implements the backend service. It's main responsibilities are: |
| 5 | 1. Serving the `front/` end application. |
| 6 | 2. Managing (create/update/delete) projects. |
| 7 | 3. Verifying permissions. |
| 8 | 4. Proxying deployment requests to external API. |
| 9 | |
| 10 | All three components can be built using `npm run build` command. As both `front/` and `back/` depend on `config/`, make sure to build `config/` first. |
| 11 | |
| 12 | Before committing changes make sure to run `npm run lint` and `npm run format` and fix all the issues. |