| 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: |
| 1. `config/`: Contains shared libraries and types used across the `front` and `back` packages. `Config` is Typescript equivalent of the dodo-app.jsonschema. |
| 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. |
| 3. `back/`: Implements the backend service. It's main responsibilities are: |
| 1. Serving the `front/` end application. |
| 2. Managing (create/update/delete) projects. |
| 3. Verifying permissions. |
| 4. Proxying deployment requests to external API. |
| |
| 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. |
| |
| Before committing changes make sure to run `npm run lint` and `npm run format` and fix all the issues. |