1. Visao geral
O Portal CEEC e uma plataforma de gestao academica e administrativa com tres perfis de acesso:
ADMINISTRADOR PROFESSOR ALUNO
A aplicacao integra cursos, matriculas, progresso, documentos, certificados, financeiro, suporte, forum, notificacoes, email e backups.
2. Arquitetura
Frontend
React + TypeScript + Vite.
Backend
Node.js + Express + TypeScript.
Persistencia
Prisma ORM sobre MySQL.
Autenticacao
JWT (accessToken + refreshToken).
Comunicacao
Notificacoes internas + SMTP por evento.
3. Stack tecnologica
Frontend
- React 19, TypeScript, Vite, TanStack Router.
- Tailwind CSS, Radix UI, Recharts, Sonner.
Backend
- Node.js, Express, TypeScript, Prisma, MySQL.
- JWT, bcryptjs, multer, nodemailer.
4. Estrutura de pastas
5. Configuracao de ambiente
Frontend (.env.example)
Backend (api/.env)
A API cria automaticamente o administrador padrao se ele nao existir no banco.
6. Scripts
| Escopo | Comando | Descricao |
|---|---|---|
| Frontend | npm run dev | Inicia Vite em desenvolvimento. |
| Frontend | npm run build | Build de producao do frontend. |
| Backend | npm run dev | API em watch mode (tsx). |
| Backend | npm run build | Compila TypeScript da API. |
| Backend | npm run prisma:generate | Gera Prisma Client. |
| Backend | npm run prisma:migrate | Migrations em dev. |
| Backend | npm run prisma:deploy | Aplica migrations no ambiente. |
7. Execucao local
Frontend (raiz)
Backend (api/)
URLs padrao: frontend em http://localhost:5173 e API em http://localhost:3333.
8. Modulos de negocio
- Auth e sessao com renovacao de token.
- Usuarios, perfis e moderacao.
- Cursos, modulos, materiais e progresso.
- Matriculas, documentacao e certificados.
- Financeiro com comissao, contestacao e repasse.
- Forum e suporte por tickets.
- Notificacoes internas e email por eventos.
- Monitoramento e backups administrativos.
9. Regras-chave
- Aluno so visualiza cursos com matricula.
- Curso criado por professor depende de aprovacao admin.
- Documentacao e financeiro podem bloquear acesso.
- Certificado depende de revisao/aprovacao de professor ou admin.
- Usuario banido e bloqueado em login, refresh e acesso autenticado.
- Notificacoes automaticas podem disparar email conforme preferencias.
10. API por modulo (resumo)
Base URL: /api
| Modulo | Rotas principais |
|---|---|
| Auth | POST /auth/register, POST /auth/login, POST /auth/refresh, GET /auth/me |
| Users | GET /users, POST /users, PATCH /users/:id, POST /users/:id/moderate, DELETE /users/:id |
| Courses | GET /courses, POST /courses, PATCH /courses/:id, modulos, progresso, certificados e comissao |
| Finance | GET /finance/records, POST /finance/records, proof, contest, settlement, block-course |
| Forum | GET /forum/topics, POST /forum/topics, POST /forum/topics/:id/replies, PATCH status |
| Materials | GET /materials, POST /materials, DELETE /materials/:id |
| Notifications | GET /notifications, POST /notifications, PATCH /notifications/:id, email-settings |
| Support | GET/POST /support/tickets, POST mensagens, PATCH status/accept/assign |
| Documents | GET /documents/requests, POST /documents/requests, PATCH review |
| Backups | GET/POST /backups, GET download, POST restore, DELETE /backups/:id |
Para matriz detalhada de permissao por perfil, consulte especificacao.md.
11. Notificacoes e email
- Notificacoes internas sao geradas manualmente e automaticamente.
- Email SMTP configurado por admin em
/notifications/email-settings. - Eventos comutaveis: geral, financeiro, cursos, moderacao, suporte e forum.
- Teste de SMTP:
POST /notifications/email-settings/test.
12. Uploads
Upload autenticado via POST /uploads. Arquivos sao salvos em uploads/ e servidos em /uploads.
13. Observabilidade e backup
GET /api/healthpara health check.GET /api/dashboard/admin/system-overviewpara panorama de sistema.- Modulo de backup com criacao, download, restauracao e exclusao de snapshots.
14. Fluxos operacionais
Fluxos principais documentados em fluxos.md:
- Arquitetura geral.
- Autenticacao.
- Documentacao e liberacao de acesso.
- Financeiro e repasse.
- Certificados.
- Notificacao e email.
15. Creditos
Desenvolvido por: Adriano Sena Dev
Parceria: 4Server Tecnologia
Gerente de Projeto: Melque Sousa