Bem-vindo à API-GAC! Este projeto foi desenvolvido para o Grupo Adriano Cobuccio (GAC), com o objetivo de criar uma carteira financeira onde usuários podem realizar transferências de saldo. O projeto foi desenvolvido utilizando Node.js, NestJS, e TypeScript, seguindo as melhores práticas de desenvolvimento e padrões de design.
O objetivo deste projeto é criar uma API que permita a gestão de uma carteira financeira com as seguintes funcionalidades:
- Cadastro de usuários: Permitir que novos usuários se registrem no sistema.
- Autenticação: Garantir que somente usuários autenticados possam acessar as funcionalidades da carteira.
- Transferência de saldo: Usuários podem enviar ou receber dinheiro entre si.
- Validação de saldo: Verificar se o usuário tem saldo suficiente antes de realizar uma transferência.
- Transações reversíveis: A operação de transferência deve ser passível de reversão em caso de inconsistência ou por solicitação do usuário.
- Node.js: Ambiente de execução JavaScript server-side.
- NestJS: Framework progressivo de Node.js para a construção de aplicações escaláveis e eficientes.
- TypeScript: Superset do JavaScript que adiciona tipos estáticos e outros recursos para melhorar o desenvolvimento.
Para cumprir o objetivo do projeto, os seguintes requisitos foram implementados:
- Cadastro: Sistema para registrar novos usuários na plataforma.
- Autenticação: Implementação de um mecanismo de autenticação para proteger as operações da API.
- Transferências: Função que permite o envio e recebimento de dinheiro entre usuários.
- Validação de Saldo: Verificação de saldo antes de permitir a transferência.
- Transações Reversíveis: Mecanismo para reverter uma transação em caso de erro ou solicitação do usuário.
Durante o desenvolvimento, foram considerados os seguintes pontos para garantir a qualidade do projeto:
- Segurança: Implementação de medidas de segurança para proteger os dados dos usuários.
- Padrões de Design: Uso de design patterns e princípios SOLID para garantir um código limpo e de fácil manutenção.
- Modelagem de Dados: Estruturação adequada dos dados para suportar as funcionalidades da carteira.
O uso do Docker para garantir a consistência do ambiente de desenvolvimento e a facilidade na implantação da aplicação.
Para iniciar o projeto, você pode seguir as instruções abaixo, dependendo do ambiente:
# Instalar as dependências
npm install
# Rodar o projeto em ambiente de desenvolvimento
npm run start:dev# Construir o projeto
npm run build
# Iniciar o projeto em ambiente de produção
npm run start:prodPara garantir que o projeto esteja funcionando corretamente, você pode rodar os testes:
# Executar todos os testes
npm run test
# Rodar os testes em modo watch
npm run test:watch
# Verificar a cobertura dos testes
npm run test:covEste projeto já inclui um Dockerfile e um arquivo docker-compose.yml que automatizam a criação do ambiente e do container. Para subir o ambiente, siga os passos abaixo:
-
Construir e subir o ambiente com Docker Compose:
docker-compose up --build
O banco de dados utilizado é o SQLite, que é armazenado localmente no ambiente Docker. Não é necessário configurar um banco de dados externo, pois o SQLite já está integrado na aplicação.