Services
Each key in services is a service name (kebab-case). The value declares what the service IS — not how to run it.
Service Fields
| Field | Type | Description |
|---|
kind | string | backend, frontend, or package |
type | string | Runtime type — see table below |
role | string | Platform role — see table below |
database | string | Logical database name (key in databases) |
apiLibModule | string | API lib module this service consumes |
Kind
| Value | Meaning | Location |
|---|
backend | Server-side service | apps/backend/ |
frontend | Client-side application | apps/frontend/ |
package | Shared library / config package | packages/ |
Type
| Value | Stack |
|---|
spring-boot | Java Spring Boot |
uvicorn | Python ASGI (FastAPI, Starlette) |
gunicorn | Python WSGI (Flask, Django) |
nextjs | Next.js (React) |
vite | Vite (React, Vue, Svelte) |
express | Node.js Express |
django | Django |
flask | Flask |
other | Custom |
Role
| Value | Meaning |
|---|
microlith | Core platform API (monolith or microlith) |
auth | Authentication / authorization service |
hub | Internal dashboard / admin UI |
public | Public-facing site |
status | Status / monitoring dashboard |
worker | Background job processor |
internal | Internal utility service (NLP, profanity, etc.) |
gateway | API gateway / reverse proxy |
other | Anything else |
Example
"services": {
"platform-microlith": {
"kind": "backend",
"type": "spring-boot",
"role": "microlith",
"database": "platform",
"apiLibModule": "platform-microlith"
},
"auth-efga": {
"kind": "backend",
"type": "spring-boot",
"role": "auth",
"database": "auth"
},
"nlp-profanity": {
"kind": "backend",
"type": "uvicorn",
"role": "internal"
},
"hub-frontend": {
"kind": "frontend",
"type": "nextjs",
"role": "hub"
},
"shared": {
"kind": "package"
}
}