4.8 KiB
4.8 KiB
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.
- Perfil Dinâmico: Edição de dados pessoais (Nome, Data de Nascimento, WhatsApp).
- Upload de Avatar: Integração com armazenamento S3 (MinIO) para hospedar fotos de perfil.
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)
Todo o sistema foi 100% migrado para o PostgreSQL utilizando o Prisma ORM. O antigo arquivo db.json e a função genérica loadDb() foram completamente descartados e removidos da base de código backend (server-prisma.ts).
User: Usuários da plataforma (adminoustudent) com status de assinatura (ACTIVE,OVERDUE,CANCELED,TRIAL).Course: Cursos cadastrados com título, descrição, thumbnail, categoria e preço avulso/bloqueio.Module: Módulos organizados sequencialmente por curso.Lesson: Aulas vinculadas ao módulo com URL de vídeo (youtubeoudirect) e conteúdo complementar.Note: Anotações pessoais feitas pelos alunos por aula.Progress: Histórico de progresso do aluno por aula (% assistida ecompleted).Payment(SubscriptionPayment): Histórico de faturas e cobranças registradas no gateway de pagamentos, linkado a usuários, cursos e planos.WebhookLog: Registro auditável de webhooks recebidos do Asaas.ModuleActivity/ModuleGrade: Questionários/Múltipla escolha e pontuações dos alunos, substituindo a antiga matriz JSON de atividades.Certificate: Certificados ganhos pelos alunos (por Módulo ou por Curso) gerados automaticamente.Plan: Planos de assinatura (Combos vitálcios, Assinaturas Mensais, Anuais).Notification: Alertas e avisos aos usuários, gerenciados em tabela relacional em tempo real.SystemSettings: Configurações dinâmicas do sistema, chaves do Asaas e texto de ajuda.
3. Infraestrutura & Portainer / Swarm
- Rede Traefik Public:
network_public - Rede Interna App-DB:
microtecflix-net(Overlay) - Containers na Stack:
postgres-microtecflix(Porta externa5435:5432)minio-microtecflix(Porta 9000 para API S3 e 9001 para Web Console)microtecflix(Porta interna3000, exposto via Traefik HTTPS)
- Domínios Mapeados:
estudo.microtecinformaticacurso.com.br-> Alunoadmin-estudo.microtecinformaticacurso.com.br-> Admins3-estudo.microtecinformaticacurso.com.br-> Bucket S3 (API Público/Uploads)minio-estudo.microtecinformaticacurso.com.br-> Console de Gerenciamento MinIO
4. Diretrizes para Futuras Edições
- Preservação da Autenticação JWT: O token JWT é armazenado em
localStoragesob a chavedevflix_token. Qualquer nova rota de API restrita deve utilizar o middlewareauthenticateToken. - Segurança do Webhook (Asaas): A rota
/api/webhooks/asaasexige validação do headerasaas-access-tokencontra a chaveasaasWebhookSecretsalva nas Configurações Globais. Caso as chaves divirjam, a requisição sofre rejeição com HTTP 401 Unauthorized e um payload detalhando qual token foi recebido e qual era o esperado. - Liberação de Cursos/Assinaturas: Webhooks com status de confirmação (
PAYMENT_CONFIRMED,PAYMENT_RECEIVED) atualizam automaticamente o status da assinatura ou liberam o curso no arrayunlockedCoursesse a validação de segurança passar. - Isolamento de Banco de Dados: O container
postgres-microtecflixroda 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). - Deploy: O arquivo
docker-stack.ymldeve ser atualizado sempre que novas variáveis de ambiente ou volumes forem necessários para a stack do Portainer.