Skip to main content

Services & Packages

Auto-generatedBuilt from 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 / pathKindDeploys toDescription
@workspace/api-server
artifacts/api-server
ServiceRailwayReplitExpress 5 REST API — auth, DB, AI, business logic
@workspace/ftm-web
artifacts/ftm-web
ServiceRailwayReplitMain React SPA — all three role portals
@workspace/illumera-docs
artifacts/illumera-docs
ServiceRailwayReplitDocumentation site
@workspace/illumera-www
artifacts/illumera-www
ServiceRailwayReplitPublic-facing marketing website
@workspace/landing-portal
artifacts/landing-portal
ServiceReplitDeveloper portal
@workspace/mockup-sandbox
artifacts/mockup-sandbox
ServiceReplitVite dev server for isolated component previews
@workspace/pdf-worker
artifacts/pdf-worker
ServiceRailwayReplitHTML-to-PDF rendering microservice
@workspace/jobsite
artifacts/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 / pathKindDeploys toDescription
@workspace/api-client-react
lib/api-client-react
LibraryReact Query hooks generated from api-spec
@workspace/api-spec
lib/api-spec
LibraryOpenAPI 3.1 contract — source of truth for the API surface
@workspace/api-zod
lib/api-zod
LibraryZod validation schemas generated from api-spec
@workspace/db
lib/db
LibraryDrizzle ORM schema, migrations, shared connection pool
@workspace/integrations-anthropic-ai
lib/integrations-anthropic-ai
LibraryAnthropic Claude API adapter (server-side)
@workspace/integrations-openai-ai-react
lib/integrations-openai-ai-react
LibraryOpenAI adapter (React)
@workspace/integrations-openai-ai-server
lib/integrations-openai-ai-server
LibraryOpenAI adapter (server-side)
@workspace/scoring-constants
lib/scoring-constants
LibraryShared scoring/proficiency constants
@workspace/scripts
scripts
Library
@workspace/tests
tests
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 RoleGate component. When APP_ENV is a deployed environment it mounts Clerk, reads the signed-in user's roles from GET /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.mjs copies the canonical lib/api-spec/openapi.yaml into the site so the API Reference always matches the live contract.
    • scripts/gen-reference.mjs produces the Service Catalog above and the Environment Variables reference from the workspace and .env.example.

    Both run automatically before dev, build, and typecheck; 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).