Giter Site home page Giter Site logo

tombraganca / despesas.com Goto Github PK

View Code? Open in Web Editor NEW
0.0 1.0 0.0 456 KB

Este é um projeto que implementa uma API REST em Node.js para gerenciar despesas de usuários, com funcionalidades de autenticação de usuário, CRUD de despesas, validações de entrada e restrições de acesso.

TypeScript 100.00%

despesas.com's Introduction

Despesas.com - API REST Node.js 🚀

Este é um projeto que implementa uma API REST em Node.js para gerenciar despesas de usuários, com funcionalidades de autenticação de usuário, CRUD de despesas, validações de entrada e restrições de acesso.

Uma breve introdução

Imaginemos que um usuário quer registrar seus gastos. Ele precisa de um aplicativo que ele possa se cadastrar, fazer login e registrae suas despesas diárias e visualiza-las. Neste contexto, o despesa.com seria a melhor ferramenta para ele.

🧾 - Minhas despesas diárias!

No caso, iremos criar toda a estrutura Back End para que isso ocorra.

Vamos lá!

Tecnologias Utilizadas

  • Node.js
  • Express.js
  • JWT (JSON Web Tokens) para autenticação
  • Banco de dados (Prisma + MySQL)
  • Nodemailer para envio de e-mails
Tom-Ts Express JWT SQLite Prisma Vite

Instalação

  1. Clone o repositório:
git clone https://github.com/seuusuario/despesas-com.git
  1. Instale as dependências:
cd despesas.com
npm install
  1. Configure as variáveis de ambiente:

Renomeie o arquivo .env.example para .env e configure as variáveis de ambiente necessárias, como a conexão com o banco de dados, segredo para geração de tokens JWT e credenciais para envio de e-mails.

  1. Inicie o Banco de Dados:
npx prisma migrate dev && npx prisma generate
  1. Inicie o servidor:
npm run dev

A rota root do projeto é uma pagina que pode ser acessáda pelo navegador e contem informações sobre o projeto. Para acessar clique AQUI.

Para testar sugiro dar uma lida na documentação do mailtrap.io.

Integrações

Como solicitado nos requisitos do teste, é enviado um email sempre que um novo usuário se cadastra ou cadastra uma nova despesa. Para testar, utilizei o mailtrap para simular uma caixa de entra e validar a integração.

alt text

Rotas

Serviços de validação

GET /health: Valida a saude do serviço.
GET /protected: Valida a saúde de uma rota protegida (para testes).

Serviços de authenticação

POST /signin: Registra um novo usuário.
POST /login: Autentica um usuário e gera um token JWT.
POST /refresh: Obter novos tokens para um usuário.

Serviços de despesas

POST /expense: Cria uma nova despesa para o usuário authenticado.
GET /expense: Lista todas as despesas de um usuário autenticado.
PUT /expense/{id}: Atualiza os valores de uma despesa .
DELETE /expense{id}: Deleta uma despesa de um usuário.

Testes

Este projeto possui testes unitários para validar a regra de negocio de cada um dos casos de usos apresentados.

Para executar os testes unitários execute:

npm run test

Além disso, você pode averiguar a cobertura dos arquivos atraves do coverage:

npm run coverage

Importante ressaltar que pelo pouco tempo para a execução do desafio, foi testado unicamente os serviços e as regras de negocio dos mesmos. Controllers e Providers não foram efetivamente testados, mas o processo de aperfeiçoamento continuará.

alt text

Para testar a API, você pode usar ferramentas como Postman ou Insomnia para enviar requisições HTTP para as rotas especificadas. Além disso, a API possui uma documentação própria que pode ser acessáda através da rota /api-docs.

Considerações Finais

Este projeto foi desenvolvido como parte de um case técnico para demonstrar habilidades em Node.js, implementando boas práticas de desenvolvimento de software, como separação de responsabilidades, tratamento de erros e segurança e documentação de projeto. Qualquer feedback é bem-vindo para a melhoria contínua deste projeto.

Resposavel

Gleydiston Bragança - [email protected]

LinkedIn GitHub

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.