Services & Packages
the workspace package.json files + deploy configs (railway.toml / .replit-artifact) at deploy time. To change it, edit the source — not this page.Illumera is a pnpm monorepo. Workspace members live under artifacts/* (deployable
services and apps) and lib/* (shared libraries); all packages are private and never
published to npm. Dependencies flow strictly from artifacts down to libraries — no library
depends on an artifact, and the web app reaches data only through the API.
The tables below are generated at build time by walking the workspace, so they stay in lockstep with the repository: add a package and it appears here on the next deploy.
Deployable services
Services carry a railway.toml (Railway production) and/or a .replit-artifact/artifact.toml
(Replit dev preview). "App" rows are runnable but have no dedicated deploy config of their own.
| Package / path | Kind | Deploys to | Description |
|---|---|---|---|
@workspace/api-serverartifacts/api-server | Service | RailwayReplit | Express 5 REST API — auth, DB, AI, business logic |
@workspace/ftm-webartifacts/ftm-web | Service | RailwayReplit | Main React SPA — all three role portals |
@workspace/illumera-docsartifacts/illumera-docs | Service | RailwayReplit | Documentation site |
@workspace/illumera-wwwartifacts/illumera-www | Service | RailwayReplit | Public-facing marketing website |
@workspace/landing-portalartifacts/landing-portal | Service | Replit | Developer portal |
@workspace/mockup-sandboxartifacts/mockup-sandbox | Service | Replit | Vite dev server for isolated component previews |
@workspace/pdf-workerartifacts/pdf-worker | Service | RailwayReplit | HTML-to-PDF rendering microservice |
@workspace/jobsiteartifacts/jobsite | App | — | — |
Shared libraries
Libraries are consumed by the services above. Two of them — api-zod and api-client-react
— are generated from the OpenAPI contract in api-spec via Orval, which is why the API
is described in exactly one place.
| Package / path | Kind | Deploys to | Description |
|---|---|---|---|
@workspace/api-client-reactlib/api-client-react | Library | — | React Query hooks generated from api-spec |
@workspace/api-speclib/api-spec | Library | — | OpenAPI 3.1 contract — source of truth for the API surface |
@workspace/api-zodlib/api-zod | Library | — | Zod validation schemas generated from api-spec |
@workspace/dblib/db | Library | — | Drizzle ORM schema, migrations, shared connection pool |
@workspace/integrations-anthropic-ailib/integrations-anthropic-ai | Library | — | Anthropic Claude API adapter (server-side) |
@workspace/integrations-openai-ai-reactlib/integrations-openai-ai-react | Library | — | OpenAI adapter (React) |
@workspace/integrations-openai-ai-serverlib/integrations-openai-ai-server | Library | — | OpenAI adapter (server-side) |
@workspace/scoring-constantslib/scoring-constants | Library | — | Shared scoring/proficiency constants |
@workspace/scriptsscripts | Library | — | — |
@workspace/teststests | Library | — | — |
This documentation site
This site — @workspace/illumera-docs — is one of the services listed above, so the docs
document themselves. A few things worth knowing if you maintain it:
-
Framework. Docusaurus 3, TypeScript, served under the
/illumera-docs/base path. Deploys to Railway (docs.illumera.us) and previews on Replit (docd.illumera.us). -
Role-gating. The site is public by default, but role-scoped sections (For Talent, For Companies, For Administrators, and this Architecture section) are gated with a
RoleGatecomponent. WhenAPP_ENVis a deployed environment it mounts Clerk, reads the signed-in user's roles fromGET /api/users/me, and hides gated content the viewer can't access. In local development Clerk is left unconfigured and all content is shown. -
Self-documenting content. Two build steps keep reference material honest:
scripts/sync-openapi.mjscopies the canonicallib/api-spec/openapi.yamlinto the site so the API Reference always matches the live contract.scripts/gen-reference.mjsproduces the Service Catalog above and the Environment Variables reference from the workspace and.env.example.
Both run automatically before
dev,build, andtypecheck; their outputs are git-ignored and regenerated on every build. -
Run it locally.
pnpm --filter @workspace/illumera-docs run dev(regenerates reference data, then starts Docusaurus on port 3002).