Prood
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 (single admin URL)Auth + integrations + domains@prood/api-client, @prood/commerce, @prood/ui
checkout3004Vercel (single checkout URL)None (Redis only)@prood/checkout-host, @prood/ui
api3005Vercel (API subdomain)Full commerce + auth@prood/commerce, @prood/types
admin3006Vercel (restricted ops URL)Auth/session/admin tables@prood/auth, @prood/ui
web3001VercelNone@prood/ui
docs3003VercelNoneFumadocs

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. admin.example.com)Org switching in session
CheckoutSingle checkout URL (e.g. checkout.example.com)Shared across all tenants
APISingle API URL (e.g. api.example.com)All callers hit one origin
AdminRestricted admin URL (e.g. ops-admin.example.com)Platform operations only
Docsdocs.example.comStatic + OpenAPI

See Deployment guide for the full checklist.

Application guides

On this page