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

FieldTypeDescription
kindstringbackend, frontend, or package
typestringRuntime type — see table below
rolestringPlatform role — see table below
databasestringLogical database name (key in databases)
apiLibModulestringAPI lib module this service consumes

Kind

ValueMeaningLocation
backendServer-side serviceapps/backend/
frontendClient-side applicationapps/frontend/
packageShared library / config packagepackages/

Type

ValueStack
spring-bootJava Spring Boot
uvicornPython ASGI (FastAPI, Starlette)
gunicornPython WSGI (Flask, Django)
nextjsNext.js (React)
viteVite (React, Vue, Svelte)
expressNode.js Express
djangoDjango
flaskFlask
otherCustom

Role

ValueMeaning
microlithCore platform API (monolith or microlith)
authAuthentication / authorization service
hubInternal dashboard / admin UI
publicPublic-facing site
statusStatus / monitoring dashboard
workerBackground job processor
internalInternal utility service (NLP, profanity, etc.)
gatewayAPI gateway / reverse proxy
otherAnything 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"
  }
}