- POST - /users (Create New User)
- GET - /users (Get All Users)
- PUT - /profile (Update User Profile)
- POST - /sessions (Create a JWT Token for Authenticate)
- POST - /password/forgot (Send email for forgotten password)
- POST - /password/reset (Reset Password)
- POST - /customers (Register New Customer)
- PUT - /customers/:id (Update Customer)
- DELETE - /customers/:id (Delete Customer)
- GET - /customers (Get All Customers)
- POST - /products (Register New Product)
- PUT - /products/:id (Update Product)
- DELETE - /products/:id (Delete Product)
- GET - /products (Get All Products)
- POST - /orders (Create New Order)
- GET - /orders (Get All Orders)
- GET - /orders/:id (Get Items Ordered)
- ✅ Node.js
- ✅ Express
- ✅ TypeScript
- ✅ PostgreSQL
- ✅ TypeORM
- ✅ Docker
- ✅ Redis
- ✅ Jest
- ✅ JWT-token
- ✅ uuidV4
- ✅ Celebrate
RF
- Deve ser possível cadastrar um novo usuário.
RN
- Não deve ser possível cadastrar dois usuários com mesmo email.
RNF
- O sistema deve utilizar o banco de dados relacional PostgreSQL para armazenar dados de forma eficiente, garantindo integridade e consistência.
RF
- Deve ser possível atualizar dados de cadastro do usuário.
RN
- Não deve ser possível atualizar dados de um usuário inexistente.
- Não deve ser possível atualizar dados de um usuário usando um email cadastrado por outro usuário.
- Não deve ser possível atualizar para uma nova senha sem informar a senha antiga.
RF
- Deve ser possível listar todos usuários.
RF
- Deve ser possível autenticar um usuário.
RN
- Não deve ser possível autenticar um usuário inexistente.
- Não deve ser possível autenticar um usuário com senha incorreta.
- Ao realizar a autenticação do usuário, um token de acesso JWT deve ser gerado.
RNF
- O token de acesso utilizado pelo sistema deve ser JWT (JSON Web Token) para a geração e validação de tokens de autenticação, garantindo segurança e interoperabilidade.
RF
- Deve ser possível o usuário recuperar a senha informando o e-mail.
- O usuário deve receber um e-mail com o passo a passo para a recuperação da senha.
- O usuário deve conseguir inserir uma nova senha.
RN
- Não deve ser possível restaurar senha de um usuário inexistente.
- O usuário precisa informar uma nova senha.
- O link enviado para a recuperação deve expirar em 3 horas.
RF
- Deve ser possível registrar um novo cliente.
RN
- Não deve ser possível registrar dois clientes com mesmo email.
RF
- Deve ser possível atualizar um cliente.
RN
- Não deve ser possível atualizar um cliente inexistente.
- Não deve ser possível atualizar dados de um cliente usando um email cadastrado por outro cliente.
RF
- Deve ser possível apagar um cliente.
RN
- Não deve ser possível apagar um cliente inexistente.
RF
- Deve ser possível listar todos os clientes.
RF
- Deve ser possível cadastrar um novo produto.
RN
- Não deve ser possível cadastrar um produto com nome já existente.
RF
- Deve ser possível atualizar um produto.
RN
- Não deve ser possível atualizar um produto inexistente.
- Não deve ser possível atualizar um produto com nome já existente.
RF
- Deve ser possível apagar um produto.
RN
- Não deve ser possível apagar um produto inexistente.
RF
- Deve ser possível listar todos os produtos disponíveis.
RF
- Deve ser possível criar um novo pedido.
RN
- Não deve ser possível criar um pedido para um cliente inexistente.
- Não deve ser possível criar um pedido para um produto inexistente.
- Não deve ser possível criar um pedido para produtos com quantidades insuficientes.
RF
- Deve ser possível listar todos os pedidos realizados.
RF
- Deve ser possível ver todos os itens do pedido realizado.
RN
- Não deve ser possível ver itens de um pedido inexistente.