Applications

Applications overview

The seven runtime applications in the Prood monorepo and how they interact.

Prood ships seven deployable Next.js applications, each with a distinct role in the commerce platform.

Application map

AppPortDeploy targetDatabasePrimary packages
storefront3000Vercel (per-tenant domains)Auth + tenant lookup@prood/api-client, @prood/ui, @prood/types
dashboard3002Vercel (prood.com/dashboard)Auth + integrations + domains@prood/api-client, @prood/commerce, @prood/ui
checkout3004Vercel (prood.com/pay)None (Redis only)@prood/checkout-host, @prood/ui
api3005Vercel (prood.com/v1, /mcp, /api/auth)Full commerce + auth@prood/commerce, @prood/types
admin3006Vercel (prood.com/admin)Auth/session/admin tables@prood/auth, @prood/ui
web3001Vercel (prood.com, the gateway)None@prood/ui
docs3003Vercel (prood.com/docs)NoneFumadocs

prood.com is one domain: apps/web is the gateway and rewrites each path to the app's own Vercel project. See Deployment.

Interaction diagram

Drag to pan · Scroll to zoom

Auth split

Auth issuance is centralized on apps/api for the dashboard; the storefront keeps a local handler on each store origin. All apps share the same Neon database:

AppUsersAuth HTTP handlerAuth plugins
StorefrontCustomers (buyers)Local /api/auth on storefront originEmail/password
DashboardMerchantsRemote — browser calls apps/api (NEXT_PUBLIC_AUTH_URL)Email/password + organization
APIAll caller types/api/auth on API originorganization + apiKey + agentAuth
AdminPlatform operatorsAPI-issued session, validated against shared DBBetter Auth admin/API key operations

Customer accounts on the storefront are separate from merchant accounts on the dashboard. A person can be both, but they authenticate to different apps.

Data access patterns

AppCommerce dataHow
StorefrontCatalog, cart, orders@prood/api-client → API (server components + BFF)
DashboardProducts, orders, customers, stats@prood/api-client → API /v1/admin/*
DashboardIntegrations, domainsDirect @prood/commerce + Drizzle (not via API)
CheckoutOrder statusWebhook forward → API
AdminUsers, orgs, sessions, API keys, agentsDirect shared auth/admin tables
APIEverything@prood/commerce → @prood/platform

Deployment model

In production, each app is a separate Vercel project sharing the same Neon database:

ProjectCustom domainsNotes
StorefrontPer-merchant domains + subdomainsTenant resolved from Host
DashboardSingle admin URL (e.g. prood.com/dashboard)Org switching in session
CheckoutSingle checkout URL (e.g. prood.com/pay)Shared across all tenants
APISingle API URL (e.g. prood.com/v1)All callers hit one origin
AdminRestricted admin URL (e.g. prood.com/admin)Platform operations only
Docsprood.com/docsStatic + OpenAPI

See Deployment guide for the full checklist.

Application guides