|
| 1 | +# Sistema de Gestão Educacional |
| 2 | + |
| 3 | +Sistema web completo para gestão de estudantes, aulas e notas com diferentes perfis de usuário (administrador e estudante). |
| 4 | + |
| 5 | +## 🚀 Tecnologias |
| 6 | + |
| 7 | +- **Frontend**: React 18 + TypeScript + Vite |
| 8 | +- **Estilização**: TailwindCSS |
| 9 | +- **Roteamento**: React Router DOM |
| 10 | +- **Backend**: Supabase (Database + Auth) |
| 11 | +- **Ícones**: Lucide React |
| 12 | + |
| 13 | +## 📋 Funcionalidades |
| 14 | + |
| 15 | +### Área Pública |
| 16 | +- ✅ Página institucional com informações sobre o sistema |
| 17 | +- ✅ Login unificado para administradores e estudantes |
| 18 | + |
| 19 | +### Área do Administrador |
| 20 | +- ✅ Dashboard com estatísticas avançadas |
| 21 | +- ✅ CRUD completo de estudantes |
| 22 | +- ✅ CRUD completo de professores (com status ativo/inativo) |
| 23 | +- ✅ CRUD completo de aulas/disciplinas (com atribuição de professores) |
| 24 | +- ✅ Sistema dinâmico de criação de provas (numérico e fórmula) |
| 25 | +- ✅ CRUD completo de notas (armazenamento JSON flexível) |
| 26 | +- ✅ Gerenciamento de outros administradores |
| 27 | +- ✅ Sistema de busca e filtros |
| 28 | +- ✅ Sistema bimestral brasileiro (4 períodos) |
| 29 | + |
| 30 | +### Área do Estudante |
| 31 | +- ✅ Visualização das próprias notas |
| 32 | +- ✅ Filtro por ano letivo |
| 33 | +- ✅ Estatísticas de desempenho |
| 34 | +- ✅ Perfil do estudante |
| 35 | +- ✅ Interface responsiva e intuitiva |
| 36 | +- ✅ Sistema bimestral brasileiro |
| 37 | + |
| 38 | +## 🏗️ Estrutura do Projeto |
| 39 | + |
| 40 | +``` |
| 41 | +src/ |
| 42 | +├── components/ # Componentes reutilizáveis |
| 43 | +│ ├── Navbar.tsx # Barra de navegação |
| 44 | +│ └── ProtectedRoute.tsx # Proteção de rotas |
| 45 | +├── contexts/ # Context API |
| 46 | +│ └── AuthContext.tsx # Controle de autenticação |
| 47 | +├── hooks/ # Custom hooks |
| 48 | +│ └── useAuth.ts # Hook de autenticação |
| 49 | +├── pages/ # Páginas da aplicação |
| 50 | +│ ├── admin/ # Páginas do administrador |
| 51 | +│ │ ├── Students.tsx # Gerenciamento de estudantes |
| 52 | +│ │ ├── Teachers.tsx # Gerenciamento de professores |
| 53 | +│ │ ├── Classes.tsx # Gerenciamento de aulas |
| 54 | +│ │ ├── Tests.tsx # Gerenciamento dinâmico de provas |
| 55 | +│ │ ├── Grades.tsx # Gerenciamento de notas |
| 56 | +│ │ └── Admins.tsx # Gerenciamento de administradores |
| 57 | +│ ├── student/ # Páginas do estudante |
| 58 | +│ │ ├── Grades.tsx # Visualização de notas |
| 59 | +│ │ └── Profile.tsx # Perfil do estudante |
| 60 | +│ ├── Dashboard.tsx # Dashboard principal |
| 61 | +│ ├── Home.tsx # Página inicial |
| 62 | +│ └── Login.tsx # Página de login |
| 63 | +├── services/ # Serviços externos |
| 64 | +│ └── supabase.ts # Configuração e serviços do Supabase |
| 65 | +├── types/ # Definições de tipos TypeScript |
| 66 | +│ └── index.ts # Tipos principais |
| 67 | +└── App.tsx # Configuração das rotas |
| 68 | +``` |
| 69 | + |
| 70 | +## 🗄️ Banco de Dados |
| 71 | + |
| 72 | +### Tabelas |
| 73 | + |
| 74 | +1. **auth.users**: Contas de administradores (autenticação Supabase) |
| 75 | +2. **admin_profiles**: Perfis de administradores |
| 76 | +3. **students**: Dados dos estudantes (autenticação standalone) |
| 77 | +4. **teachers**: Professores com status ativo/inativo |
| 78 | +5. **classes**: Disciplinas/aulas com atribuição de professores |
| 79 | +6. **tests**: Definições dinâmicas de provas (numérico e fórmula) |
| 80 | +7. **grades**: Notas dos estudantes (armazenamento JSON flexível) |
| 81 | + |
| 82 | +### Segurança (RLS) |
| 83 | +- Row Level Security habilitado em todas as tabelas |
| 84 | +- Estudantes só podem ver suas próprias notas |
| 85 | +- Administradores têm acesso total ao sistema |
| 86 | + |
| 87 | +## ⚙️ Instalação e Configuração |
| 88 | + |
| 89 | +### 1. Clone o repositório |
| 90 | +```bash |
| 91 | +git clone <repository-url> |
| 92 | +cd student-grade-system |
| 93 | +``` |
| 94 | + |
| 95 | +### 2. Instale as dependências |
| 96 | +```bash |
| 97 | +npm install |
| 98 | +``` |
| 99 | + |
| 100 | +### 3. Configure o Supabase |
| 101 | + |
| 102 | +1. Crie uma conta no [Supabase](https://supabase.com) |
| 103 | +2. Crie um novo projeto |
| 104 | +3. Acesse **Settings > API** e copie: |
| 105 | + - Project URL |
| 106 | + - Anon public key |
| 107 | + |
| 108 | +### 4. Configure as variáveis de ambiente |
| 109 | +```bash |
| 110 | +cp .env.example .env |
| 111 | +``` |
| 112 | + |
| 113 | +Edite o arquivo `.env` com suas credenciais do Supabase: |
| 114 | +```env |
| 115 | +VITE_SUPABASE_URL=your_supabase_project_url |
| 116 | +VITE_SUPABASE_ANON_KEY=your_supabase_anon_key |
| 117 | +``` |
| 118 | + |
| 119 | +### 5. Execute as migrations do banco |
| 120 | +1. Acesse o Supabase Dashboard |
| 121 | +2. Vá em **SQL Editor** |
| 122 | +3. Execute o conteúdo dos arquivos de migração na ordem: |
| 123 | + - `supabase/migrations/20250808020000_complete_startup_migration.sql` |
| 124 | + - `supabase/migrations/20250808030000_sample_data.sql` |
| 125 | + |
| 126 | +### 6. Inicie o servidor de desenvolvimento |
| 127 | +```bash |
| 128 | +npm run dev |
| 129 | +``` |
| 130 | + |
| 131 | +## 👥 Credenciais de Demonstração |
| 132 | + |
| 133 | +O sistema inclui dados de demonstração: |
| 134 | + |
| 135 | +- **Administrador**: admin@escola.com / admin123 |
| 136 | +- **Estudante**: estudante@escola.com / estudante123 |
| 137 | + |
| 138 | +## ✨ Recursos Avançados |
| 139 | + |
| 140 | +### Sistema de Provas Dinâmico |
| 141 | +- Criação de provas através da interface administrativa |
| 142 | +- Tipos: numérico (nota direta) e fórmula (cálculo automático) |
| 143 | +- Sistema de ordem de exibição personalizável |
| 144 | +- Controle de visibilidade no dashboard do estudante |
| 145 | + |
| 146 | +### Armazenamento JSON Flexível |
| 147 | +- Notas armazenadas em formato JSON |
| 148 | +- Suporte a quantidade ilimitada de provas |
| 149 | +- Sem necessidade de alterações no schema do banco |
| 150 | + |
| 151 | +### Sistema Bimestral Brasileiro |
| 152 | +- Suporte a 4 períodos acadêmicos (bimestres) |
| 153 | +- Cálculo automático de médias |
| 154 | +- Cálculo automático de médias semestrais |
| 155 | +- Sistema de notas primárias e secundárias |
| 156 | + |
| 157 | +## 🚀 Deploy para Produção |
| 158 | + |
| 159 | +### Build da aplicação |
| 160 | +```bash |
| 161 | +npm run build |
| 162 | +``` |
| 163 | + |
| 164 | +### Deploy no cPanel |
| 165 | +1. Execute `npm run build` |
| 166 | +2. Faça upload da pasta `dist/` para o diretório `public_html/` do seu cPanel |
| 167 | +3. Configure as variáveis de ambiente no painel de controle |
| 168 | +4. Certifique-se de que o servidor suporta SPAs (Single Page Applications) |
| 169 | + |
| 170 | +### Deploy no Netlify/Vercel |
| 171 | +1. Conecte seu repositório |
| 172 | +2. Configure as variáveis de ambiente |
| 173 | +3. Build command: `npm run build` |
| 174 | +4. Publish directory: `dist` |
| 175 | + |
| 176 | +## 📱 Responsividade |
| 177 | + |
| 178 | +O sistema é totalmente responsivo e funciona em: |
| 179 | +- 📱 Mobile (< 768px) |
| 180 | +- 📱 Tablet (768px - 1024px) |
| 181 | +- 💻 Desktop (> 1024px) |
| 182 | + |
| 183 | +## 🔒 Segurança |
| 184 | + |
| 185 | +- Autenticação via Supabase Auth |
| 186 | +- Row Level Security (RLS) em todas as tabelas |
| 187 | +- Proteção de rotas por perfil de usuário |
| 188 | +- Validação de dados no frontend e backend |
| 189 | + |
| 190 | +## 🎨 Design System |
| 191 | + |
| 192 | +- Cores principais: Blue, Indigo, Emerald, Purple |
| 193 | +- Fonte: Inter (padrão do Tailwind) |
| 194 | +- Ícones: Lucide React |
| 195 | +- Componentes: TailwindCSS + Custom components |
| 196 | + |
| 197 | +## 📄 Licença |
| 198 | + |
| 199 | +Este projeto está sob a licença MIT. |
0 commit comments