50 lines
2.8 KiB
Plaintext
50 lines
2.8 KiB
Plaintext
# ConusAI App Template
|
|
|
|
> A multi-tenant B2B application on ConusAI Cloud. Sign-in, organizations, workspaces and
|
|
> projects with roles and invitations, audit, usage metering, observability, background jobs and
|
|
> an accessible branded UI are already here. What a developer adds is domain modules under
|
|
> modules/; nothing under apps/ changes to add one.
|
|
|
|
Read AGENTS.md first: it is the contract for anyone, human or agent, writing code here.
|
|
|
|
## Shape
|
|
|
|
- Modular monolith. One repository, one image, three processes: `web`, `worker` and a `migrate`
|
|
job (compose.yaml, conusai.json).
|
|
- `modules/<id>/` is a vertical slice: `contract/` (zod schemas and procedure contracts, the only
|
|
thing other modules may import), `core/` (use cases, pure TypeScript), `adapters/` (one per
|
|
engine), `ui/`, `i18n/`, `__tests__/`.
|
|
- `modules/index.ts` is the module list, and the registry is built from the manifests in it and
|
|
from nothing else.
|
|
- `apps/web` is the Next.js shell and the one HTTP mount; `apps/worker` runs jobs, cron and the
|
|
outbox relay; `config/` holds the deployment contract, the app brand and the feature flags.
|
|
|
|
## Kernel packages
|
|
|
|
- `@conusai-kit/core` — defineModule, the registry, the procedure builder, problem+json, the DI container
|
|
- `@conusai-kit/data` — repository and unit-of-work ports, the outbox, idempotency, JobQueue
|
|
- `@conusai-kit/tenancy` — organizations, workspaces, projects, roles, invitations
|
|
- `@conusai-kit/data-kysely` — the Postgres adapter, row-level security, the migration runner
|
|
- `@conusai-kit/jobs-pgboss` — the job adapter and the worker runtime
|
|
- `@conusai-kit/files`, `@conusai-kit/proposals` — uploads with `files.processors`; AI output a person approves, edits or rejects
|
|
- `@conusai-kit/platform` — the deployment contract and the ports over the ConusAI SDKs
|
|
- `@conusai-kit/auth` — the OIDC backend-for-frontend, sessions, bearer tokens, API keys
|
|
- `@conusai-kit/ui`, `@conusai-kit/i18n`, `@conusai-kit/brand` — components, messages, tokens
|
|
- `@conusai-kit/testing` — the adapter contract suite and the generated isolation suite
|
|
|
|
## Commands
|
|
|
|
- `pnpm gate` — typecheck, lint, boundaries, tests, build. Run it before you say you are done.
|
|
- `pnpm dev` — the web shell against the local stack in compose.dev.yaml
|
|
- `pnpm openapi` — regenerate openapi.json after a procedure's schemas change
|
|
- `pnpm migrate` — apply the migrations with the owner's URL (the migrate job's own command)
|
|
|
|
## Files worth reading first
|
|
|
|
- AGENTS.md — the rules (CLAUDE.md imports it; .claude/settings.json and .claude/skills/ are the Claude Code permissions and skills)
|
|
- README.md — how to run it and what is in it
|
|
- modules/index.ts — the module list
|
|
- config/src/env.ts — which Postgres role each process holds, and why
|
|
- apps/web/src/server/router.ts — the one HTTP mount
|
|
- migrations/postgres/0001_kernel.sql — the kernel schema
|