{"id":24362111,"url":"https://github.com/hesammosaffa/simple_bank","last_synced_at":"2026-04-13T19:31:39.475Z","repository":{"id":272984157,"uuid":"918357276","full_name":"hesammosaffa/simple_bank","owner":"hesammosaffa","description":"SimpleBank: A backend web service for managing bank accounts, handling transactions, and processing money transfers. Built with Golang, PostgreSQL, and Docker, featuring secure APIs, background processing, and deployment to Kubernetes. 🚀","archived":false,"fork":false,"pushed_at":"2025-01-20T20:46:27.000Z","size":36,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"developer","last_synced_at":"2025-03-12T09:16:02.164Z","etag":null,"topics":["backend","banking","docker","github-actions","golang","grpc","jwt","kubernetes","paseto","postgresql","redis","rest-ap","transactions"],"latest_commit_sha":null,"homepage":"","language":"Makefile","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/hesammosaffa.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":"2025-01-17T19:03:57.000Z","updated_at":"2025-01-20T20:46:29.000Z","dependencies_parsed_at":"2025-01-17T21:29:35.801Z","dependency_job_id":null,"html_url":"https://github.com/hesammosaffa/simple_bank","commit_stats":null,"previous_names":["hesammosaffa/simple_bank"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/hesammosaffa/simple_bank","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesammosaffa%2Fsimple_bank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesammosaffa%2Fsimple_bank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesammosaffa%2Fsimple_bank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesammosaffa%2Fsimple_bank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/hesammosaffa","download_url":"https://codeload.github.com/hesammosaffa/simple_bank/tar.gz/refs/heads/developer","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/hesammosaffa%2Fsimple_bank/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31768635,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-13T15:25:13.801Z","status":"ssl_error","status_checked_at":"2026-04-13T15:25:09.162Z","response_time":93,"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":["backend","banking","docker","github-actions","golang","grpc","jwt","kubernetes","paseto","postgresql","redis","rest-ap","transactions"],"created_at":"2025-01-18T22:49:14.917Z","updated_at":"2026-04-13T19:31:39.455Z","avatar_url":"https://github.com/hesammosaffa.png","language":"Makefile","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Simple Bank Backend Service\n\nThis project is a backend system for a simple banking application. The system is designed and developed using **Golang**, **PostgreSQL**, **Docker**, and **Kubernetes**, with a focus on scalability, security, and reliability. It provides RESTful APIs for managing bank accounts, recording transactions, and facilitating secure money transfers.\n\n## Key Features\n\n1. **Account Management**:\n   - Create and manage bank accounts with attributes such as owner’s name, balance, and currency.\n   - Maintain accurate records of all account balance changes.\n\n2. **Transactional Integrity**:\n   - Perform secure money transfers between accounts using database transactions.\n   - Ensure atomicity, so either all updates succeed or none are applied.\n\n3. **API Development**:\n   - Build RESTful APIs using the **Gin framework**, secured with **JWT** and **PASETO** tokens.\n   - Include robust error handling and user authentication.\n\n4. **Testing and Coverage**:\n   - Write comprehensive unit tests with mocking for high coverage.\n   - Use interfaces to create a more modular and testable codebase.\n\n5. **Asynchronous Processing**:\n   - Implement background workers for processing tasks such as sending emails.\n   - Use **Redis** and **Asynq** as the message queue system.\n\n6. **Deployment and Automation**:\n   - Create a minimal **Docker** image for deployment.\n   - Use **Docker Compose** for local development and set up a Kubernetes cluster on AWS for production.\n   - Automate CI/CD pipelines with **GitHub Actions** for building and deploying the application.\n\n7. **gRPC Integration**:\n   - Extend the service with **gRPC APIs** and **gRPC Gateway** for dual support of HTTP and gRPC requests.\n   - Embed Swagger documentation for easy API reference.\n\n8. **Domain and TLS Configuration**:\n   - Register and configure a domain name.\n   - Enable HTTPS with **Let's Encrypt** for secure traffic routing, including automatic certificate renewal.\n\n9. **Scalability and Security**:\n   - Implement advanced isolation levels to avoid deadlocks and ensure database consistency.\n   - Use structured logging for better observability and maintainability.\n\n## Tools and Technologies\n\n- **Programming Language**: Go (Golang)\n- **Database**: PostgreSQL\n- **Frameworks**: Gin, gRPC\n- **Containerization**: Docker, Kubernetes\n- **Message Queue**: Redis, Asynq\n- **CI/CD**: GitHub Actions\n- **Others**: Swagger, Let’s Encrypt\n\n## How It Works\n\n1. **Account Creation**: Allows users to create accounts and manage their details.\n2. **Transaction Logging**: Tracks every deposit, withdrawal, or transfer operation.\n3. **Money Transfers**: Processes inter-account transfers securely within a single transaction to ensure data consistency.\n\n## Setup and Deployment\n\n1. Clone the repository:  \n   ```bash\n   git clone h# Simple Bank Backend Service\n\nThis project is a backend system for a simple banking application. The system is designed and developed using **Golang**, **PostgreSQL**, **Docker**, and **Kubernetes**, with a focus on scalability, security, and reliability. It provides RESTful APIs for managing bank accounts, recording transactions, and facilitating secure money transfers.\n\n## Key Features\n\n1. **Account Management**:\n   - Create and manage bank accounts with attributes such as owner’s name, balance, and currency.\n   - Maintain accurate records of all account balance changes.\n\n2. **Transactional Integrity**:\n   - Perform secure money transfers between accounts using database transactions.\n   - Ensure atomicity, so either all updates succeed or none are applied.\n\n3. **API Development**:\n   - Build RESTful APIs using the **Gin framework**, secured with **JWT** and **PASETO** tokens.\n   - Include robust error handling and user authentication.\n\n4. **Testing and Coverage**:\n   - Write comprehensive unit tests with mocking for high coverage.\n   - Use interfaces to create a more modular and testable codebase.\n\n5. **Asynchronous Processing**:\n   - Implement background workers for processing tasks such as sending emails.\n   - Use **Redis** and **Asynq** as the message queue system.\n\n6. **Deployment and Automation**:\n   - Create a minimal **Docker** image for deployment.\n   - Use **Docker Compose** for local development and set up a Kubernetes cluster on AWS for production.\n   - Automate CI/CD pipelines with **GitHub Actions** for building and deploying the application.\n\n7. **gRPC Integration**:\n   - Extend the service with **gRPC APIs** and **gRPC Gateway** for dual support of HTTP and gRPC requests.\n   - Embed Swagger documentation for easy API reference.\n\n8. **Domain and TLS Configuration**:\n   - Register and configure a domain name.\n   - Enable HTTPS with **Let's Encrypt** for secure traffic routing, including automatic certificate renewal.\n\n9. **Scalability and Security**:\n   - Implement advanced isolation levels to avoid deadlocks and ensure database consistency.\n   - Use structured logging for better observability and maintainability.\n\n## Tools and Technologies\n\n- **Programming Language**: Go (Golang)\n- **Database**: PostgreSQL\n- **Frameworks**: Gin, gRPC\n- **Containerization**: Docker, Kubernetes\n- **Message Queue**: Redis, Asynq\n- **CI/CD**: GitHub Actions\n- **Others**: Swagger, Let’s Encrypt\n\n## How It Works\n\n1. **Account Creation**: Allows users to create accounts and manage their details.\n2. **Transaction Logging**: Tracks every deposit, withdrawal, or transfer operation.\n3. **Money Transfers**: Processes inter-account transfers securely within a single transaction to ensure data consistency.\n\n## Setup and Deployment\n\n1. Clone the repository:  \n   ```bash\n   git clone https://https://github.com/hesammosaffa/simple_bank\n   cd simple-bank\n   ```\n2. Start the application locally using Docker Compose:\n   ```bash\n   docker-compose up\n   ```\n3. Access the APIs locally via the provided Swagger documentation.\n\n## Roadmap\n\nFuture enhancements may include:\n- Integration with external payment gateways.\n- Additional reports and analytics features.\n- Enhanced monitoring and alerting systems.\n\n## Contribution\n\nContributions are welcome! Please fork the repository, make your changes, and submit a pull request. For major changes, open an issue first to discuss what you would like to change.\n\n   cd simple-bank\n   ```\n2. Start the application locally using Docker Compose:\n   ```bash\n   docker-compose up\n   ```\n3. Access the APIs locally via the provided Swagger documentation.\n\n## Roadmap\n\nFuture enhancements may include:\n- Integration with external payment gateways.\n- Additional reports and analytics features.\n- Enhanced monitoring and alerting systems.\n\n## Contribution\n\nContributions are welcome! Please fork the repository, make your changes, and submit a pull request. For major changes, open an issue first to discuss what you would like to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhesammosaffa%2Fsimple_bank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fhesammosaffa%2Fsimple_bank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fhesammosaffa%2Fsimple_bank/lists"}