{"id":20314157,"url":"https://github.com/samuel-ricardo/pic-pay_simplified","last_synced_at":"2025-07-19T16:11:37.906Z","repository":{"id":207967607,"uuid":"720512449","full_name":"Samuel-Ricardo/Pic-Pay_simplified","owner":"Samuel-Ricardo","description":"A simplified pic pay clone","archived":false,"fork":false,"pushed_at":"2023-12-06T18:39:38.000Z","size":5243,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-11-14T18:14:08.180Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://pic-pay.onrender.com/","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Samuel-Ricardo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-11-18T18:00:28.000Z","updated_at":"2024-01-13T19:59:42.000Z","dependencies_parsed_at":"2023-12-05T18:53:09.512Z","dependency_job_id":null,"html_url":"https://github.com/Samuel-Ricardo/Pic-Pay_simplified","commit_stats":null,"previous_names":["samuel-ricardo/pic-pay_simplified"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FPic-Pay_simplified","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FPic-Pay_simplified/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FPic-Pay_simplified/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Samuel-Ricardo%2FPic-Pay_simplified/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Samuel-Ricardo","download_url":"https://codeload.github.com/Samuel-Ricardo/Pic-Pay_simplified/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":233895243,"owners_count":18747015,"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","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":[],"created_at":"2024-11-14T18:14:11.454Z","updated_at":"2025-01-14T12:41:38.126Z","avatar_url":"https://github.com/Samuel-Ricardo.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e \n  \u003ca href=\"https://spring.io/\" target=\"_blank\"\u003e\n    \u003cimg width=\"80%\" src=\"https://logodownload.org/wp-content/uploads/2018/05/picpay-logo.png\"/\u003e\n  \u003c/a\u003e \n\u003c/p\u003e\n\n\u003ch4 align=\"center\" \u003e🚀 🟩 Pic Pay API 🟩 🚀\u003c/h4\u003e\n\n\u003ch4 align=\"center\"\u003e\n  My implementation of \u003ca href=\"https://picpay.com/\" target=\"_blank\" \u003e@PicPay\u003c/a\u003e using Java and Spring Framework to create a small representation of the PicPay API\n\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  |\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#project\"\u003eOverview\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#techs\"\u003eTechnologies\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#app\"\u003eProject\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#routes\"\u003eRoutes\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#run-project\"\u003eRun\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\n  \u003ca style=\"color: #8a4af3;\" href=\"#author\"\u003eAuthor\u003c/a\u003e\u0026nbsp;\u0026nbsp;\u0026nbsp;|\u0026nbsp;\u0026nbsp;\u0026nbsp;\n\u003c/p\u003e\n\n#\n\n\u003ch1 align=\"center\"\u003e\n  \n  \u003ca href=\"https://github.com/Samuel-Ricardo\"\u003e\n    \u003cimg src=\"https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=GITHUB\"/\u003e\n  \u003c/a\u003e\n\n  \u003ca herf=\"https://www.instagram.com/samuel_ricardo.ex/\"\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel.ex\u0026color=black\u0026style=for-the-badge\u0026logo=instagram'/\u003e \n  \u003c/a\u003e\n\n  \u003ca herf='https://www.linkedin.com/in/samuel-ricardo/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=LinkedIn'/\u003e \n  \u003c/a\u003e\n\n\u003c/h1\u003e\n\n\u003cbr\u003e\n\n\u003cp id=\"project\"/\u003e\n\n\u003ch2\u003e | 🛰️ About:  \u003c/h2\u003e\n\n\u003cp align=\"justfy\"\u003e\n  This API is my implementation of the PicPay. Simulates a microservice for transactions with authentication and authorization. It was done following the best practices of Clean Architecture and DDD, with Tests, Docker Containers and complete Documentation with Swagger.\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n📡 | Hosted on Render: https://pic-pay.onrender.com/ \u003cbr\u003e\n📝 | Documentation: https://pic-pay.onrender.com/swagger-ui/index.html\n\n\u003cbr\u003e\n\u003cbr\u003e\n\n\u003ch2 id=\"techs\"\u003e\n| 🏗️ - Technologies and Concepts Studied:\n\u003c/h2\u003e\n\n\u003e \u003ca href='https://spring.io/'\u003e \u003cimg width=\"40px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/spring/spring-original.svg\" /\u003e \u003c/a\u003e\n\n\u003cbr\u003e\n\n- Spring Framework\n- Spring Security\n- JWT\n- Authentication \u0026 Authorization\n- PostgreSQL\n- Docker\n- Consume External API\n- Maven\n- REST\n- Swagger\n- Validation\n- Lombok\n- Environment\n- Clean Architeture\n- DDD\n- JUnit\n- H2 Database\n- Error Handler\n\n\u003e Among Others...\n\u003cbr\u003e\n\n\n#\n\n\u003ch2 id=\"app\"\u003e\n  💻 | Application:\n\u003c/h2\u003e\n\n\u003cimg src=\"https://files.tecnoblog.net/wp-content/uploads/2022/01/pp-edited.jpg\"/\u003e\n\n\u003cbr\u003e\n\n\u003cp\u003e\n The API has an Authentication System that identifies the registered user based on a JWT Token and an Authorization System that defines which resources an authenticated user can access, a \u003cb\u003enormal\u003c/b\u003e user cannot create other users, but a \u003cb\u003eadmin\u003c/b\u003e user can, for example. User password is encrypt with Bcrypt for better security.\n\u003c/p\u003e\n\n\u003cp\u003e\n  Once authenticated, a normal user can transact an amount with others if they have enough balance, they will request an external simulated microservice to see if they can carry out the transaction. All Domain Rules are encapsulated in Policies that are implemented at the Application Layer. After the transaction is completed successfully, the API consults another external simulated microservice to send a notification to users informing them that everything went well.\n\u003cp\u003e\n\n\u003cp\u003e\n  All data passed through this microservice has validation and expected structure defined by DTOs and all documentation is done with Swagger\n\u003c/p\u003e\n\n\u003cp\u003e\n  In the testing environment, I have configured H2 for Database instead of a dedicated PostgreSQL as H2 uses Memory which is very fast and since it is just a test and I don't need to save data, I actually want the database to be restarted when starting, that is, it is faster, disposable and emulates the real behavior of a database, it is perfect for testing.\n\u003c/p\u003e\n\n\u003cp\u003e\n  I use Docker to set up the environment and run tests. This application has an image that is published on github with each commit in the Main Branch automated by Github actions\n\u003c/p\u003e\n\n\u003cbr\u003e\n\n📡 | Hosted on Render: https://pic-pay.onrender.com/ \u003cbr\u003e\n📝 | Documentation: https://pic-pay.onrender.com/swagger-ui/index.html\n\n\u003cbr\u003e\n\n#\n\n\u003ch2 id=\"run-project\"\u003e \n   👨‍💻 | How to use\n\u003c/h2\u003e\n\n\u003cbr\u003e\n\n### Open your Git Terminal and clone this repository\n\n```git\n  $ git clone \"git@github.com:Samuel-Ricardo/Pic-Pay_simplified.git\"\n```\n\n### Make Pull\n\n```git\n  $ git pull \"git@github.com:Samuel-Ricardo/Pic-Pay_simplified.git\"\n```\n\n\u003cbr\u003e\n\nThis application use `Docker` so you dont need to install and cofigurate anything other than docker on your machine.\n\n\u003e \u003ca target=\"_blank\" href=\"https://www.docker.com/\"\u003e \u003cimg width=\"48px\" src=\"https://cdn.jsdelivr.net/gh/devicons/devicon/icons/docker/docker-plain-wordmark.svg\" /\u003e \u003c/a\u003e\n\n\u003cbr\u003e\n\nNavigate to project folder and run it using `docker-compose`\n\n```bash\n\n  # After setup docker environment just run this commmand on root project folder:\n\n  $ docker-compose up --build   # For First Time run this command\n\n  $ docker-compose up           # to run project\n\n\n```\n\n```bash\n\n  #Apps Running on:\n\n  $ API: http://localhost:8080\n\n  $ PostgreSQL: http://localhost:5432\n  $ PGAdmin: http://localhost:5050\n\n  See more: ./docker-compose.yaml\n\n```\n\n\u003cbr\u003e\n\n#\n\n\u003ch2 id=\"author\"\u003e\n  :octocat: | Author:  \n\u003c/h2\u003e\n\n\u003e \u003ca target=\"_blank\" href=\"https://www.linkedin.com/in/samuel-ricardo/\"\u003e \u003cimg width=\"350px\" src=\"https://github.com/Samuel-Ricardo/bolao-da-copa/blob/main/readme_files/IMG_20220904_220148_188.jpg?raw=true\"/\u003e \u003cbr\u003e \u003cp\u003e \u003cb\u003e - Samuel Ricardo\u003c/b\u003e \u003c/p\u003e\u003c/a\u003e\n\n\u003ch1\u003e\n  \u003ca herf='https://github.com/Samuel-Ricardo'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=GITHUB'\u003e \n  \u003c/a\u003e\n  \n  \u003ca herf='https://www.instagram.com/samuel_ricardo.ex/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel.ex\u0026color=black\u0026style=for-the-badge\u0026logo=instagram'\u003e \n  \u003c/a\u003e\n  \n  \u003ca herf='https://twitter.com/SamuelR84144340'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=twitter'\u003e \n  \u003c/a\u003e\n  \n   \u003ca herf='https://www.linkedin.com/in/samuel-ricardo/'\u003e\n    \u003cimg src='https://img.shields.io/static/v1?label=\u0026message=Samuel%20Ricardo\u0026color=black\u0026style=for-the-badge\u0026logo=LinkedIn'\u003e \n  \u003c/a\u003e\n\u003c/h1\u003e\n\n\n\u003cbr\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-ricardo%2Fpic-pay_simplified","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsamuel-ricardo%2Fpic-pay_simplified","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsamuel-ricardo%2Fpic-pay_simplified/lists"}