57 lines
3.0 KiB
Markdown
57 lines
3.0 KiB
Markdown
# Contexto de Memória e Arquitetura - MicrotecFlix
|
|
|
|
Este arquivo registra o contexto de desenvolvimento, arquitetura, esquema de dados e regras de negócio da plataforma **MicrotecFlix**.
|
|
|
|
---
|
|
|
|
## 1. Visão Geral do Sistema
|
|
|
|
O **MicrotecFlix** é uma plataforma EAD / Streaming de cursos de informática e negócios baseada em assinaturas recorrentes com integração ao gateway de pagamentos Asaas.
|
|
|
|
### Funcionalidades do Aluno (`App.tsx`):
|
|
* Catálogo de Cursos (Windows 11, Word, Excel, PowerPoint).
|
|
* Player de Vídeo com aulas em streaming (YouTube ou links diretos MP4).
|
|
* Progresso de aula (porcentagem assistida e status de conclusão).
|
|
* Bloco de anotações por aula.
|
|
* Assinatura e checkout integrado via Pix, Boleto e Cartão de Crédito.
|
|
|
|
### Funcionalidades do Administrador (`AdminApp.tsx`):
|
|
* Dashboard com métricas financeiras (MRR, Receita Total, Taxa de Inadimplência, Alunos Ativos).
|
|
* CRUD de Cursos, Módulos e Aulas.
|
|
* Gestão de Alunos e alteração manual de status de assinatura (`ACTIVE`, `OVERDUE`, `CANCELED`, `TRIAL`).
|
|
* Visualização do histórico de Webhooks do Asaas.
|
|
|
|
---
|
|
|
|
## 2. Esquema de Entidades (`prisma/schema.prisma` / PostgreSQL)
|
|
|
|
1. **`User`**: Usuários da plataforma (`admin` ou `student`) com status de assinatura (`ACTIVE`, `OVERDUE`, `CANCELED`, `TRIAL`).
|
|
2. **`Course`**: Cursos cadastrados com título, descrição, thumbnail, categoria e preço.
|
|
3. **`Module`**: Módulos organizados sequencialmente por curso.
|
|
4. **`Lesson`**: Aulas vinculadas ao módulo com URL de vídeo (`youtube` ou `direct`) e conteúdo complementar.
|
|
5. **`Note`**: Anotações pessoais feitas pelos alunos por aula.
|
|
6. **`Progress`**: Histórico de progresso do aluno por aula (% assistida e `completed`).
|
|
7. **`Payment`**: Histórico de faturas e cobranças registradas no gateway de pagamentos.
|
|
8. **`WebhookLog`**: Registro auditável de webhooks recebidos do Asaas.
|
|
|
|
---
|
|
|
|
## 3. Infraestrutura & Portainer / Swarm
|
|
|
|
* **Rede Traefik Public**: `network_public`
|
|
* **Rede Interna App-DB**: `microtecflix-net` (Overlay)
|
|
* **Containers na Stack**:
|
|
* `postgres-microtecflix` (Porta externa `5435:5432`)
|
|
* `microtecflix` (Porta interna `3000`, exposto via Traefik HTTPS)
|
|
* **Domínios Mapeados**:
|
|
* `estudo.microtecinformaticacurso.com.br` -> Aluno
|
|
* `admin-estudo.microtecinformaticacurso.com.br` -> Admin
|
|
|
|
---
|
|
|
|
## 4. Diretrizes para Futuras Edições
|
|
|
|
1. **Preservação da Autenticação JWT**: O token JWT é armazenado em `localStorage` sob a chave `microtecflix_token`. Qualquer nova rota de API restrita deve utilizar o middleware `authenticateToken`.
|
|
2. **Isolamento de Banco de Dados**: O container `postgres-microtecflix` roda na porta 5435 do host para garantir que não haja conflitos de porta com o banco PostgreSQL de outros projetos (ex: AgendaPRO na porta 5432).
|
|
3. **Deploy**: O arquivo `docker-stack.yml` deve ser atualizado sempre que novas variáveis de ambiente ou volumes forem necessários para a stack do Portainer.
|