Sistema Modular para Acompanhar, Gerenciar e Demonstrar Métricas do Desenvolvimento da Educação no Município de Curionópolis/PA.
O EDUCA+ Curionópolis é uma plataforma completa de gestão educacional que contempla 3 módulos principais:
- Módulo de Avaliação: Gestão de avaliações bimestrais com classificação de desempenho dos alunos
- Módulo de Diagnóstico: Acompanhamento diagnóstico para turmas do 1º ao 5º ano
- Módulo SAEB: Gerenciamento de simulados e resultados SAEB
- Framework: FastAPI (Python)
- Banco de Dados: PostgreSQL
- ORM: SQLAlchemy
- Autenticação: JWT (JSON Web Tokens)
- Documentação API: OpenAPI/Swagger (automática)
- Framework: React 18 com TypeScript
- UI Library: Material-UI (MUI)
- Gráficos: Recharts
- State Management: Context API
- Build Tool: Vite
- Cadastrar e gerenciar escolas e diretores
- Visualizar relatórios completos de todas as escolas
- Importar dados via CSV
- Resetar senhas de diretores (individual ou em lote)
- Enviar mensagens para diretores
- Gerenciar professores, turmas, alunos e disciplinas de sua escola
- Vincular professores às disciplinas
- Visualizar relatórios da sua escola
- Resetar senhas de professores (individual ou em lote)
- Enviar mensagens para professores
- Realizar avaliações bimestrais dos alunos
- Aplicar diagnósticos (1º ao 5º ano)
- Registrar resultados de simulados SAEB
- Visualizar suas turmas e disciplinas
- Visualizar relatórios públicos agregados (sem identificação de escolas, alunos ou professores)
/
├── backend/
│ ├── app/
│ │ ├── __init__.py
│ │ ├── main.py # FastAPI application
│ │ ├── database.py # Database configuration
│ │ ├── models.py # SQLAlchemy models
│ │ ├── schemas.py # Pydantic schemas
│ │ ├── auth.py # Authentication/authorization
│ │ ├── dependencies.py # Common dependencies
│ │ └── routers/ # API routes
│ │ ├── auth.py
│ │ ├── usuarios.py
│ │ ├── escolas.py
│ │ ├── professores.py
│ │ ├── turmas.py
│ │ ├── disciplinas.py
│ │ ├── alunos.py
│ │ ├── avaliacoes.py
│ │ ├── diagnosticos.py
│ │ ├── saeb.py
│ │ ├── mensagens.py
│ │ └── relatorios.py
│ ├── requirements.txt
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── components/
│ │ │ └── DrillDownChart.tsx # Drill-down chart component
│ │ ├── contexts/
│ │ │ └── AuthContext.tsx # Authentication context
│ │ ├── pages/
│ │ │ ├── Login.tsx
│ │ │ ├── Dashboard.tsx
│ │ │ └── RelatoriosPage.tsx
│ │ ├── services/
│ │ │ └── api.ts # API client
│ │ ├── types/
│ │ │ └── index.ts # TypeScript types
│ │ ├── App.tsx
│ │ └── main.tsx
│ ├── package.json
│ ├── tsconfig.json
│ └── vite.config.ts
└── README.md
- Python 3.10+
- Node.js 18+
- PostgreSQL 14+
- npm ou yarn
git clone <repository-url>
cd EducaCurionopolis# Navegue para o diretório backend
cd backend
# Crie um ambiente virtual
python -m venv venv
# Ative o ambiente virtual
# Windows:
venv\Scripts\activate
# Linux/Mac:
source venv/bin/activate
# Instale as dependências
pip install -r requirements.txt
# Configure as variáveis de ambiente
cp .env.example .env
# Edite o arquivo .env com suas configurações
# Crie o banco de dados PostgreSQL
# Execute no PostgreSQL:
# CREATE DATABASE educacurionopolis;
# Execute o servidor
uvicorn app.main:app --reload --host 0.0.0.0 --port 8000O backend estará disponível em: http://localhost:8000
Documentação da API: http://localhost:8000/docs
# Navegue para o diretório frontend
cd frontend
# Instale as dependências
npm install
# Execute o servidor de desenvolvimento
npm run devO frontend estará disponível em: http://localhost:3000
- Cadastro de avaliações para cada disciplina e bimestre
- Classificação do desempenho: Abaixo da Média, Na Média, Acima da Média
- Avaliação em lote para otimizar o trabalho dos professores
- Histórico completo de avaliações
- 5 diagnósticos obrigatórios por ano:
- 1 diagnóstico inicial (início do 1º bimestre)
- 4 diagnósticos finais (final de cada bimestre)
- Definição de gênero textual e objetivos de avaliação
- Substituição de diagnósticos com aplicação obrigatória
- Classificação de evolução: Não, Sim, Em Partes
- Criação de provas simuladas
- Registro de notas de Português e Matemática
- Controle de presença/ausência
- Estatísticas de desempenho
- Gráficos Interativos: Clique para explorar dados em mais detalhes
- Múltiplos Níveis:
- Visão geral do município
- Detalhamento por escola
- Detalhamento por turma
- Visualizações: Gráficos de barras e pizza
- Exportação: Dados podem ser exportados
- Comunicação interna entre:
- Gestão Municipal → Diretores
- Diretores → Professores
- Envio individual ou em broadcast
- Marcação de mensagens lidas
- JWT Authentication: Tokens seguros com expiração configurável
- Role-Based Access Control (RBAC): Controle de acesso baseado em perfis
- Password Hashing: Senhas criptografadas com bcrypt
- CORS Configuration: Proteção contra requisições não autorizadas
- SQL Injection Protection: Uso de ORM previne SQL injection
POST /api/v1/auth/login- LoginPOST /api/v1/auth/login-json- Login (JSON)GET /api/v1/auth/me- Dados do usuário atual
GET /api/v1/escolas- Listar escolasPOST /api/v1/escolas- Criar escolaPUT /api/v1/escolas/{id}- Atualizar escolaPOST /api/v1/escolas/import-csv- Importar escolas via CSV
POST /api/v1/avaliacoes- Criar avaliaçãoPOST /api/v1/avaliacoes/bulk- Criar avaliações em loteGET /api/v1/avaliacoes- Listar avaliações
GET /api/v1/relatorios/avaliacoes/geral- Relatório geral de avaliaçõesGET /api/v1/relatorios/avaliacoes/drill-down/escolas- Drill-down por escolasGET /api/v1/relatorios/avaliacoes/drill-down/turmas/{escola_id}- Drill-down por turmas
Veja a documentação completa da API em: http://localhost:8000/docs
- Diretor faz login no sistema
- Acessa menu "Professores"
- Clica em "Novo Professor"
- Preenche dados do professor (nome, CPF, email, formação)
- Sistema cria usuário com perfil "Professor"
- Professor recebe credenciais de acesso
- Professor faz login
- Seleciona disciplina e turma
- Seleciona bimestre
- Para cada aluno, marca: Abaixo/Na/Acima da Média
- Adiciona observações (opcional)
- Salva avaliações
- Gestão Municipal faz login
- Acessa "Relatórios"
- Seleciona ano letivo e bimestre
- Visualiza gráfico geral de desempenho
- Clica em uma barra do gráfico para ver detalhes por escola
- Clica novamente para ver detalhes por turma
cd backend
pytestcd frontend
npm run testDATABASE_URL=postgresql://user:password@localhost:5432/educacurionopolis
SECRET_KEY=your-secret-key-here
ACCESS_TOKEN_EXPIRE_MINUTES=480
FRONTEND_URL=http://localhost:3000VITE_API_URL=http://localhost:8000- Fork o projeto
- Crie uma branch para sua feature (
git checkout -b feature/MinhaFeature) - Commit suas mudanças (
git commit -m 'Adiciona MinhaFeature') - Push para a branch (
git push origin feature/MinhaFeature) - Abra um Pull Request
Este projeto é propriedade da Prefeitura Municipal de Curionópolis/PA.
Para suporte técnico ou dúvidas, entre em contato com:
- Email: educacao@curionopolis.pa.gov.br
- Telefone: (XX) XXXX-XXXX
- ✅ Autenticação e controle de acesso
- ✅ CRUD de escolas, professores, turmas e alunos
- ✅ Módulo de Avaliação
- ✅ Módulo de Diagnóstico
- ✅ Módulo SAEB
- ✅ Relatórios com drill-down
- ⬜ Dashboard com indicadores em tempo real
- ⬜ Notificações push
- ⬜ Exportação de relatórios em PDF
- ⬜ Aplicativo móvel
- ⬜ Integração com outros sistemas educacionais
- ⬜ Machine Learning para previsão de desempenho
- Usuario: Armazena todos os usuários do sistema
- Escola: Dados das escolas municipais
- Professor: Professores vinculados às escolas
- Turma: Turmas/classes das escolas
- Disciplina: Disciplinas lecionadas
- Aluno: Alunos matriculados
- AvaliacaoBimestral: Avaliações bimestrais
- Diagnostico: Templates de diagnósticos
- DiagnosticoResultado: Resultados dos diagnósticos
- ProvaSimuladoSAEB: Provas SAEB
- ResultadoSAEB: Resultados das provas SAEB
- Mensagem: Mensagens internas
- Escola 1:N Professor
- Escola 1:N Turma
- Turma 1:N Aluno
- Turma 1:N Disciplina
- Professor N:M Disciplina (um professor pode lecionar várias disciplinas)
- Aluno 1:N AvaliacaoBimestral
- Aluno 1:N DiagnosticoResultado
Desenvolvido para a Prefeitura Municipal de Curionópolis/PA