Skip to main content

Architecture Overview

Internal documentation

This section documents how Illumera is built and operated. It is visible only to signed-in users holding the platform_admin role, and is excluded from the public search index.

Illumera is a federated talent-marketplace SaaS platform that connects contracting companies, professional-services firms, and independent professionals through a structured, AI-enhanced matching engine. It is multi-tenant: each company operates inside an isolated tenant, and optional partnership agreements let talent visibility cross tenant boundaries.

Runtime topology​

The browser loads the React SPA, which talks to the Express API over /api/*. The API is the only component with database access; every other service is stateless or supporting.

Browser
└─► ftm-web (React 19 + Vite, base /ftm-web)
└─► api-server (Express 5, /api/*)
├── PostgreSQL (Drizzle ORM)
├── Resend (transactional email — queue-based outbox)
├── Anthropic Claude (AI scoring — Sonnet 4.5 default)
├── Stripe (billing & Connect)
├── Tigris / S3 (object storage — resumes, avatars, reports)
└── Align API (project + time-entry sync — outbox + webhooks)

Supporting services:
illumera-www — public marketing site
illumera-docs — this documentation site
landing-portal — developer portal
pdf-worker — HTML-to-PDF rendering

The web app never imports the database package directly — all data access flows through the API. See Services & Packages for the full inventory (this docs site included), generated from the workspace itself.

The three personas​

  • Talent (Persons) maintain a profile, list skills and certifications, complete a culture assessment, and apply to or accept engagements.
  • Companies create projects, define staffing slots, search the federated marketplace, run the engagement lifecycle, and use Capability Intelligence.
  • Platform Administrators manage tenants, users and roles, feature flags, the audit trail, the skill/certification catalogue, and system-wide configuration.

Request lifecycle​

  1. Clerk authenticates the browser session; the API validates the bearer token on every /api/* request.
  2. Middleware loads the DB user and derives the tenant server-side — the client-supplied x-tenant-id header is never trusted as a tenant source.
  3. Role guards (requireRole([...])) authorize the route against the user's roles array.
  4. Handlers read and write through Drizzle; responses are shaped by the OpenAPI contract.

Platform admins acquire tenant context only through an explicit impersonation session, not by asserting a tenant header. See Data Model for the isolation model.

Environments & domains​

APP_ENV selects the environment (production, development, or local). Each node has a production and a development fully-qualified domain; the API asserts that its APP_DOMAIN belongs to the domain set for its APP_ENV at startup and exits on mismatch, so a dev image can never boot against production DNS.

NodeProductionDevelopment
App (ftm-web)app.illumera.usdevapp.illumera.us
APIapi.illumera.usapid.illumera.us
Marketing (www)www.illumera.uswwwd.illumera.us
Docs (this site)docs.illumera.usdocd.illumera.us

Where to read next​