{"id":14967411,"url":"https://github.com/jonathanprojetos/pagarme","last_synced_at":"2026-02-26T15:34:12.250Z","repository":{"id":179318372,"uuid":"663300832","full_name":"JonathanProjetos/PagarMe","owner":"JonathanProjetos","description":"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. ","archived":false,"fork":false,"pushed_at":"2024-02-25T15:00:06.000Z","size":403,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-14T07:44:26.976Z","etag":null,"topics":["bcryptjs","chaijs","dotenv","eslint","express","express-async-errors","joi","jsonwebtoken","mochajs","mysql","nodejs","sequelize","sinonjs","swagger-ui"],"latest_commit_sha":null,"homepage":"https://pagarme-production.up.railway.app/docs","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JonathanProjetos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-07-07T02:16:53.000Z","updated_at":"2023-07-13T22:36:16.000Z","dependencies_parsed_at":"2024-08-23T14:34:37.956Z","dependency_job_id":null,"html_url":"https://github.com/JonathanProjetos/PagarMe","commit_stats":null,"previous_names":["jonathanprojetos/pagarme"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/JonathanProjetos/PagarMe","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathanProjetos%2FPagarMe","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathanProjetos%2FPagarMe/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathanProjetos%2FPagarMe/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathanProjetos%2FPagarMe/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JonathanProjetos","download_url":"https://codeload.github.com/JonathanProjetos/PagarMe/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JonathanProjetos%2FPagarMe/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279002015,"owners_count":26083258,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-09T02:00:07.460Z","response_time":59,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["bcryptjs","chaijs","dotenv","eslint","express","express-async-errors","joi","jsonwebtoken","mochajs","mysql","nodejs","sequelize","sinonjs","swagger-ui"],"created_at":"2024-09-24T13:38:01.255Z","updated_at":"2025-10-09T20:22:29.044Z","avatar_url":"https://github.com/JonathanProjetos.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Bem-vindo ao PagarMe\nA 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.\n \n\u003c/details\u003e\n\n## Sumário\n- [Bem-vindo ao PagarMe](#Bem-vindo-ao-PagarMe)\n- [Contexto](#contexto)\n- [Tecnologias e Ferramentas Utilizadas](#tecnologias-e-ferramentas-utilizadas)\n- [Instalar as dependências e executar](#instalar-as-dependências-e-executar)\n- [Docker](#Docker)\n- [Deploy](#Deploy)\n- [Swagger](#Swagger)\n- [Git, GitHub e Histórico de Commits](#git-github-e-histórico-de-commits)\n- [Lint](#lint)\n\n## Contexto\nO __PagarMe__ é uma ferramenta que acessa a bases de dados, é permite aos usuários:\n- Fazer login;\n- Cadastrar um novo usuário;\n- Buscar por transações;\n- Criar transações;\n- Buscar por recebiveis;\n\n__Quando logado é possivel__\n- Buscar por transações;\n- Criar transações;\n- Buscar por recebiveis;\n\n## Tecnologias e Ferramentas Utilizadas\n\nEste projeto utiliza as seguintes tecnologias e ferramentas:\n\n- [NodeJS](https://nodejs.org/en/) | Plataforma de execução runtime baseda em javascript.\n- [Express](https://expressjs.com/pt-br/) | Framework para nodejs \n- [Mysql](https://dev.mysql.com/doc/) | Banco de dados SQL relacional.\n- [Sequelize](https://sequelize.org/docs/) | ORM Object-Ralational-Mapping.\n- [JWT](https://jwt.io/) | Formatador de token seguro.\n\nO 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.\n### Entities\nhttps://drive.google.com/file/d/1av8kgGIu6AWP81UC5Xp0t0t-Jmf4QYb4/view?usp=sharing\n\u003cimg src='https://drive.google.com/file/d/1av8kgGIu6AWP81UC5Xp0t0t-Jmf4QYb4' alt='entidades'/\u003e\n\n### Download do projeto\n```\ngit@github.com:JonathanProjetos/PagarMe.git\n```\n\n### Arquivo env\n- 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.\n\n### Instalar as dependências e executar\n```\ncd PagarMe\nnpm install\nnpm run dev\n```\n### Comandos Adicionais\n```\n// Inicializa o Eslint\nnpm run lint\n\n// Dropa o banco de dados\nnpm run drop\n\n// Cria o banco de dados é adiciona as migrates\nnpm run create\n\n// Adiciona os seeders\nnpm run seed \n```\n### Docker\n - 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.\n - 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.\n - 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.\n```\ncd PagarMe\ndocker-compose up -d\n\n- logs docker\ncd PagarMe\ndocker logs -f --tail 1000 pagar_bem\n```\n\n### Tests\n```\ncd PagarMe\nnpm test\nou \nnpm run test:coverage\n```\n### Deploy\n- Foi realizado o deploy da aplicação no Railway. Logo abaixo, está o link de acesso para a aplicação através do Swagger.\n\n### Swagger\n- Foi implementada a documentação por parte do Swagger, que possibilita testar a aplicação de forma mais rápida e intuitiva.\n- O link para a documentação é [DOC](https://pagarme-production.up.railway.app/docs)\n- 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).\n\n\n### Git, GitHub e Histórico de Commits\nEste 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.\n\n\n### Lint\n- O projeto foi desenvolvido seguindo os padrões de Clean Code especificados pelo [Lint da Trybe](https://github.com/betrybe/eslint-config-trybe).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanprojetos%2Fpagarme","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjonathanprojetos%2Fpagarme","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjonathanprojetos%2Fpagarme/lists"}