Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/felipeakira1/miau
API RESTful for a veterinary clinic
https://github.com/felipeakira1/miau
fastify nodejs postgresql prisma-orm testing
Last synced: about 11 hours ago
JSON representation
API RESTful for a veterinary clinic
- Host: GitHub
- URL: https://github.com/felipeakira1/miau
- Owner: felipeakira1
- Created: 2024-10-30T23:04:54.000Z (3 months ago)
- Default Branch: main
- Last Pushed: 2025-02-05T02:28:49.000Z (4 days ago)
- Last Synced: 2025-02-05T03:23:52.973Z (4 days ago)
- Topics: fastify, nodejs, postgresql, prisma-orm, testing
- Language: TypeScript
- Homepage:
- Size: 241 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Miau
## Requisitos funcionais
### Autenticação
[X] Deve ser possível se autenticar como admin
[X] Deve ser possível se autenticar como tutor
[X] Deve ser possível se autenticar como veterinario### Animais
[X] Deve ser possível cadastrar um animal
[X] Deve ser possível atualizar os dados de um animal
[] Deve ser possível excluir um animal
[X] Deve ser possível visualizar todos os animais do sistema
[ ] Deve ser possível visualizar todas as consultas de um animal### Tutores
[X] Deve ser possível cadastrar um tutor
[X] Deve ser possível atualizar os dados de um tutor
[ ] Deve ser possível excluir um tutor
[X] Deve ser possível visualizar todos os tutores do sistema
[X] Deve ser possível visualizar todos os animais de um tutor
[ ] Deve ser possível visualizar todas as consultas de um tutor### Veterinario
[X] Deve ser possível cadastrar um veterinário
[X] Deve ser possível atualizar os dados de um veterinário
[] Deve ser possível excluir um veterinário
[X] Deve ser possível visualizar todos os veterinarios do sistema
[X] Deve ser possível visualizar todas as consutlas de um veterinario### Consultas
[X] Deve ser possível que o tutor solicite uma consulta em um determinado dia e enviando três horários de disponibilidade
[X] Deve ser possível que o veterinário aceite uma solicitação de consulta
[] Deve ser possível que o veterinário recuse uma solicitação de consulta, dando uma justificativa para a recusa.
[X] Deve ser possível que o veterinário finalize uma consulta
[] Deve ser possível que o tutor cancele uma solicitação de consulta
[] Deve ser possível que o tutor cancele uma consulta
[] Deve ser possível que o veterinário visualize todas as consultas solicitadas para ele.
[] Deve ser possível que o veterinário visualize todas as suas consultas em andamento.
[] Deve ser possível que o veterinário visualize todas as consultas finalizadas.## Regras de negócio
[] Somente o ADMIN pode cadastrar veterinarios
[] O tutor pode se cadastrar
[] Somente o ADMIN pode excluir tutores, veterinários e animais
[] Se um animal for excluído, ele deve ser marcado como inativo para manter o histórico de consultas[] O tutor pode editar seus próprios dados e os de seus animais
[] O veterinário pode editar suas próprias informações
[] O veterinário pode editar as informações de qualquer animal e tutor[X] O tutor deve sugerir até 3 horários ao solicitar uma consulta.
[] O veterinário pode aceitar um recusar uma solicitação de consulta, com justificativa predefinida ou personalizada.
[] O veterinário deve marcar uma consulta como finalizada e adicionar observações.
[] O tutor pode visualizar apenas suas consultas e as de seus animais.
[X] O acesso ao sistema é baseado em roles (ADMIN, TUTOR, VETERINARIO)
[] O admin tem acesso total e pode realizar qualquer operação no sistema.## Rotas
### Users
[X] POST /authenticate - Autenticação
[X] GET /profile - Obter dados do usuário autenticado
[X] GET /users - Obter todos os usuários
[X] PATCH /token/refresh - Atualizar token de autenticação### Owners
[X] POST /owners - Registrar um tutor
[X] GET /owners - Obter todos os tutores
[X] GET /owners/:id/animals - Obter todos os animais de um tutor
[X] GET /owners/:id/appointments - Obter todas as consultas de um tutor
[X] PUT /owners/me - Tutor atualiza seus próprios dados
[X] PUT /owners/:id - Admin atualiza os dados de um tutor
[] DELETE /owner/:id### Veterinarians
[X] POST /veterinarians - Criar um veterinario
[X] GET /veterinarians - Obter todos os veterinarios
[] GET /veterinarians/:id/appointments - Obter todas as consultas de um tutor
[X] PUT /veterinarians/me - Veterinario atualiza seus próprios dados
[X] PUT /veterinarians/:id - Admin atualiza os dados de um veterinario
[] DELETE /veterinarians/:id - Excluir um veterinario### Animals
[X] POST /animals - Criar um animal
[X] GET /animals - Obter todos os animais
[X] GET /animals/:id/appointments - Obter todas as consultas de um animal
[X] POST /animals/:id/upload - Atualizar a imagem de um animal
[] PUT /animals/:id - Atualizar um animal
[] DELETE /animals/:id - Excluir um animal### Consultas
[X] POST /appointments - Solicitar uma consulta
[X] GET /appointments/requested - Obter todas as consultas com status de Solicitado do veterinario autenticado
[X] PATCH /appointments/:id/accept - Aceitar uma consulta
[X] PATCH /appointments/:id/deny - Recusar uma consulta
[X] PATCH /appointments/:id/finish - Finalizar uma consulta
[X] PATCH /appointments/:id/update - Atualizar uma consulta## Fluxo
1. Tutor solicita uma consulta, enviando três horários preferenciais
2. Veterinario aceita um dos horários via PUT /appointments/:id/accept
3. Se o veterinario não puder nos horários sugeridos, ele sugere um novo horário via PUT /appointments/suggest-date
4. Tutor aceita via PUT /appointments/:id/accept