API como parte do projeto prático TreinaCare, uma aplicação para agendamento médico.
O TreinaCare é uma plataforma de agendamento médico que permite aos usuários:
- 🔐 Autenticação segura com JWT
- 👨⚕️ Listar médicos disponíveis
- 📅 Agendar consultas médicas
- 📊 Visualizar histórico de agendamentos
- 👤 Gerenciar perfil do usuário
- Next.js 15 - Framework React para API Routes
- TypeScript - Tipagem estática
- Prisma - ORM para banco de dados
- SQLite - Banco de dados (desenvolvimento)
- JWT (jose) - Autenticação e autorização
- Node.js (versão 18 ou superior)
- npm ou yarn
- Git
git clone <url-do-repositorio>
cd api-treinacare
npm install
Crie um arquivo .env
na raiz do projeto:
DATABASE_URL="file:./dev.db"
JWT_SECRET="seu-jwt-secret-super-seguro-aqui"
Execute as migrações do Prisma:
npx prisma migrate dev
Execute o seed para criar dados de exemplo:
npx tsx seed.tsx
npm run dev
A API estará disponível em: http://localhost:3000
POST /api/auth/login
- Login do usuárioPOST /api/auth/refresh
- Renovar token JWT
GET /api/user
- Obter dados do usuário autenticado
GET /api/doctors
- Listar todos os médicosGET /api/doctors/[id]
- Obter detalhes de um médicoPOST /api/doctors/[id]/schedule
- Agendar consulta com médico
GET /api/appointments
- Listar agendamentos do usuário- Query params:
count
(limite),status
(filtrar por status)
- Query params:
A API utiliza JWT para autenticação. Para acessar endpoints protegidos, inclua o token no header:
Authorization: Bearer <seu-token-jwt>
/api/appointments/*
/api/doctors/*/schedule
/api/user
O projeto utiliza Prisma com SQLite e possui as seguintes entidades principais:
- User - Usuários do sistema
- Doctor - Médicos disponíveis
- Appointment - Agendamentos de consultas
Para visualizar o banco de dados:
npx prisma studio
api-treinacare/
├── app/
│ ├── api/ # API Routes
│ │ ├── auth/ # Autenticação
│ │ ├── doctors/ # Médicos
│ │ ├── appointments/ # Agendamentos
│ │ └── user/ # Usuário
│ └── lib/
│ └── jwt.ts # Utilitários JWT
├── prisma/
│ ├── schema.prisma # Schema do banco
│ └── migrations/ # Migrações
├── middleware.ts # Middleware de autenticação
└── seed.tsx # Seed do banco de dados
npm run dev
- Executa em modo de desenvolvimentonpm run build
- Build para produçãonpm run start
- Executa versão de produçãonpm run lint
- Executa linter
# Gerar o cliente Prisma
npx prisma generate
# Visualizar banco de dados
npx prisma studio
# Reset do banco de dados
npx prisma migrate reset
# Aplicar mudanças no schema
npx prisma db push
Este projeto serve como base para expandir funcionalidades como:
- Implementação de hash de senhas com bcrypt
- bcrypt - Hash de senhas
- Notificações por email
- Upload de imagens
- Paginação avançada
- Testes automatizados
- Deploy em produção
Durante o desenvolvimento desta API, exploramos conceitos importantes como:
- Middleware personalizado no Next.js
- Validação e tratamento de erros
- Relacionamentos no Prisma
- Segurança com JWT
- TypeScript em APIs