Skip to content

roninchris/DojoScheduler

Repository files navigation

⛩️ Dojo Scheduler ⛩️

Status do Projeto Testes TypeScript JavaScript Prisma SQLite Licença

Uma aplicação web full-stack moderna para o gerenciamento completo de dojos de artes marciais, desenvolvida como solução para o Projeto Integrador Transdisciplinar em Engenharia de Software II.

image

Dashboard - Dojo Scheduler


🎯 Sobre o Projeto

O Dojo Scheduler foi criado para resolver a necessidade de uma ferramenta centralizada e intuitiva para administrar alunos, aulas e matrículas. A plataforma oferece uma experiência de usuário fluida, com um design responsivo e funcionalidades robustas que garantem a integridade dos dados e facilitam a rotina administrativa de um dojo.

O projeto foi construído seguindo as melhores práticas de desenvolvimento, com uma arquitetura baseada em componentes, um backend robusto e um banco de dados relacional gerenciado por um ORM moderno.

Toda a documentação técnica do projeto, incluindo diagramas UML e o dicionário de dados, pode ser encontrada na pasta /documentation.


✨ Funcionalidades Principais

  • 📊 Dashboard Inteligente: Visão geral com estatísticas de alunos e aulas, além de um feed de atividades recentes que é atualizado em tempo real.
  • 👤 Gerenciamento de Alunos (CRUD):
    • Cadastro de novos alunos com validação de dados (email, telefone).
    • Visualização em tabela responsiva.
    • Exclusão segura de membros.
  • 🥋 Gerenciamento de Aulas (CRUD):
    • Criação de novas aulas com dia da semana, horários e capacidade máxima.
    • Visualização e exclusão de aulas existentes.
  • 🎟️ Sistema de Matrículas:
    • Interface simples para matricular alunos em aulas.
    • Validação automática de vagas disponíveis.
    • Prevenção inteligente contra matrículas duplicadas.
  • 🗓️ Agenda Semanal: Uma visualização clara de todas as aulas da semana, organizadas por dia, com indicadores de ocupação.
  • 🌙 Tema Escuro e Claro: Suporte nativo a temas, com persistência da preferência do usuário.

🛠️ Tecnologias Utilizadas

Categoria Tecnologia
Frontend React, Next.js 14 (App Router), TypeScript, Tailwind CSS
Backend Next.js API Routes, TypeScript
Banco de Dados Prisma ORM, SQLite (Facilmente portável para PostgreSQL/MySQL)
UI/UX Shadcn/UI, Lucide React (Ícones), Sonner (Notificações), Zod (Validação)
Testes Jest, React Testing Library

🚀 Começando

Siga os passos abaixo para executar o projeto em seu ambiente local.

Pré-requisitos

  • Node.js (versão 18.x ou superior)
  • npm ou yarn

Instalação

  1. Clone o repositório:

    git clone https://github.com/seu-usuario/dojo-scheduler.git
    cd DojoScheduler
  2. Instale as dependências:

    npm install
  3. Configure as Variáveis de Ambiente:

Windows

copy .env.example .env

Linux/Mac

cp .env.example .env

  1. Configure o Banco de Dados: O Prisma precisa criar e popular o banco de dados SQLite.

    npx prisma migrate dev

    Este comando irá:

    • Criar o arquivo do banco de dados em prisma/dev.db.
    • Aplicar o schema definido em prisma/schema.prisma.
  2. Inicie o servidor de desenvolvimento:

    npm run dev
  3. Abra http://localhost:3000 em seu navegador para ver a aplicação.


🧪 Rodando os Testes

Para garantir a qualidade e a robustez do código, foram implementados testes unitários e de integração. Para executá-los, use o comando:

npm test

📂 Estrutura de Pastas

A estrutura do projeto foi organizada para manter a escalabilidade e a clareza:

dojo-scheduler/
├── prisma/               # Schema e migrações do banco de dados
├── public/               # Arquivos estáticos
├── src/
│   ├── app/
│   │   ├── api/          # Rotas da API (backend)
│   │   │   ├── activities/
│   │   │   ├── bookings/
│   │   │   ├── classes/
│   │   │   └── members/
│   │   ├── (pages)/      # Rotas de páginas da aplicação (frontend)
│   │   │   ├── agenda/
│   │   │   ├── bookings/
│   │   │   ├── classes/
│   │   │   └── members/
│   │   └── layout.tsx    # Layout principal
│   │   └── page.tsx      # Página do Dashboard
│   ├── components/       # Componentes React reutilizáveis
│   │   ├── layout/
│   │   └── ui/           # Componentes base (shadcn)
│   ├── context/          # Contexto global da aplicação (AppProvider)
│   └── lib/              # Funções utilitárias e tipos
└── README.md

🖼️ Screenshots

image


image


image


Modo Escuro

image


image


Mobile

Mobile view 1


Mobile view 2


Mobile view 3


🛠️ Padrões e Práticas

  • Arquitetura: Padrão MVC adaptado para Next.js
  • Testes: TDD (Test-Driven Development)
  • Versionamento: Git com commits semânticos
  • Validação: Zod schemas para validação de dados
  • Tipagem: TypeScript para type safety
  • Estilização: Tailwind CSS com design system consistente
  • Acessibilidade: Componentes Radix UI acessíveis por padrão

👨‍💻 Autor

  • Christiansen Taques
  • Projeto Integrador Transdisciplinar em Engenharia de Software II - UNIFRAN

🙏 Agradecimentos

  • À minha noiva ❤️ - Por não ter ficado brava comigo quando eu virei várias madrugadas fazendo esse projeto. Te amo!
  • Amigos - Pelas trocas de ideia e feedbacks que ajudaram a melhorar o projeto

📜 Licença

Distribuído sob a licença MIT.

About

Gerencie usuários, crie aulas e faça reservas para o seu Dojo.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors