Applications
The Sustentus monorepo contains seven active applications. The platform itself is apps/web; the
others are the agentic app, the tenant management console, the marketing site, role-based dashboards,
and two Nextra doc sites. An eighth, Storybook, was archived on 2026-09-23 and stays in the tree as
reference code only.
Overview
| Application | Purpose | Stack | Port |
|---|---|---|---|
| Web | Main platform — all six persona portals + API/AI | Next.js 16 | 3000 |
| Agent | The agentic layer, beside the platform | Next.js 16 | 3007 |
| Console | Tenant management for Sustentus staff + partners | Next.js 16 | 3006 |
| Dashboards | Role-based analytics dashboards | Next.js 16 | 3005 |
| Marketing | Public marketing site | Next.js 15 | 3001 |
| Documentation | This documentation site | Nextra | — |
| Help | Help & support centre | Nextra | — |
Application details
Web (apps/web)
The main platform — Next.js 16 with the App Router and Turbopack. Hosts the portals for all six
personas (admin, CSM, SDM, expert, vendor, customer), the server surface (route handlers + Server
Actions), and the onboarding concierge (via @sustentus/services/ai); the customer’s requirements
conversation lives in the agent app, which the platform hands off to. Imports UI from
@sustentus/ui and data/logic from @sustentus/services/server. See [apps/web/AGENTS.md] in the
repo for app-specific rules.
Agent (apps/agent)
Next.js 16 agentic app (port 3007) — the home of the agentic layer, deployed as the
agentic-interface Vercel project. It sits beside the platform rather than inside it: proxy.ts
gates every route deny-by-default at the edge, and it runs against the same Clerk instance as the
platform, so on a shared root domain a signed-in platform user is already signed in here. It serves
two populations — tenant users, and org-less Sustentus staff and invited partners carrying the
console-access marker — and binds each to one tenant at a time, chosen by the platform rather
than by the model. What the assistant can do depends on who is asking: a signed-in user’s platform
role resolves to a register with its own runtime-editable prompt contract and its own tool sets.
Imports UI from @sustentus/ui; @sustentus/services through /ai and /shared anywhere and
/server in server-only files. Learn more →
Console (apps/console)
Next.js 16 tenant management console (port 3006) — the Sustentus-side operational surface, deployed
as the tenant-management Vercel project. Its users are org-less Clerk users carrying a
publicMetadata console-access marker, not platform roles: Sustentus staff see every tenant,
partners see only the tenants assigned to them. Imports UI from @sustentus/ui and data from
@sustentus/services/server. Learn more →
Dashboards (apps/dashboards)
Next.js 16 role-based dashboards (port 3005). Self-contained — it does not import
@sustentus/ui; UI primitives live locally in components/ui/, and all text uses the local
Typography component. Charts use Recharts.
Marketing (apps/marketing)
Next.js 15 public site (port 3001) — landing, pricing, and waitlist signup with Clerk auth. Imports
UI from @sustentus/ui. Learn more →
Documentation (apps/docs)
This Nextra site — MDX content under app/business/ (direction, strategy, roles, journey) and
app/technical/ (architecture, applications, packages, development). Built-in Pagefind search.
Learn more →
Help (apps/help)
Nextra help & support centre for end users.
Storybook (apps/storybook) — archived
Archived 2026-09-23. Excluded from the pnpm workspace, so it is not installed, linted, typechecked, tested, built or deployed; the code is kept for reference only. Learn more →
Running applications
pnpm dev # all apps
pnpm web:dev # main platform (3000)
pnpm agent:dev # agentic app (3007)
pnpm --filter @sustentus/console dev # console (3006)
pnpm dashboards:dev # dashboards (3005)
pnpm marketing:dev # marketing (3001)Building
pnpm build # all apps and packagesTurborepo builds the shared packages (@sustentus/ui, @sustentus/services) before the apps that
depend on them.