120 lines
2.8 KiB
Markdown
Executable file
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)
|