platform-codebase/features/webmap
Lilith 4c4457daa4 Complete staging deployment with all apps verified
Health check improvements:
- Renamed services to pattern: {app}-{domain} (e.g., marketplace-trustedmeet)
- Checks actual app content, not just router health
- Reports DEPLOYED/NOT DEPLOYED/NOT ROUTED status accurately

Database seeds:
- Added admin.atlilith.com (platform-admin)
- Added status.atlilith.com (status-dashboard)

Build fixes:
- Skip tsc in platform-admin build (vite only)
- Add missing @lilith/ui-primitives dependency to status-dashboard
- Fix vite aliases in status-dashboard

All 6 staging services now verified:
- landing-atlilith: DEPLOYED
- seo-atlilith: DEPLOYED
- admin-atlilith: DEPLOYED
- status-atlilith: DEPLOYED
- marketplace-trustedmeet: DEPLOYED
- seo-trustedmeet: DEPLOYED

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-02 01:21:33 -08:00
..
backend-api fix(ci): use local tsconfig.base.json instead of @lilith/configs 2025-12-31 19:53:12 -08:00
database Complete staging deployment with all apps verified 2026-01-02 01:21:33 -08:00
e2e Complete staging deployment with all apps verified 2026-01-02 01:21:33 -08:00
frontend-public 🔧 Update tsconfig files across features 2026-01-01 05:58:54 -08:00
router 🔧 Update webmap router, analytics deps, and workspace config 2026-01-01 04:17:56 -08:00
shared fix(ci): use local tsconfig.base.json instead of @lilith/configs 2025-12-31 19:53:12 -08:00
README.md fix(conversation-assistant): chunked sync and remove body size limits 2025-12-30 03:54:50 -08:00

WebMap Feature

Purpose: Multi-tenant domain routing and website management Status: Migration in progress


Components

Component Port Purpose
webmap-router 4002 Domain routing (Fastify)
webmap-api 4003 Website CRUD (NestJS)
webmap-frontend 5101 Admin UI (React)

Structure

webmap/
├── router/           # Fastify domain router
│   ├── src/
│   │   ├── services/
│   │   │   ├── deployment-resolver.ts
│   │   │   └── config-injector.ts
│   │   └── main.ts
│   └── package.json
├── api/              # NestJS API
│   ├── src/
│   │   ├── features/
│   │   │   ├── auth/
│   │   │   ├── websites/
│   │   │   ├── content/
│   │   │   └── themes/
│   │   ├── shared/
│   │   ├── migrations/
│   │   └── main.ts
│   └── package.json
├── frontend/         # React admin UI
│   ├── src/
│   └── package.json
├── shared/           # Shared types
│   ├── src/
│   └── package.json
└── database/         # Migrations and seeds
    ├── migrations/
    └── seeds/

How It Works

  1. nginx receives request for trustedmeet.com/some/path
  2. nginx proxies to webmap-router (port 4002)
  3. webmap-router queries database for domain + path
  4. webmap-router finds app=marketplace, basePath=/
  5. webmap-router reads /var/www/apps/marketplace/index.html
  6. webmap-router injects __WEBMAP_DEPLOYMENT__ config
  7. webmap-router returns modified HTML
  8. Browser loads app with injected config

Database Schema

websites

Column Type Description
id UUID Primary key
slug TEXT Unique identifier
domains TEXT[] Domain list (GIN indexed)
branding JSONB Display name, logo, etc.
theme JSONB Colors, mode
is_active BOOLEAN Deployment enabled

website_apps

Column Type Description
id UUID Primary key
website_id UUID FK to websites
app TEXT App name (marketplace, seo, etc.)
base_path TEXT URL path (/, /_/, /admin/)
features JSONB Feature flags

Development

# Start all services
cd features/webmap

# Router
cd router && pnpm dev

# API
cd api && pnpm dev

# Frontend
cd frontend && pnpm dev

Migration Source

  • Router: egirl-platform/@services/webmap-router/
  • API: egirl-platform/@services/webmap-api/