56 lines
1.4 KiB
Markdown
56 lines
1.4 KiB
Markdown
# baas-control-plane
|
|
|
|
Control plane multi-tenant para orquestrar provedores BaaS (Appwrite, Supabase) com foco em provisioning, schema, secrets, métricas e auditoria.
|
|
|
|
## Visão geral
|
|
- Backend Node.js + TypeScript com Fastify
|
|
- Multi-tenant com isolamento lógico por tenant
|
|
- Providers plugáveis sem lógica de negócio
|
|
- Serviços centrais para provisioning, schema, secrets, finops e audit
|
|
|
|
## Arquitetura
|
|
```
|
|
/src
|
|
/core
|
|
/providers
|
|
/modules
|
|
/lib
|
|
main.ts
|
|
```
|
|
|
|
Detalhes adicionais em [docs/architecture.md](docs/architecture.md).
|
|
|
|
## Fluxo multi-tenant
|
|
1. Criar tenant (`POST /tenants`)
|
|
2. Criar projeto para o tenant (`POST /tenants/:id/projects`)
|
|
3. Provisionar projeto no provider (`POST /projects/:id/provision`)
|
|
4. Sincronizar schema (`POST /projects/:id/schema/sync`)
|
|
5. Coletar métricas (`GET /projects/:id/metrics`)
|
|
|
|
## Como adicionar um novo provider
|
|
1. Criar pasta em `src/providers/<provider>`
|
|
2. Implementar `client`, `provisioning`, `schema`, `metrics`
|
|
3. Registrar no `provider.factory.ts`
|
|
4. Adicionar variáveis em `.env.example` e no `SecretsService`
|
|
|
|
## Como subir localmente
|
|
```bash
|
|
cp .env.example .env
|
|
npm install
|
|
npm run dev
|
|
```
|
|
|
|
### Docker
|
|
```bash
|
|
docker compose up --build
|
|
```
|
|
|
|
## API mínima
|
|
- `POST /tenants`
|
|
- `GET /tenants`
|
|
- `POST /tenants/:id/projects`
|
|
- `GET /tenants/:id/projects`
|
|
- `POST /projects/:id/provision`
|
|
- `POST /projects/:id/schema/sync`
|
|
- `GET /projects/:id/metrics`
|
|
- `GET /health`
|