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
- nginx receives request for
trustedmeet.com/some/path
- nginx proxies to webmap-router (port 4002)
- webmap-router queries database for domain + path
- webmap-router finds app=marketplace, basePath=/
- webmap-router reads
/var/www/apps/marketplace/index.html
- webmap-router injects
__WEBMAP_DEPLOYMENT__ config
- webmap-router returns modified HTML
- 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/
Related Documentation