DPSDPS Appsdps-dashboard

dps-dashboard

Customer-facing platform dashboard. UI layer only — no business logic. All operations are Parse Cloud Function calls against dps-server.

What lives here vs the server

ConcernLives in
Auth (sessions, OAuth)Dashboard (NextAuth)
All business logicServer (Cloud Functions)
Wizards / forms / UIDashboard
Data fetchingDashboard via Parse.Cloud.run(...)
Storage / DB writesServer only

The only API route the dashboard exposes is /api/auth/[...nextauth] for NextAuth handlers.

Layout

PathPurposeStatus
src/app/(auth)/Login / register / OAuth
src/app/(dashboard)/projects/Project + app management
src/app/(dashboard)/templates/Template gallery
src/app/(dashboard)/billing/User billing⚠️ 60%
src/app/(dashboard)/dps-e/DPS-E module UI⚠️ 70%
src/app/(dashboard)/settings/User settings⚠️ 50%
src/app/api/auth/NextAuth routes only
src/components/apps/App wizards (per app type)
src/components/sellub/Sellub provisioning components
src/components/deployment/Deploy target selectors (Docker/SSH/Netlify/Vercel)
src/components/templates/Template preview
src/lib/github/GitHub OAuth + repo integration
src/lib/sellub/Sellub helpers
src/types/templates.tsTemplate definitions (single source of truth)

Local development

cd apps/dps/dps-dashboard
pnpm install
cp .env.example .env.local
pnpm dev    # http://localhost:3000

Requires Node 20+ and a running dps-server (local or remote).

App detail page composition

Every provisioned app renders into a shared ModularAppManager driven by per-type configuration:

App TypeSection mapTabs
parse-serverparseServerSectionMapOverview, Platform, Releases, Credentials, Environment, Database, Cloud Functions, Browser, Metrics, Logs, Domain, Settings (12)
sellubsellubSectionMapOverview, Platform, Releases, Environment, Database, Browser, Metrics, Logs, Domain, Settings (10)
react-webreactWebSectionMapOverview, Platform, Releases, Environment, Build, Logs, Domain, Settings (8)
react-nativereactNativeSectionMapOverview, Build, Releases, Publish, Logs, Settings (6)
n8nmissingNot yet rendered in page.tsx

SECTION_OVERRIDES per appType swap in type-specific section components — for example sellub uses SellubCredentialsSection and SellubDatabaseSection while parse-server uses the generic ones.

Wizard surface

Each app type has a creation wizard under src/components/apps/:

  • ParseInstanceCreateDialog.tsx — Parse Server (95% complete)
  • Generic app wizard — used by all other types (90% complete)
  • Sellub-specific wizard sub-components — under src/components/sellub/

Super-admin surface

Behind the superadmin role, the dashboard exposes platform-wide management for templates, Docker images, users, and billing. Status: 0% — scaffolding only. See GAPS.md.