microtecflix/gemini.md

5.9 KiB

MicrotecFlix - Registro de Modificações e Guia de Deploy

Este arquivo documenta a estrutura completa, configurações de domínio, banco de dados PostgreSQL e procedimento de deploy do projeto MicrotecFlix (Plataforma de Cursos e Assinaturas estilo Netflix).


1. Mapeamento de Domínios Oficiais

  • Painel do Aluno: estudo.microtecinformaticacurso.com.br
  • Painel do Administrador: admin-estudo.microtecinformaticacurso.com.br

O sistema realiza o roteamento automático do frontend via src/Root.tsx:

  • Quando a URL acessada contém a palavra admin (admin-estudo.microtecinformaticacurso.com.br), o sistema renderiza o AdminApp.tsx.
  • Para as demais URLs (estudo.microtecinformaticacurso.com.br), o sistema renderiza o App.tsx (Painel do Aluno).

2. Arquitetura do Banco de Dados PostgreSQL (Dedicado)

Para evitar conflitos com outros bancos de dados ativos na VPS (como o PostgreSQL do AgendaPRO na porta 5432), o MicrotecFlix utiliza uma instância isolada e dedicada de PostgreSQL:

  • Container: postgres-microtecflix
  • Imagem: postgres:16-alpine
  • Porta Host: 5435:5432 (evita colisão com a porta 5432 original)
  • Database: microtecflix
  • Usuário: microtecflix_user
  • Senha: MicrotecFlixSecurePass2026!
  • Volume: pgdata-microtecflix

3. Usuários de Teste Mantidos (Seed Data)

Os dados de acesso para ambiente de testes foram preservados:

Papel E-mail Senha Descrição
Admin sidney.gomes1989@gmail.com admin123 Acesso total ao painel administrativo
Aluno aluno@microtecflix.com aluno123 Aluno ativo em ambiente de testes
Aluno joao@microtecflix.com aluno123 Aluno com curso de Excel liberado
Aluno maria@microtecflix.com aluno123 Aluna ativa
Aluno pedro@microtecflix.com aluno123 Aluno com mensalidade em atraso (Overdue)
Aluno ana@microtecflix.com aluno123 Aluna com assinatura cancelada

4. Estrutura de Docker & Deployment no Portainer

O arquivo docker-stack.yml está pré-configurado para implantação no Docker Swarm com Portainer e Traefik:

version: '3.8'

services:
  postgres-microtecflix:
    image: postgres:16-alpine
    restart: always
    environment:
      POSTGRES_DB: microtecflix
      POSTGRES_USER: microtecflix_user
      POSTGRES_PASSWORD: MicrotecFlixSecurePass2026!
    ports:
      - "5435:5432"
    volumes:
      - pgdata-microtecflix:/var/lib/postgresql/data
    networks:
      - microtecflix-net

  microtecflix:
    image: microtecflix-app:local
    restart: always
    depends_on:
      - postgres-microtecflix
    environment:
      - NODE_ENV=production
      - PORT=3000
      - DATABASE_URL=postgresql://microtecflix_user:MicrotecFlixSecurePass2026!@postgres-microtecflix:5432/microtecflix
      - JWT_SECRET=microtecflix_jwt_secret_key_2026_super_secure
      - ASAAS_ENVIRONMENT=sandbox
    networks:
      - microtecflix-net
      - network_public
    deploy:
      replicas: 1
      labels:
        - "traefik.enable=true"
        - "traefik.http.routers.microtecflix-student.rule=Host(`estudo.microtecinformaticacurso.com.br`)"
        - "traefik.http.routers.microtecflix-student.entrypoints=websecure"
        - "traefik.http.routers.microtecflix-student.tls.certresolver=leresolver"
        - "traefik.http.services.microtecflix-student.loadbalancer.server.port=3000"
        - "traefik.http.routers.microtecflix-admin.rule=Host(`admin-estudo.microtecinformaticacurso.com.br`)"
        - "traefik.http.routers.microtecflix-admin.entrypoints=websecure"
        - "traefik.http.routers.microtecflix-admin.tls.certresolver=leresolver"
        - "traefik.http.services.microtecflix-admin.loadbalancer.server.port=3000"
        - "traefik.docker.network=network_public"

5. Instruções para envio ao Gitea

Repositório no Gitea: https://gitea.microtecinformaticacurso.com.br/sidney/microtecflix.git

Passos executados:

  1. git init
  2. git checkout -b main
  3. git remote add origin https://gitea.microtecinformaticacurso.com.br/sidney/microtecflix.git
  4. git add .
  5. git commit -m "Configuracao completa MicrotecFlix para deploy no Docker Swarm via Portainer"
  6. git push -u origin main

6. Arquitetura & Segurança de Dados (PCI-DSS & LGPD)

Camada de Segurança Tecnologia / Mecanismo Nível de Proteção Descrição Técnica
Tokenização de Cartões (PCI-DSS) API /creditCard/tokenize (Asaas) Máximo Número completo do cartão, código CVV e validade NUNCA são gravados no banco de dados. Salva-se apenas o creditCardToken e os últimos 4 dígitos (•••• 4321).
Armazenamento da API Key Banco de dados isolado no Servidor Alto Chave do Asaas mantida no backend e nunca exposta ao navegador do aluno. Acesso restrito a rotas protegidas por JWT Admin.
Criptografia em Trânsito HTTPS / TLS 1.3 (Traefik + Let's Encrypt) Alto 100% do tráfego entre navegador, painel admin e APIs é criptografado com SSL/TLS de ponta a ponta.
Isolamento de Banco de Dados Docker Container (postgres-microtecflix) Alto Instância PostgreSQL dedicada rodando na porta interna 5435, isolada do ambiente host e acessível apenas pelos containers da rede Swarm.
Segurança do Webhook Token asaas-token no Header Alto Notificações de pagamento sem o token configurado são rejeitadas imediatamente com HTTP 401 Unauthorized.
Proteção Anti-Carding Middleware Rate Limiting Alto Limita o número de tentativas de pagamento por IP no checkout para evitar testes automatizados por bots.
Proteção Anti-Crash (DOM) React ErrorBoundary + Encapsulamento <span> Alto Previne travamentos de tela branca causados por extensões do navegador ou tradução automática do Google Chrome.