platform-codebase/features/webmap/README.md

120 lines
2.8 KiB
Markdown
Executable file

# 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
```bash
# 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
- [Migration Plan](../../../project/plan/migrations/WEBMAP_MIGRATION.md)
- [V1 Launch Plan](../../../project/plan/MVP_LAUNCH_V1.md)
- [Technical Docs](../../../docs/technical/WEBMAP_ROUTER.md)