Sistema completo de agendamento desenvolvido com TypeScript no backend e Next.js 15 no frontend. Permite gerenciar calendários, eventos, participantes e horários de trabalho.
- 🔐 Autenticação JWT - Login e registro de usuários
- 📅 Gestão de Calendários - Criar, editar e gerenciar múltiplos calendários
- 🗓️ Eventos - Agendamento com suporte a eventos recorrentes
- 👥 Participantes - Adicionar e gerenciar convidados
- ⏰ Horários de Trabalho - Configurar disponibilidade semanal
- 📱 Interface Responsiva - Design moderno com Tailwind CSS
backend/
├── src/
│ ├── controllers/ # Controladores das rotas
│ ├── services/ # Lógica de negócio
│ ├── repositories/ # Acesso ao banco de dados
│ ├── middleware/ # Autenticação, validação, erros
│ ├── routes/ # Definição das rotas da API
│ ├── dtos/ # Validação de dados de entrada
│ └── utils/ # Utilitários (JWT, time, etc.)
├── prisma/
│ └── schema.prisma # Schema do banco de dados
└── package.json
frontend/
├── app/
│ ├── auth/ # Páginas de autenticação
│ ├── dashboard/ # Dashboard principal
│ ├── components/ # Componentes reutilizáveis
│ └── store/ # Gerenciamento de estado (Zustand)
├── lib/
└── package.json
PostgreSQL com Prisma ORM
- User - Usuários do sistema
- Calendar - Calendários dos usuários
- Event - Eventos/compromissos
- EventRecurrence - Recorrência de eventos
- EventAttendee - Participantes dos eventos
- WorkingHours - Horários de trabalho
- Schedule - Agendas geradas
- Node.js 18+
- PostgreSQL
- npm ou yarn
cd backend
npm install
npm run db:generate
npm run db:migrate
npm run devcd frontend
npm install
npm run devBackend (.env)
DATABASE_URL="postgresql://user:password@localhost:5432/scheduleapp"
JWT_SECRET="your-secret-key"
PORT=3001Frontend (.env.local)
NEXT_PUBLIC_API_URL=http://localhost:3001/api- Express.js - Framework web
- Prisma - ORM para PostgreSQL
- JWT - Autenticação
- bcryptjs - Hash de senhas
- Zod - Validação de schemas
- date-fns - Manipulação de datas
- Next.js 15 - Framework React
- React 19 - Biblioteca UI
- Tailwind CSS - Estilização
- Radix UI - Componentes acessíveis
- Zustand - Gerenciamento de estado
- React Hook Form - Formulários
- date-fns - Manipulação de datas
npm run dev # Desenvolvimento com hot reload
npm run build # Build para produção
npm run start # Executar em produção
npm run db:generate # Gerar cliente Prisma
npm run db:migrate # Executar migrações
npm run db:studio # Abrir Prisma Studio
npm run test # Executar testesnpm run dev # Desenvolvimento
npm run build # Build para produção
npm run start # Executar em produção
npm run lint # Verificar códigoPOST /api/auth/register- Registrar usuárioPOST /api/auth/login- Login
GET /api/users- Listar usuáriosPUT /api/users/:id- Atualizar usuário
GET /api/calendars- Listar calendáriosPOST /api/calendars- Criar calendárioPUT /api/calendars/:id- Atualizar calendárioDELETE /api/calendars/:id- Deletar calendário
GET /api/events- Listar eventosPOST /api/events- Criar eventoPUT /api/events/:id- Atualizar eventoDELETE /api/events/:id- Deletar evento
GET /api/events/:id/attendees- Listar participantesPOST /api/events/:id/attendees- Adicionar participantePUT /api/events/:id/attendees/:attendeeId- Atualizar participanteDELETE /api/events/:id/attendees/:attendeeId- Remover participante
GET /api/working-hours- Obter horáriosPUT /api/working-hours- Atualizar horários
- Dashboard - Visualização principal do calendário
- Sidebar - Navegação e lista de eventos
- Diálogos - Criação e edição de eventos/calendários
- Responsivo - Adaptável para desktop e mobile
- Autenticação JWT
- Hash de senhas com bcrypt
- Validação de entrada com Zod
- Rate limiting
- Headers de segurança com Helmet
- CORS configurado
