Uma aplicação web completa para gestão de academias de artes marciais (Jiu-Jitsu e Muay Thai), desenvolvida para ser uma ferramenta robusta e fácil de usar. O projeto é totalmente containerizado com Docker para garantir um ambiente de desenvolvimento e implantação consistente e portátil.
Este projeto nasceu de uma necessidade real: substituir a planilha manual do meu professor por uma solução digital, centralizada e eficiente. O que começou como um simples CRUD (Cadastro, Leitura, Edição e Deleção) de alunos, evoluiu para um sistema de gestão multifacetado, capaz de controlar aspectos financeiros, de progressão e de frequência dos alunos, tudo isso rodando em uma arquitetura moderna com Docker.
- ✅ CRUD Completo: Cadastro, edição e exclusão com busca e filtros avançados (por nome, faixa, turma e modalidade).
- ✅ Suporte Multi-Modalidade: Gerenciamento de alunos de Jiu-Jitsu e Muay Thai com faixas e turmas específicas.
- ✅ Página de Detalhes: Visão 360º de cada aluno com dados cadastrais, status financeiro, histórico de graduações e frequência.
- ✅ Anamnese: Seção dedicada para registrar informações importantes de saúde.
- ✅ Mensalidades: Sistema para registrar pagamentos com cálculo automático de status ("Em Dia", "Atrasado", "Pendente").
- ✅ Relatório de Mensalidades: Visualização consolidada do status financeiro de todos os alunos.
- ✅ Suporte a Bolsistas: Alunos podem ser marcados como bolsistas com mensalidade zerada.
- ✅ Controle de Aulas: Cadastro de aulas por modalidade (Jiu-Jitsu ou Muay Thai) e turma.
- ✅ Lista de Chamada: Interface intuitiva para marcar presença dos alunos.
- ✅ Filtro Automático: Lista de presença filtra automaticamente alunos pela modalidade da aula.
- ✅ Dashboard Interativo: Estatísticas, gráficos de presença, status de mensalidades e aniversariantes do mês.
- ✅ Sistema de Notificações: Alertas automáticos para mensalidades atrasadas e aniversários.
- ✅ Relatórios de Frequência: Geração de relatórios com exportação para CSV e filtros por período.
- ✅ Interface Moderna: UI profissional com paleta de cores sóbria e componentes consistentes.
- ✅ Ambiente Containerizado: 100% configurado com Docker e Docker Compose.
- ✅ Testes Automatizados: Suite de testes com Minitest e Rack::Test.
- ✅ Segurança: BCrypt para senhas, Prepared Statements contra SQL Injection, proteção XSS.
- ✅ Padrões de Design: MVC, Presenter Pattern, Service Objects, Connection Pool.
| Categoria | Tecnologia |
|---|---|
| Backend | Ruby 3.2.3 com Sinatra |
| Banco de Dados | PostgreSQL 14 |
| Frontend | HTML5, CSS3, JavaScript, ERB |
| Visualização | Chart.js |
| Containerização | Docker & Docker Compose |
| Testes | Minitest, Rack::Test |
| Segurança | BCrypt, Prepared Statements |
Graças ao Docker, iniciar todo o ambiente (aplicação + banco de dados) requer poucos passos.
-
Clone o repositório para sua máquina local:
git clone https://github.com/Augusto240/gerenciador-academia-jiujitsu.git
-
Acesse a pasta do projeto:
cd gerenciador-academia-jiujitsu -
Construa e inicie os contêineres:
docker compose up --build
Este único comando irá baixar as imagens necessárias, construir o ambiente do aplicativo, iniciar o banco de dados com a estrutura correta e conectar tudo.
-
Acesse a aplicação: Abra seu navegador e vá para o endereço: http://localhost:4567
-
Credenciais padrão para login:
Email: admin@jpteam.com Senha: admin123
Para parar todo o ambiente, basta voltar ao terminal e pressionar Ctrl + C.
/
├── app.rb # Aplicação principal Sinatra com rotas
├── config/
│ └── database.rb # Configuração do pool de conexões PostgreSQL
├── app/
│ ├── helpers/
│ │ └── validador.rb # Validações de dados
│ ├── models/ # Modelos de dados (Aluno, Aula, Presenca, etc.)
│ ├── presenters/ # Padrão Presenter para lógica de apresentação
│ └── services/ # Service Objects para operações complexas
├── views/ # Templates ERB
│ ├── alunos/ # Views de alunos
│ ├── aulas/ # Views de aulas e presença
│ ├── auth/ # Tela de login
│ └── relatorios/ # Views de relatórios
├── public/ # Arquivos estáticos (CSS, imagens)
├── test/ # Testes automatizados
├── bin/ # Scripts utilitários
├── initdb/ # Scripts de inicialização do banco
│ ├── 10_schema.sql # Estrutura das tabelas
│ └── 20_data.sql # Dados iniciais
├── Dockerfile # Imagem Docker do aplicativo
├── docker-compose.yml # Orquestração dos containers
└── README.md # Esta documentação
- MVC (Model-View-Controller): Separação clara entre a camada de dados, a lógica de negócio e a interface do usuário.
- Presenter Pattern: Separa a lógica de apresentação dos modelos de dados, tornando as views mais limpas e reutilizáveis.
- Service Objects: Encapsula operações complexas de negócio em classes dedicadas e reutilizáveis.
- Connection Pool: Gerencia eficientemente as conexões com o banco de dados para melhor performance.
# Via Docker
docker compose exec app ruby -Ilib:test -e "Dir['test/**/*_test.rb'].each { |f| require_relative f }"
# Localmente (com Ruby instalado)
ruby -Ilib:test -e "Dir['test/**/*_test.rb'].each { |f| require_relative f }"- Implementar autenticação de dois fatores (2FA)
- Adicionar portal do aluno para acesso próprio às informações
- Desenvolver aplicativo móvel complementar
- Integrar com métodos de pagamento online
- Implementar sistema de eventos e competições
- Adicionar backup automático dos dados
Augusto Oliveira