blob: dd385e7199ff7820d4f8c310ffa377906356feac [file] [log] [blame] [view]
giocefb3b52025-06-24 21:55:52 +04001This 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:
21. `config/`: Contains shared libraries and types used across the `front` and `back` packages. `Config` is Typescript equivalent of the dodo-app.jsonschema.
32. `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.
43. `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
10All 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
12Before committing changes make sure to run `npm run lint` and `npm run format` and fix all the issues.