API para acompanhar as vacinações, consultas, peso, idade do seu pet
Read in English
- CRUD de usuário
- Upload de foto de usuário
- Autenticação de usuário
- JWT, Refresh Token e Refresh Token Rotation
- Envio de e-mail ✉️
- Reset de senha
- CRUD de pets
- Upload de foto de pet 😸 🐶 🐭 🐰
- Criação e leitura de Consultas
-
Você precisará do Node.js e recomendo que use o Docker e Docker Compose
- Se não quiser usar o Docker, precisará subir sua própria instância do PostgreSQL
-
Iniciar servidor
# Clona o projeto para sua máquina
git clone https://github.com/alvaromrveiga/caramela-api
# Entra na pasta do projeto
cd caramela-api
# Instala as dependências
yarn
# Sobe o container com a aplicação e o banco de dados
# Dependendo da sua instalação pode ser necessário usar sudo logo antes do comando abaixo
docker-compose up -d
# Roda as migrations
yarn typeorm migration:run
# O servidor abrirá na porta 3333. Você pode acessar os docs em http://localhost:3333/docs/
-
Crie um arquivo .env na raiz do projeto preenchendo as informações descritas no .env.example
-
Para olhar os logs use:
# Dependendo da sua instalação pode ser necessário usar sudo logo antes do comando abaixo
docker logs -f caramela-api
- Para rodar os testes:
# Pode demorar alguns poucos minutos
# 44 suites e 147 testes
yarn test:all
A coleção de 22 requisições para testar o projeto no Insomnia pode ser encontrada aqui.
- Para importar no Insomnia:
- Clique na engrenagem no canto superior direito
- Aba de Data
- Import Data
- From File
- Selecione o arquivo Insomnia_caramela-api.json dentro da pasta assets na raiz do projeto
- Typescript e ts-node-dev - minimizar erros e compilar em tempo real
- Node.js e Express - construir o servidor
- Express async errors - lidar com erros assíncronos
- Docker - facilitar instalação
- Heroku - deploy
- TypeORM com PostgreSQL - armazenar dados
- Multer - upload de arquivos
- Json Web Token - token de login e refresh token
- Bcrypt - hashs de senhas
- Nodemailer - envio de emails
- Ethereal Mail - teste de emails
- Sendgrid Email API - envio de emails gratuito
- Handlebars - template de email em HTML
- Day.js - cálculos envolvendo datas
- Swagger UI Express - documentação
- Tsyringe - injeção de dependência
- Uuid - gerar uuids
- Validator - validar emails
- Dotenv - carregar variáveis de ambiente do arquivo .env
- Pg-connection-string - organizar a variável de ambiente database_url
- Jest, ts-jest, jest-mock-extended e SuperTest - testes
- ESLint - linting
- Prettier - formatação de código