Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jonathanprojetos/pagarme
A API PagarMe é uma proposta de resolução do desafio técnico da Pager.me e oferece um sistema de Payment Service Provider (PSP) super simplificado.
https://github.com/jonathanprojetos/pagarme
bcryptjs chaijs dotenv eslint express express-async-errors joi jsonwebtoken mochajs mysql nodejs sequelize sinonjs swagger-ui
Last synced: about 2 months ago
JSON representation
A API PagarMe é uma proposta de resolução do desafio técnico da Pager.me e oferece um sistema de Payment Service Provider (PSP) super simplificado.
- Host: GitHub
- URL: https://github.com/jonathanprojetos/pagarme
- Owner: JonathanProjetos
- Created: 2023-07-07T02:16:53.000Z (over 1 year ago)
- Default Branch: master
- Last Pushed: 2024-02-25T15:00:06.000Z (10 months ago)
- Last Synced: 2024-10-11T22:42:53.452Z (2 months ago)
- Topics: bcryptjs, chaijs, dotenv, eslint, express, express-async-errors, joi, jsonwebtoken, mochajs, mysql, nodejs, sequelize, sinonjs, swagger-ui
- Language: JavaScript
- Homepage: https://pagarme-production.up.railway.app/docs
- Size: 394 KB
- Stars: 1
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# Bem-vindo ao PagarMe
A API PagarMe é uma proposta de resolução do desafio técnico da [Pager.me](https://github.com/pagarme/vagas/blob/master/desafios/software-engineer-backend/README.md) e oferece um sistema de Payment Service Provider (PSP) super simplificado. Para esta proposta, foi adicionado um sistema de cadastro para que o usuário cadastrado possa realizar transações financeiras quando autorizado. Esta aplicação gera autenticação utilizando bearer token através do JWT e tem como propósito simular o ciclo de uso, que se inicia com o cadastro, autorização e manipulação dos dados. Espero que gostem, foi muito divertido desenvolver esta solução.
## Sumário
- [Bem-vindo ao PagarMe](#Bem-vindo-ao-PagarMe)
- [Contexto](#contexto)
- [Tecnologias e Ferramentas Utilizadas](#tecnologias-e-ferramentas-utilizadas)
- [Instalar as dependências e executar](#instalar-as-dependências-e-executar)
- [Docker](#Docker)
- [Deploy](#Deploy)
- [Swagger](#Swagger)
- [Git, GitHub e Histórico de Commits](#git-github-e-histórico-de-commits)
- [Lint](#lint)## Contexto
O __PagarMe__ é uma ferramenta que acessa a bases de dados, é permite aos usuários:
- Fazer login;
- Cadastrar um novo usuário;
- Buscar por transações;
- Criar transações;
- Buscar por recebiveis;__Quando logado é possivel__
- Buscar por transações;
- Criar transações;
- Buscar por recebiveis;## Tecnologias e Ferramentas Utilizadas
Este projeto utiliza as seguintes tecnologias e ferramentas:
- [NodeJS](https://nodejs.org/en/) | Plataforma de execução runtime baseda em javascript.
- [Express](https://expressjs.com/pt-br/) | Framework para nodejs
- [Mysql](https://dev.mysql.com/doc/) | Banco de dados SQL relacional.
- [Sequelize](https://sequelize.org/docs/) | ORM Object-Ralational-Mapping.
- [JWT](https://jwt.io/) | Formatador de token seguro.O Node.js foi utilizado com o intuito de obter os benefícios da escalabilidade e eficiência, pois ele é capaz de lidar com vários tráfegos sem bloqueio e lida com solicitações com baixo consumo de recursos. O Express é um framework para o Node.js que permite construir aplicações web robustas e escaláveis de forma mais fácil e rápida. O MySQL é um banco de dados amplamente utilizado devido a várias razões. Ele oferece desempenho eficiente e rápido, é altamente escalável e possui uma comunidade ativa que fornece suporte e recursos adicionais. Além disso, o MySQL é flexível, seguro e possui integração com tecnologias populares. O Sequelize é uma biblioteca de mapeamento objeto-relacional (ORM) para Node.js, que simplifica a interação com bancos de dados relacionais, incluindo o MySQL. Com o Sequelize, é possível mapear objetos JavaScript para tabelas e colunas no banco de dados, escrever consultas em JavaScript e gerenciar relacionamentos entre tabelas de forma fácil.O uso do JSON Web Tokens (JWT) em aplicações web oferece várias vantagens. O JWT permite autenticar usuários de forma stateless, eliminando a necessidade de armazenar informações de sessão no servidor. Além disso, o JWT é seguro, pois pode ser assinado digitalmente, garantindo a integridade do token.
### Entities
https://drive.google.com/file/d/1av8kgGIu6AWP81UC5Xp0t0t-Jmf4QYb4/view?usp=sharing### Download do projeto
```
[email protected]:JonathanProjetos/PagarMe.git
```### Arquivo env
- Dentro da pasta PagarMe, existe o arquivo .env.example. Nele, será necessário remover o .example e fornecer os dados para a conexão com o banco de dados, bem como uma senha para o JSON Web Token.### Instalar as dependências e executar
```
cd PagarMe
npm install
npm run dev
```
### Comandos Adicionais
```
// Inicializa o Eslint
npm run lint// Dropa o banco de dados
npm run drop// Cria o banco de dados é adiciona as migrates
npm run create// Adiciona os seeders
npm run seed
```
### Docker
- O tempo de execução do docker-compose terá um acrecimo de cerca de 30 segundos devido as checagens de disponibilidade, os "Health-checks". Este recurso garantirá que tanto o banco de dados quanto a API estejam diponíveis para a execução.
- Caso a porta 3001 não seja a mais adequada para você. A mudança da porta deve acontecer tanto no arquivo server.js quanto no docker-compose.yml na parte de services/node/ports e services/node/healthcheck.
- Quando executar a aplicação usando o docker-compose up, as dependências necessárias serão instaladas. Além disso, o banco de dados será criado e as migrações serão executadas. Logo após, a aplicação será disponibilizada através do Nodemon na porta 3001.
```
cd PagarMe
docker-compose up -d- logs docker
cd PagarMe
docker logs -f --tail 1000 pagar_bem
```### Tests
```
cd PagarMe
npm test
ou
npm run test:coverage
```
### Deploy
- Foi realizado o deploy da aplicação no Railway. Logo abaixo, está o link de acesso para a aplicação através do Swagger.### Swagger
- Foi implementada a documentação por parte do Swagger, que possibilita testar a aplicação de forma mais rápida e intuitiva.
- O link para a documentação é [DOC](https://pagarme-production.up.railway.app/docs)
- Alguns end-points séra necessessário oferecer o token para o Authorization no swagger. O token será disponibilizado quando for feito o login é como resposta terá o token. Caso você não forneça o token para a autorização, os endpoints que dependem dele entrarão em um loop no estado de carregamento (loading).### Git, GitHub e Histórico de Commits
Este projeto utilizou a [Especificação de Commits Convencionais](https://www.conventionalcommits.org/en/v1.0.0/), com alguns tipos da [convenção Angular](https://github.com/angular/angular/blob/22b96b9/CONTRIBUTING.md#-commit-message-guidelines). Além disso, foi utilizado o pacote [conventional-commit-cli](https://www.npmjs.com/package/conventional-commit-cli) para ajudar a seguir a convenção de commits. É importante utilizar a convenção de commits em projetos para manter o histórico de commits organizado e facilitar a leitura e o entendimento do que foi desenvolvido.### Lint
- O projeto foi desenvolvido seguindo os padrões de Clean Code especificados pelo [Lint da Trybe](https://github.com/betrybe/eslint-config-trybe).