Sistema completo de gerenciamento escolar com autenticação, autorização baseada em roles e suporte dual para MongoDB e SQLite.
- Banco de Dados Dual: MongoDB e SQLite sincronizados
- Autenticação: JWT (JSON Web Tokens)
- Autorização: Baseada em roles (Admin, Secretaria, Professor, Estudante)
- API RESTful: Endpoints protegidos com middleware
- Navegação: React Navigation
- Estado Global: Context API
- Armazenamento Local: AsyncStorage
- Seleção de Banco: Interface para escolher MongoDB ou SQLite
- ✅ CRUD completo de todos os dados
- ✅ Gerenciar usuários
- ✅ Trocar banco de dados em runtime
- ✅ CRUD de estudantes
- ✅ CRUD de notas
- ✅ Visualizar relatórios
- ✅ Visualizar estudantes
- ✅ Lançar e editar notas
- ✅ Visualizar frequência
- ✅ Visualizar próprias notas
- ✅ Visualizar própria frequência
- ⛔ Sem permissão de edição
- id, email, password, role, name, createdAt
- id, name, enrollment (matrícula), course, createdAt
- id, studentId, subject, grade (0-10), attendance (0-100%), createdAt
- Instalar dependências
cd backend
npm install-
Configurar .env Já está configurado com MongoDB URL e JWT_SECRET
-
Popular o banco (seed)
npm run seed- Iniciar servidor
npm run dev- Instalar dependências
cd mobile
npm install- Configurar API Base URL em app.json
{
"expo": {
"extra": {
"apiBaseUrl": "http://SEU_IP:3000"
}
}
}- Iniciar app
npm start| Role | Senha | |
|---|---|---|
| Admin | admin@escola.com | admin123 |
| Secretaria | secretaria@escola.com | secretaria123 |
| Professor | professor@escola.com | professor123 |
| Estudante | estudante@escola.com | estudante123 |
- Seleção de Banco: Escolher MongoDB ou SQLite
- Login: Autenticação com email e senha
- Lista de Estudantes: Visualizar com permissões baseadas em role
- Detalhes: Ver notas e frequência
- Formulário: Adicionar/Editar (apenas Admin e Secretaria)
- POST
/auth/register- Registrar - POST
/auth/login- Login - POST
/auth/switch-db- Trocar banco (Admin only)
- GET
/students- Listar (Auth required) - POST
/students- Criar (Admin, Secretaria) - PUT
/students/:id- Atualizar (Admin, Secretaria) - DELETE
/students/:id- Deletar (Admin only)
- GET
/grades/student/:studentId- Por estudante - POST
/grades- Criar (Admin, Secretaria, Professor) - PUT
/grades/:id- Atualizar (Admin, Secretaria, Professor) - DELETE
/grades/:id- Deletar (Admin only)
Backend: Node.js, Express, TypeScript, MongoDB, SQLite, JWT, bcrypt
Mobile: React Native, Expo, TypeScript, React Navigation, AsyncStorage, Axios