| Nome | Matrícula |
|---|---|
| Ana Julia Chaves Souto da Costa | 569565 |
| Levi Gomes Ferreira (turma da noite) | 556935 |
| Luiz Henrique Nunes Sena | 568584 |
| Pâmella Kyrla de Sousa Neco | 565637 |
O protótipo das telas do aplicativo está no Figma: Barbearia no Figma
A gestão manual de horários em barbearias por telefone ou mensagens frequentemente causa conflitos de agenda, filas de espera e falta de autonomia para o cliente consultar horários e serviços disponíveis em tempo real. A aplicação busca centralizar e automatizar o processo de agendamento e gerenciamento do estabelecimento.
- Clientes: Pessoas que desejam agendar serviços de corte e barba com praticidade pelo celular.
- Administradores: Donos ou gerentes da barbearia que precisam organizar a agenda, gerenciar serviços e controlar a equipe de profissionais.
- Autenticação simplificada por nome e telefone.
- Visualização dos serviços disponíveis e profissionais da equipe.
- Realização de agendamentos escolhendo serviço, barbeiro, data e horário disponível.
- Visualização e cancelamento dos próprios agendamentos.
- Autenticação restrita por senha.
- Gerenciamento de agendamentos (visualizar por status: pendente, confirmado, concluído; confirmar, concluir e cancelar).
- Gerenciamento de serviços (cadastrar, editar e remover serviços com preços e durações).
- Gerenciamento da equipe (cadastrar e gerenciar barbeiros/cabeleireiros).
- Visualização e busca da lista de clientes cadastrados.
- Customer (Cliente): Identificador (
id), nome (name) e telefone (phone). - Admin (Administrador): Identificador (
id) e senha criptografada (password). - Barber (Barbeiro): Identificador (
id), nome (name), avatar (avatarUrl), especialidade (specialty), avaliação (rating), experiência (experience), tags (tags) e status ativo (isActive). - BarberService (Serviço de Barbearia): Identificador (
id), nome (name), descrição (description), preço (price), duração em minutos (durationMinutes), ícone (icon) e status ativo (isActive). - Appointment (Agendamento): Identificador (
id), cliente (customerId), barbeiro (barberId), serviço (barberServiceId), data/hora agendada (scheduledAt), preço cobrado (price) e status (status: PENDING, CONFIRMED, COMPLETED, CANCELED).
A solução requer uma API centralizada para sincronizar horários em tempo real, evitando agendamentos duplicados no mesmo intervalo e barbeiro, além de garantir o controle de permissões entre clientes e administradores. A aplicação mobile oferece aos clientes acesso rápido e prático para marcar e consultar horários a qualquer momento.
Copie o arquivo de exemplo para criar seu .env:
cp .env.example .envExecute o comando abaixo para iniciar o container do PostgreSQL 17 (barberpro-db) compatível com a DATABASE_URL:
docker run -d \
--name barberpro-db \
-e POSTGRES_USER=postgres \
-e POSTGRES_PASSWORD=postgres \
-e POSTGRES_DB=barberpro \
-v barberpro_data:/var/lib/postgresql/data \
-p 5432:5432 \
postgres:17Com o banco em execução, aplique as migrações do Prisma:
npm run prisma:migrateCria o administrador e dados de exemplo (barbeiros, serviços, clientes e agendamentos). Pode ser executado mais de uma vez sem duplicar registros:
npm run prisma:seedO login do administrador usa a senha definida em ADMIN_PASSWORD no .env (padrão admin123). O npm run prisma:reset também executa o seed automaticamente.