Um sistema completo para gestão de alunos, turmas, professores, responsáveis, mensalidades, biblioteca e eventos de uma escola infantil.
O diagrama abaixo ilustra a arquitetura geral do Sistema de Gerenciamento Escolar Infantil, detalhando a interação entre os principais componentes da solução:
Frontend: Desenvolvido em React + Vite, responsável pela interface com o usuário.
Nginx: Atua como proxy reverso, direcionando as requisições do frontend para o backend.
Backend: Implementado em Node.js/Express, responsável pelas regras de negócio e comunicação com o banco de dados.
Banco de Dados: Utiliza PostgreSQL para armazenamento persistente das informações.
Infraestrutura: Orquestrada via Docker e Docker Compose, garantindo portabilidade e facilidade de implantação.
A imagem a seguir representa visualmente essa arquitetura:
Este projeto visa facilitar o controle acadêmico, financeiro e administrativo de escolas infantis, centralizando informações de alunos, professores, turmas, responsáveis, mensalidades, biblioteca, eventos e mais. O sistema é composto por backend (Node.js/Express), frontend (React + TypeScript + Vite), banco de dados PostgreSQL e infraestrutura Docker.
- Backend: Node.js, Express, PostgreSQL, node-pg-migrate
- Frontend: React, TypeScript, Vite, Sass
- Banco de Dados: PostgreSQL
- Infraestrutura: Docker, Docker Compose, Nginx
- Scripts: PowerShell (
start-tudo.ps1
)
Após clonar o projeto, copie os arquivos de exemplo de variáveis de ambiente e renomeie para .env
conforme necessário:
- Para o frontend:
- Copie
frontend/.env.example
parafrontend/.env
- Copie
- Para o backend (opcional, se usar dotenv):
- Copie
APP/.env.example
paraAPP/.env
- Copie
Edite os valores conforme sua necessidade. Esses arquivos não são enviados para o repositório por segurança.
- Docker e Docker Compose (Download Docker Desktop)
- Windows PowerShell (recomendado)
- Node.js (apenas se for rodar o frontend fora do Docker)
Abra o PowerShell na raiz do projeto e execute:
./start-tudo.ps1
Esse script irá:
- Derrubar containers antigos e volumes
- Subir backend, banco de dados e nginx
- Rodar as migrations e seeds automaticamente
- Subir o frontend (Vite) em uma nova janela
Acesse o frontend em: http://localhost:5173 Acesse a API backend em: http://localhost:3000
# (1) Construa as imagens Docker
./docker-compose build
# (2) Suba os containers
./docker-compose up -d --build
# (3) Rode as migrations
./docker-compose exec backend node run-migrations.js
# (4) Rode os seeds
./docker-compose exec backend node run-seeds.js
# (5) Suba o frontend
cd frontend
npm install
npm run dev
- Acesse o frontend em http://localhost:5173 para utilizar o sistema via interface web.
- Acesse a API REST em http://localhost:3000 para integração ou testes com ferramentas como Postman.
- Exemplos de endpoints:
Responsável | Pasta/Arquivo | Descrição/Tarefas principais |
---|---|---|
Ryan e Kaua | APP/ | Backend: APIs, migrations, seeds, config do banco |
Ryan | Dockerfile, Dockerfile.db | Docker backend e banco |
Ryan | docker-compose.yml | Configuração dos serviços Docker |
Ryan | nginx.conf | Configuração do Nginx |
Ryan | start-tudo.ps1 | Script de automação do ambiente |
Kaua | frontend/ | Frontend: Telas, componentes, integração com backend |
Kaua | frontend/package.json | Dependências e scripts do frontend |
Kaua | frontend/.env.example | Variáveis de ambiente do frontend |
Ambos | README.md | Documentação geral do projeto |
Distribuído sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.
- O banco de dados é criado via migrations, não pelo banco.sql diretamente.
- Os dados iniciais são inseridos automaticamente via seeds.
- O frontend consome a API do backend para exibir e cadastrar dados.
-
Instalou as dependências do backend
- Entrou na pasta
APP
e rodou:cd APP npm install npm install node-pg-migrate
- Isso garantiu que todas as bibliotecas do backend, incluindo o
node-pg-migrate
, estivessem instaladas.
- Entrou na pasta
-
Construiu as imagens Docker
- Na raiz do projeto, rodou:
docker-compose build
- Isso preparou os containers do banco, backend e nginx.
- Na raiz do projeto, rodou:
-
Subiu os containers
- Ainda na raiz, rodou:
docker-compose up -d --build
- Isso iniciou o banco de dados, backend e nginx.
- Ainda na raiz, rodou:
-
Rodou as migrations
- Para criar as tabelas no banco, rodou:
docker-compose exec backend sh -c "cd APP && node run-migrations.js"
- Agora o banco tem todas as tabelas necessárias.
- Para criar as tabelas no banco, rodou:
-
Rodou os seeds
- Para inserir dados iniciais no banco, rodou:
docker-compose exec backend sh -c "cd APP && node run-seeds.js"
- Para inserir dados iniciais no banco, rodou:
-
Subiu o frontend
- Foi até a pasta
frontend
, instalou as dependências e rodou o servidor:cd frontend npm install npm run dev
- O site ficou disponível em http://localhost:5173.
- Foi até a pasta
Resumo:
Você garantiu que todas as dependências estavam instaladas, criou as tabelas do banco, inseriu dados iniciais e subiu o frontend. Agora o sistema está rodando completo!
Se precisar rodar do zero, é só seguir o que está no README.md.