Example
Suppose your project has this structure:
src
├── backend
│ ├── database
│ └── server
└── frontend
├── lib
└── ui
Each bottom-level component (ui, lib, server, database) can be started on its own.
1. Initialize the Project
From your repo root, run:
curo init > curo.toml
This generates a curo.toml` in your root directory.
2. Top-level curo.toml
Open the root curo.toml. For this layout:
curo_toml_version = "0.93.0"
[about]
name = "node-monorepo"
description = "Full-stack monorepo with Node.js frontend/backend and PostgreSQL database"
code_dir = "src"
[dev]
format = "prettier --write ."
lint = "eslint ."
components = ["frontend", "backend"]
code_dir = "src"tells curo all code lives insrc/.componentslists first-level folders insrc/.
3. src/frontend/curo.toml
Create src/frontend/curo.toml with curo init:
curo_toml_version = "0.93.0"
[about]
name = "frontend"
code_dir = "."
components = ["ui", "lib"]
4. src/backend/curo.toml
In src/backend/curo.toml:
curo_toml_version = "0.93.0"
[about]
name = "backend"
code_dir = "."
components = ["server", "database"]
5. Bottom-level curo.tomls
For src/frontend/ui/curo.toml:
curo_toml_version = "0.93.0"
[about]
name = "ui"
code_dir = "."
[dev]
install = "npm install"
start = "npm run start"
For src/frontend/lib/curo.toml:
curo_toml_version = "0.93.0"
[about]
name = "lib"
code_dir = "."
[dev]
install = "npm install"
build = "npm run build"
For src/backend/server/curo.toml:
curo_toml_version = "0.93.0"
[about]
name = "server"
code_dir = "."
[dev]
install = "npm install"
start = "npm run start"
For src/backend/database/curo.toml:
curo_toml_version = "0.93.0"
[about]
name = "database"
code_dir = "."
[dev]
start = "docker-compose up db"
6. Example Usage
- Install everything:
curo install - Format all code:
curo format - Lint all code:
curo lint - Start just the server:
curo start backend server - Start the UI:
curo start frontend ui - Start only the database:
curo start backend database - Start everything:
curo start