# 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.