dps-dashboard
Customer-facing platform dashboard. UI layer only — no business logic. All operations are Parse Cloud Function calls against dps-server.
- Repo: duabalabs/dps-dashboard
- Production: platform.duabalabs.com
- Stack: Next.js 14 + Refine + MUI + NextAuth
What lives here vs the server
| Concern | Lives in |
|---|---|
| Auth (sessions, OAuth) | Dashboard (NextAuth) |
| All business logic | Server (Cloud Functions) |
| Wizards / forms / UI | Dashboard |
| Data fetching | Dashboard via Parse.Cloud.run(...) |
| Storage / DB writes | Server only |
The only API route the dashboard exposes is /api/auth/[...nextauth] for NextAuth handlers.
Layout
| Path | Purpose | Status |
|---|---|---|
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.ts | Template definitions (single source of truth) | ✅ |
Local development
cd apps/dps/dps-dashboard
pnpm install
cp .env.example .env.local
pnpm dev # http://localhost:3000Requires 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 Type | Section map | Tabs |
|---|---|---|
parse-server | parseServerSectionMap | Overview, Platform, Releases, Credentials, Environment, Database, Cloud Functions, Browser, Metrics, Logs, Domain, Settings (12) |
sellub | sellubSectionMap | Overview, Platform, Releases, Environment, Database, Browser, Metrics, Logs, Domain, Settings (10) |
react-web | reactWebSectionMap | Overview, Platform, Releases, Environment, Build, Logs, Domain, Settings (8) |
react-native | reactNativeSectionMap | Overview, Build, Releases, Publish, Logs, Settings (6) |
n8n | missing | Not 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.