Sistema de agendamento para barbearia
- Crie uma cópia do arquivo .env.example - tanto o da pasta api quanto o da pasta web - no mesmo diretório com o nome de
.env
. Os valores fornecidos no arquivo de exemplo são os ideais para rodar a aplicação sem precisar editar as variáveis.
- Dentro do diretório api, execute o comando
npm install
para instalar suas dependências. - Você precisará de uma instância do PostgreSQL rodando para executar o próximo passo. O nome do banco deverá ser o mesmo que o configurado no .env. Modifique as variáveis de ambiente caso necessário.
- Execute o comando
npx db-migrate up
para rodar as migrations do banco de dados. - Inicie a aplicação com
npm run start:dev
. Aguarde a mensagem de sucesso.
- Já no diretório web, execute o comando
npm install
para instalar as dependências. - Execute
npm run dev
para iniciar a aplicação. Ela ficará disponível em http://localhost:5173 .
- O sistema divide os usuários entre admin e não admin. O primeiro usuário cadastrado terá o cargo de admin, os demais não.
- Nas migrations já existem alguns barbeiros e especialidades cadastradas.
PostgreSQL
- Deve ser possível cadastrar barbeiros
- Deve ser possível cadastrar especialidades
- Os clientes devem poder se cadastrar
- Os clientes devem poder logar no sistema
- Os clientes devem poder agendar horários
- Os clientes devem poder cancelar agendamentos
- Os clientes devem poder visualizar seus agendamentos
- O ADM deve poder visualizar os agendamentos futuros
- Usuários não podem se cadastrar com emails que já estão em uso
- Usuários só podem realizar agendamentos após se autenticarem
- Usuários precisam especificar um barbeiro para agendar horários
- Um barbeiro não pode atender dois clientes no mesmo horário
- Um barbeiro pode ter mais de uma especialidade
- Um agendamento só pode ser cancelado até duas horas antes do horário marcado
- Barbeiros só podem ser cadastrados por ADMs
- No momento de agendar horário, os barbeiros devem ser listados por especialidade
- Não podem existir mais de uma especialidade com o mesmo nome
- As senhas dos usuários devem ser criptografadas
- A autenticação de clientes deve se dar a partir de um JWT
- Os dados da aplicação deverão ser persistidos em um banco ProtgreSQL
- A barbearia funciona todos os dias de 8:00h às 18:00h
- Um atendimento demora exatamente 30 minutos
- A API deve ser documentada utilizando o Swagger
- O processo para executar a aplicação localmente deve ser documentado