# Codebase Map
<!-- Source: index.js (~10,467 lines), frontend/, use-cases/ -->
<!-- last updated: 2026-03-25 -->

## File Ownership by Feature

| Feature Area | Backend (index.js section) | Frontend | DB Tables | Agent/Service |
|-------------|--------------------------|---------|----------|--------------|
| Brands / CRM | `/api/brands/*`, `/api/crm/*` | `app/use-cases/crm/`, `app/brands/` | `brands`, `crm_*` | researchAgent |
| Social Media | `/api/social/*` | `app/social/`, `components/` | `social_*` | socialAgent, brandStrategyAgent |
| Research | `/api/research/*` | `app/dashboard/` (tab) | `research_*` | researchAgent, competitorAgent |
| Ziwei | `/api/ziwei/*`, `routes/v1/ziwei.js` | `app/use-cases/ziwei/`, `components/Ziwei*.tsx` | `ziwei_*` | ZiweiChartAgent |
| RecruitAI | `/api/recruitai/*` | `frontend/public/recruitai/` | `recruitai_*` | leadScoringAgent |
| Print Finance | `/api/print-finance/*` | `app/use-cases/print-finance/`, `components/PrintFinance.tsx` | `print_*` | — |
| Tender Intel | `/api/tender-intel/*` | `app/dashboard/` (tab) | `tender_*` | tenderIntelService |
| Radiance (PR) | `/api/radiance/*` | — (external site) | `radiance_*` | — |
| TEDx Xinyi | `/api/tedx-xinyi/*` | `frontend/public/tedx-xinyi/` | `tedx_*` | minimaxService |
| QR Codes | `/api/qr/*` | `app/qr-generator/` | `qr_*` | — |
| Super Admin | `/api/super-admin/*` | `app/dashboard/` (tab) | `super_admin_users` | — |
| Intelligence | `/api/intelligence/*` (topic) | `app/intelligence/` | `intelligence_*` | marketSentinelAgent |
| Media Library | `/api/admin/media-library/*` | `components/MultimediaLibrary.tsx` | radiance_media_assets | minimaxService |
| Workflow Chat | `/api/workflow-chat`, `/api/agent-chat` | `app/agentic-workflows/` | conversations | All agents |
| Analytics | `/analytics`, `/stats` | `app/dashboard/` (Cost Analysis tab) | analyses | — |
| Health | `/health`, `/api/health/services/*` | `components/ApiHealthCheck.tsx` | — | — |
| Scheduled Jobs | `/api/scheduled-jobs` | `components/ScheduledJobs.tsx` | — | schedule-registry.js |
| RAG / KB | `/api/rag/*`, `/api/knowledge-base/*` | — | knowledge_documents (pgvector) | rag-service.js |
| SME Growth | `/api/sme/*` | `app/use-cases/sme-growth/` | — | smeGrowthOrchestrator |
| Eventflow | Embedded | `app/eventflow/` | — | — |
| Ads Dashboard | Embedded | `app/ads-dashboard/` | — | campaignAnalyticsAgent |
| Adaptive Learning | Embedded | `app/adaptive-learning/` | — | — |

---

## API Endpoints Reference

### Core / Health
```
GET  /health                          # Basic health check
GET  /api/health/services             # All service health statuses
GET  /api/health/services/:id         # Single service health
GET  /api/admin/db-status             # DB connection status
```

### Brands & CRM
```
GET    /api/brands                    # List brands
GET    /api/brands/:id                # Get brand
POST   /api/brands                    # Create brand
DELETE /api/brands/:id                # Delete brand
POST   /api/brands/setup-complete     # Complete brand setup
GET    /api/brands/search             # Search brands
GET    /api/brands/:brand_name/projects
GET    /api/brands/:brandId/products-services
POST   /api/brands/:brandId/products-services
PUT    /api/brands/:brandId/products-services/:productId/status
GET    /api/brands/:brandId/portfolio
POST   /api/brands/guidelines/upload
POST   /api/brands/guidelines/delete
GET    /api/conversations/:brand_name
POST   /api/conversations
GET    /api/conversation/:id
DELETE /api/conversation/:id
```

### CRM Contacts
```
POST   /api/crm/contacts/:clientId
GET    /api/crm/contacts/:clientId
GET    /api/crm/contacts/:clientId/:contactId
PUT    /api/crm/contacts/:clientId/:contactId
DELETE /api/crm/contacts/:clientId/:contactId
POST   /api/crm/contacts/:contactId/link-project
GET    /api/crm/projects/:projectId/contacts
DELETE /api/crm/contacts/:contactId/unlink-project/:projectId
GET    /api/crm/chat
```

### Research
```
POST /api/research/:brandId/business
GET  /api/research/:brandId/business
POST /api/research/:brandId/competitors
GET  /api/research/:brandId/competitors
DELETE /api/research/:brandId/competitors/:competitorId
POST /api/research/:brandId/audience
GET  /api/research/:brandId/audience
DELETE /api/research/:brandId/segments/:segmentId
POST /api/research/:brandId/products
GET  /api/research/:brandId/products
DELETE /api/research/:brandId/products/:productId
```

### Social Media
```
POST /api/social/chat
POST /api/social/strategy/:brandId
GET  /api/social/strategy/:brandId
POST /api/social/interactive/:brandId
GET  /api/social/interactive/:brandId
POST /api/social/trends/:brandId
GET  /api/social/trends/:brandId
POST /api/social/monitoring/:brandId
GET  /api/social/monitoring/:brandId
POST /api/social/community/:brandId
GET  /api/social/community/:brandId
POST /api/social/content-dev/:brandId
GET  /api/social/content-dev/:brandId
POST /api/social/calendar/:brandId
GET  /api/social/calendar/:brandId
POST /api/social/compliance/check
POST /api/social/drafts
GET  /api/social/drafts/:taskId
PUT  /api/social/drafts/:draftId
DELETE /api/social/drafts/:draftId
POST /api/social/drafts/:draftId/promote
```

### Agents
```
POST /agents/creative
POST /agents/seo
POST /agents/social
POST /agents/research
POST /agents/customer
POST /agents/competitor
POST /agents/strategy
POST /agents/cso
POST /agents/sentinel
GET  /agents
```

### Workflow & RAG
```
POST /api/workflow-chat
POST /api/agent-chat
GET  /api/rag/stats
GET  /api/knowledge-base/stats
GET  /api/scheduled-jobs
```

### Ziwei Astrology
```
GET  /api/ziwei/database
GET  /api/ziwei/star/:name
GET  /api/ziwei/category/:category
GET  /api/ziwei/element/:element
GET  /api/ziwei/type/:type
GET  /api/ziwei/search
GET  /api/ziwei/knowledge/stats
GET  /api/ziwei/knowledge/all
GET  /api/ziwei/knowledge/curriculum/:level
GET  /api/ziwei/knowledge/combinations/:category
GET  /api/ziwei/knowledge/search
POST /api/ziwei/calculate
GET  /api/ziwei/charts
GET  /api/ziwei/charts/:id
DELETE /api/ziwei/charts/:id
POST /api/ziwei/interpret
POST /api/ziwei/enhance-interpretation
POST /api/ziwei/conversations
POST /api/ziwei/conversations/:id/messages
GET  /api/ziwei/conversations/:id/history
POST /api/ziwei/compatibility
POST /api/ziwei/insights
POST /api/ziwei/evaluate-rules
GET  /api/ziwei/palaces
GET  /api/ziwei/stars
GET  /api/ziwei/palace-star-meanings/:palaceId/:starId
GET  /api/ziwei/star/:name/palaces
GET  /api/ziwei/star/:name/palace/:palace
GET  /api/ziwei/palace/:palace
```

### RecruitAI
```
POST /api/recruitai/lead
POST /api/recruitai/chat
GET  /api/recruitai/admin/leads
DELETE /api/recruitai/admin/leads/:id
POST /api/recruitai/admin/leads/:id/analyze
GET  /api/recruitai/admin/sessions
GET  /api/recruitai/admin/sessions/:sessionId/messages
GET  /api/recruitai/admin/leads/:id/followup/preview
POST /api/recruitai/admin/leads/:id/followup
POST /api/recruitai/admin/followup-reminder
```

### Print Finance
```
GET/POST/PUT/DELETE /api/print-finance/work-units
GET/POST/PUT/DELETE /api/print-finance/revenue
GET/POST/PUT/DELETE /api/print-finance/costs
GET/POST/PUT/DELETE /api/print-finance/inventory
GET/POST/PUT/DELETE /api/print-finance/material-log
GET/POST/PUT/DELETE /api/print-finance/machine-log
GET/POST/PUT/DELETE /api/print-finance/labour-log
GET/POST/PUT/DELETE /api/print-finance/cost-categories
GET/POST/PUT/DELETE /api/print-finance/material-rates
GET/POST/PUT/DELETE /api/print-finance/scenarios
GET/PUT             /api/print-finance/settings
GET/POST/DELETE     /api/print-finance/invoices
GET                 /api/print-finance/invoices/:id/download
GET                 /api/print-finance/export/jobs|pl|inventory
GET                 /api/print-finance/job-pnl
GET                 /api/print-finance/job-cost-summary
POST                /api/print-finance/costs/upload
GET                 /api/print-finance/costs/template
POST                /api/print-finance/import/analyze|preview|dry-run|confirm
GET/DELETE          /api/print-finance/uploads
GET                 /api/print-finance/uploads/:id/download|preview
GET                 /api/print-finance/allocate-overhead/preview
POST                /api/print-finance/allocate-overhead
```

### Tender Intelligence
```
POST /api/tender-intel/evaluate
POST /api/tender-intel/decision
GET  /api/tender-intel/profile
PUT  /api/tender-intel/profile
GET  /api/tender-intel/digest
GET  /api/tender-intel/tenders
GET  /api/tender-intel/sources
POST /api/tender-intel/sources/:sourceId/validate
PUT  /api/tender-intel/sources/:sourceId
GET  /api/tender-intel/logs
POST /api/tender-intel/discover
POST /api/tender-intel/ingest
POST /api/tender-intel/chat
```

### Radiance (PR & Martech)
```
POST /api/radiance/contact
GET  /api/radiance/contact/submissions
POST /api/radiance/admin/media/upload
GET  /api/radiance/media/:filename
POST /api/radiance/admin/media/register
GET  /api/radiance/admin/media
DELETE /api/radiance/admin/media/:id
GET/POST/PUT/DELETE /api/radiance/admin/pr-gallery
GET/POST/PUT/DELETE /api/radiance/admin/news-clippings
GET/PUT/POST /api/radiance/admin/blog
GET/PUT/POST /api/radiance/admin/case-studies
GET  /api/radiance/blog/:slug
GET  /api/radiance/news-clippings
GET  /api/radiance/pr-gallery
GET  /api/radiance/case-studies/:slug
```

### TEDx Xinyi
```
(See use-cases/tedx-xinyi/api/routes.js for full list)
GET  /api/tedx-xinyi/metadata-export
POST /api/tedx-xinyi/metadata-import
```

### QR Code
```
POST /api/qr/auth/register
POST /api/qr/auth/login
GET  /api/qr/auth/me
GET  /api/qr/topups
POST /api/qr/generate
POST /api/qr/batch
GET  /api/qr/history
GET  /api/qr/topup/packages
POST /api/qr/topup
POST /api/qr/nfc-order
```

### Super Admin
```
POST /api/super-admin/auth
GET  /api/super-admin/overview
GET  /api/super-admin/users
GET  /api/super-admin/users/:id
GET  /api/super-admin/usage-timeline
POST /api/super-admin/ai-insights
GET  /api/super-admin/payments
```

### SME Growth
```
POST /api/sme/leads/score
POST /api/sme/leads/enrich
POST /api/sme/leads/nurture-sequence
POST /api/sme/leads/process
POST /api/sme/demo/:stage
POST /api/sme/analytics/campaigns
GET  /api/sme/analytics/funnel
POST /api/sme/retargeting
POST /api/sme/cro/optimize
POST /api/sme/campaign-review
```

### Analytics & Stats
```
GET /analytics
GET /analytics/agents
GET /stats                           # Cost & usage stats (useCases: field)
```

### Misc
```
POST /api/linkedin/profile
POST /api/contacts/:contactId/research
POST /api/analyze
POST /webhook/github
GET  /api/llm/models
POST /api/sandbox/tests
GET  /api/sandbox/tests
DELETE /api/sandbox/tests
POST /api/growth/chatbot/message
GET  /api/admin/media-library
POST /api/admin/media-library/generate
GET  /api-docs                       # Swagger UI
```

---

## Frontend Page Map

| Route | File | Key Component |
|-------|------|---------------|
| `/` | `app/page.tsx` | PlatformOverview |
| `/dashboard` | `app/dashboard/page.tsx` | Multi-tab dashboard |
| `/brands` | `app/brands/` | Brand management |
| `/brand-setup` | `app/brand-setup/` | Brand onboarding |
| `/social` | `app/social/` | Social media tools |
| `/intelligence` | `app/intelligence/` | Intelligence module |
| `/agentic-workflows` | `app/agentic-workflows/` | AgenticWorkflows canvas |
| `/growth-architect` | `app/growth-architect/` | GrowthArchitect |
| `/qr-generator` | `app/qr-generator/` | QR code generator |
| `/scheduled-jobs` | `app/scheduled-jobs/` | ScheduledJobs |
| `/healthcheck` | `app/healthcheck/` | ApiHealthCheck |
| `/use-cases/crm` | `app/use-cases/crm/` | CRM module |
| `/use-cases/ziwei` | `app/use-cases/ziwei/` | Ziwei astrology |
| `/use-cases/print-finance` | `app/use-cases/print-finance/` | PrintFinance |
| `/use-cases/sme-growth` | `app/use-cases/sme-growth/` | SME growth |
| `/use-cases/pdf-compressor` | `app/use-cases/pdf-compressor/` | PdfCompression |
| `/use-cases/image-compressor` | `app/use-cases/image-compressor/` | Image compression |
| `/eventflow` | `app/eventflow/` | Event management |
| `/ads-dashboard` | `app/ads-dashboard/` | Ads analytics |
| `/adaptive-learning` | `app/adaptive-learning/` | Learning platform |
| `/photo-booth` | `app/photo-booth/` | Photo booth |
| `/presentation-deck` | `app/presentation-deck/` | Presentation gen |
| `/vibe-demo` | `app/vibe-demo/` | Demo environment |

---

## Key Config Files

| File | Purpose |
|------|---------|
| `index.js` | Express server (~10,467 lines) — all API routes |
| `db.js` | PostgreSQL schema & connection (~3,794 lines) |
| `fly.toml` | Fly.io deployment (region: iad, no volume mounts!) |
| `Dockerfile` | Production container definition |
| `docker-compose.yml` | Local dev with PostgreSQL |
| `.env.example` | All required environment variables |
| `swagger.js` | API documentation config |
| `services/schedule-registry.js` | Cron job definitions |
| `utils/modelHelper.js` | LLM model routing logic |
| `frontend/app/dashboard/page.tsx` | Main dashboard (tabs) |
