How soulmediaglobal/sma-app works
This tree is a Gentelella admin dashboard template extended with SMA-app internal CRM and client-portal workflows. The sampled entry point mounts shared page UI, applies admin authorization, then initializes domain pages; the client-detail page owns project, quotation, workflow, document, and payment views. Supabase provides backing auth and data, while the portal-access function handles invitation/account administration. README capabilities such as charts, tables, inbox, kanban, calendar, file manager, command palette, and PWA are retained; several are documented or named in the tree but their implementation wiring was not sampled, so uncertain links are omitted.
Main entry points: main-v4.js Page bootstrap · client-detail-v3.js Client detail · supabaseClient.js Supabase client · auth-guard.js Admin guard
Components 27
Page entry and auth
- Page bootstrap
src/main-v4.js - Admin guard
src/lib/auth-guard.js - Auth routing
src/lib/auth-routing.js - Client portal auth
src/v4/client-portal-auth.js
Client operations
- Client list
src/v4/client-list.js - Client detail
src/v4/client-detail-v3.js - Case intake
src/v4/case-form.js - Quotations and RAB
src/v4/client-quotations.js - Client payments
src/v4/client-payments.js - Client documents
src/v4/client-documents.js - Client workflow
src/v4/client-workflow.js
Dashboard features
- Dashboard shell
src/v4/shell.js - Dashboard views
src/v4/dashboard.js - Charts
src/v4/charts.js - Tables
src/v4/tables.js - Command palette
src/v4/command-palette.js - Inbox
src/v4/inbox.js - Kanban
src/v4/kanban.js - Calendar
src/v4/calendar.js - File manager
src/v4/file-manager.js
Backend services
- Portal auth helpers
src/lib/client-portal-auth.js - Supabase client
src/lib/supabaseClient.js - Portal access API
supabase/functions/client-portal-access/index.ts - Offline service worker
public/sw.js
Other components
- Dashboard user
- Supabase
- Browser
Connections 31
- Dashboard user → Page bootstrap: opens page
- Page bootstrap → Admin guard: checks access
- Admin guard → Supabase client: verifies user
- Admin guard → Auth routing: resolves route
- Page bootstrap → Dashboard shell: mounts shell
- Page bootstrap → Charts: initializes
- Page bootstrap → Tables: initializes
- Page bootstrap → Command palette: initializes
- Page bootstrap → Dashboard views: initializes
- Page bootstrap → Client list: initializes
- Page bootstrap → Client detail: loads on demand
- Page bootstrap → Client portal auth: loads on auth page
- Client portal auth → Portal auth helpers: authenticates
- Client portal auth → Auth routing: routes profile
- Portal auth helpers → Supabase client: reads and updates
- Page bootstrap → Inbox: page entry
- Page bootstrap → Kanban: page entry
- Page bootstrap → Calendar: page entry
- Page bootstrap → File manager: page entry
- Client list → Client detail: opens detail
- Client detail → Case intake: opens intake
- Client detail → Quotations and RAB: loads and renders
- Client detail → Client payments: loads invoice state
- Client detail → Client documents: document view
- Client detail → Client workflow: workflow view
- Client detail → Supabase client: reads case data
- Quotations and RAB → Supabase client: reads and writes
- Client documents → Supabase client: reads and writes
- Supabase client → Supabase: queries data
- Portal access API → Supabase: manages accounts
- Browser → Offline service worker: registers and fetches