{"id":20909928,"url":"https://github.com/escalopa/fingo","last_synced_at":"2026-02-12T19:04:56.297Z","repository":{"id":65974065,"uuid":"602371557","full_name":"escalopa/fingo","owner":"escalopa","description":"Distributed banking systems built in golang","archived":false,"fork":false,"pushed_at":"2023-05-27T09:16:19.000Z","size":2612,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-13T18:26:46.436Z","etag":null,"topics":["cockroachdb","design-patterns","docker","goalng","grpc","hexagonal-architecture","jaegertracing","microservices","opentelemetry","postgresql","rabbitmq","redis-server"],"latest_commit_sha":null,"homepage":"","language":"Go","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/escalopa.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,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-02-16T04:03:20.000Z","updated_at":"2025-04-08T18:25:41.000Z","dependencies_parsed_at":"2024-11-18T14:13:41.646Z","dependency_job_id":"e73342c9-e1e8-4c83-a316-b740104175e9","html_url":"https://github.com/escalopa/fingo","commit_stats":null,"previous_names":["escalopa/gochat"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/escalopa/fingo","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Ffingo","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Ffingo/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Ffingo/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Ffingo/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/escalopa","download_url":"https://codeload.github.com/escalopa/fingo/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/escalopa%2Ffingo/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29377938,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-12T18:59:55.292Z","status":"ssl_error","status_checked_at":"2026-02-12T18:59:44.289Z","response_time":55,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["cockroachdb","design-patterns","docker","goalng","grpc","hexagonal-architecture","jaegertracing","microservices","opentelemetry","postgresql","rabbitmq","redis-server"],"created_at":"2024-11-18T14:13:15.600Z","updated_at":"2026-02-12T19:04:56.278Z","avatar_url":"https://github.com/escalopa.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# fingo 🏦💸\n\n![Build Status](https://github.com/escalopa/fingo/actions/workflows/push.yml/badge.svg)\n[![Go Report Card](https://goreportcard.com/badge/github.com/escalopa/fingo)](https://goreportcard.com/report/github.com/escalopa/fingo)\n[![wakatime](https://wakatime.com/badge/user/965e81db-2a88-4564-b236-537c4a901130/project/429a1182-b0c0-4de2-9ef9-67246e1b4d21.svg)](https://wakatime.com/badge/user/965e81db-2a88-4564-b236-537c4a901130/project/429a1182-b0c0-4de2-9ef9-67246e1b4d21)\n\n[![codecov](https://codecov.io/github/escalopa/fingo/branch/main/graph/badge.svg?token=1D11YHAJN8)](https://codecov.io/github/escalopa/fingo)\n\n[![GitHub issues](https://img.shields.io/github/issues/escalopa/fingo.svg)](https://github.com/escalopa/fingo/issues)\n[![GitHub pull requests](https://img.shields.io/github/issues-pr/escalopa/fingo.svg)](https://github.com/escalopa/fingo/pulls)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\n[![Run in Postman](https://run.pstmn.io/button.svg)](https://www.postman.com/lively-sunset-417832/workspace/public/collection/64306c0fe41234ba40c9dcec)\n\nfingo is a scalable, robust payment system that allows users to send money to each other. fingo users can issue accounts with more than one currency and many payments cards.\n\nCurrently, fingo supports 5 currencies: USD, EUR, GBP, EGP, RUB.\n\n## Table of Contents 📑\n\n  - [Tech Stack](#tech-stack-) 🛠\n  - [Architecture](#architecture-) 🏘\n  - [How to run](#how-to-run-) 🏃‍♂️\n\n## Tech Stack 🛠\n\nfingo is built using scalable, reliable, robust and secure technologies which are listed below. 🔥\n\n- Language: [Go](https://golang.org/)\n- Communication: [gRPC](https://grpc.io/), [RabbitMQ](https://www.rabbitmq.com/)\n- Database: [PostgreSQL](https://www.postgresql.org/), [Redis](https://redis.io/), [CockroachDB](https://www.cockroachlabs.com/)\n- Deployment: [Docker](https://www.docker.com/), [Docker Compose](https://docs.docker.com/compose/), [Docker Swarm](https://docs.docker.com/engine/swarm/)\n- Monitoring: [OpenTelemetry](https://opentelemetry.io/), [Jaeger](https://www.jaegertracing.io/)\n- Security: [Paseto](https://paseto.io/), [SSL/TLS](https://en.wikipedia.org/wiki/Transport_Layer_Security)\n- External API: [Courier](https://www.courier.com/)\n\n\n## Architecture 🏗\n\nCommunication between all the microservices is done using `grpc` or `message brokers` to\nensure that the system is scalable reliable and fault tolerant.\n\nIn fingo we have the following services, Where each one is responsible for a specific set of tasks,\nClick on each service to see its documentation and how it works.\n\n1. [**Auth**](./auth) (SignUp, SignIn, SignOut, Renewing tokens)\n2. [**Token**](./token) (Validating access tokens)\n3. [**Wallet**](./wallet) (Create wallets, accounts, cards  and manage payments)\n4. [**Contact**](./contact) (Sending emails)\n\nEach service is built using the [Hexagonal Architecture](https://en.wikipedia.org/wiki/Hexagonal_architecture_(software)) pattern.\nThis allows us to have a clean separation between the business logic and the infrastructure. This way we can easily swap the infrastructure without affecting the business logic.\n\nAll services trace their requests using [OpenTelemetry](https://opentelemetry.io/) and send them to [Jaeger](https://www.jaegertracing.io/) for monitoring and debugging besides Jaeger UI for visualization.\n\nTo make the system more robust, All microservices have a graceful shutdown function called on termination signal. For more about it [see](./pkg/global/shutdown.go).\n\n### Components\n![Diagram](./docs/fingo.png)\n\n## How to run ⚙️\n\n### Prerequisites\n\n1. [Git](https://git-scm.com/book/en/v2/Getting-Started-Installing-Git)\n2. [Docker](https://docs.docker.com/get-docker/)\n3. [Docker Compose](https://docs.docker.com/compose/install/)\n\n### Running the project\n\nFirst clone the project\n\n```bash\ngit clone github.com/escalopa/fingo \u0026\u0026 cd fingo\n```\n\n### Docker Compose\n\nCopy env vars, Env vars are used by docker to start the application\n\n```bash\ncp .env.example .env\ncp .rabbitmq.env.example .rabbitmq.env\ncp .db.env.example .db.env\n```\n\nRun the project\n\n```bash\ndocker compose -f ./stack.yaml up\n```\n\nAfter the project is up and running you can access the following interfaces for monitoring and debugging\n\n- [JAEGER](http://localhost:16686)\n- [COCKROACHDB](http://localhost:8080)\n- [RABBITMQ](http://localhost:15672)\n\nTo interact with the services you can use the [Postman Collection](https://www.postman.com/lively-sunset-417832/workspace/public/collection/64306c0fe41234ba40c9dcec)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescalopa%2Ffingo","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fescalopa%2Ffingo","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fescalopa%2Ffingo/lists"}