{"id":16744125,"url":"https://github.com/scortier/gopherbank","last_synced_at":"2026-04-18T14:31:53.547Z","repository":{"id":195388052,"uuid":"690897665","full_name":"scortier/gopherbank","owner":"scortier","description":"Comprehensive Backend Web Service For Banking Operation.","archived":false,"fork":false,"pushed_at":"2024-03-26T16:33:26.000Z","size":3913,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-22T14:08:29.950Z","etag":null,"topics":["docker","github-actions","golang","postgresql","sqlc"],"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/scortier.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-09-13T05:29:29.000Z","updated_at":"2023-10-03T14:03:55.000Z","dependencies_parsed_at":null,"dependency_job_id":"97ab98d1-abdf-4d3c-9a26-8885cd1bcbe6","html_url":"https://github.com/scortier/gopherbank","commit_stats":null,"previous_names":["scortier/gopherbank"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scortier%2Fgopherbank","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scortier%2Fgopherbank/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scortier%2Fgopherbank/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scortier%2Fgopherbank/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scortier","download_url":"https://codeload.github.com/scortier/gopherbank/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243809883,"owners_count":20351407,"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":["docker","github-actions","golang","postgresql","sqlc"],"created_at":"2024-10-13T01:42:28.938Z","updated_at":"2026-04-18T14:31:48.512Z","avatar_url":"https://github.com/scortier.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GopherBank: Backend Web Service for Banking Operations\n\n## Introduction\n\nWelcome to GopherBank, a comprehensive backend web service developed in Golang. This project provides APIs for managing bank accounts, recording balance changes, and facilitating money transfers between accounts.\n\nNote: Development is in progress...\n\n**Tech Stack and Libraries Used:**\n\n- **Programming Language**: Golang\n- **Web Framework**: Gin\n- **Database**: PostgreSQL\n- **Database Migration Tool**: [golang-migrate](https://github.com/golang-migrate/migrate)\n- **Containerization**: Docker\n- **Testing**: Unit, Mocking\n- **Token-Based Authentication**: PASETO and JWT\n- **Password Hashing**: Bcrypt\n- **Version Control**: Git\n- **Continuous Integration**: GitHub Actions\n- **Database Visualization**: TablePlus\n- **Database Compiler**: [Sqlc](https://github.com/sqlc-dev/sqlc)\n\n## Features\n\n### Database Management\n\n- **Schema Design**: Design and generate SQL schema using dbdiagram.io.\n- **Containerized Database Setup**: Set up a database using Docker and Postgres for efficient schema creation.\n- **Migration Handling**: Write and run migration scripts in Golang for seamless database updates.\n- **CRUD Code Generation**: Generate CRUD Golang code from SQL and compare different approaches.\n- **Transaction Management**: Implement clean and effective database transactions in Golang.\n- **Deadlock Handling**: Address deadlock scenarios and implement strategies to avoid them.\n- **Transaction Isolation Understanding**: Gain a deep understanding of transaction isolation levels and read phenomena in databases.\n\n### API Development\n\n- **RESTful API Implementation**: Develop a RESTful HTTP API using Gin in Go.\n- **Configuration Management**: Load configuration from files and environment variables using Viper.\n- **Money Transfer API**: Implement the money transfer API with a custom parameter validator.\n- **User Management Features**: Add users table with unique and foreign key constraints.\n- **Error Handling**: Implement robust error handling mechanisms for database errors.\n- **Password Security**: Enhance security by securely storing passwords using Bcrypt.\n- **Token-Based Authentication**: Explore the advantages of PASETO over JWT for secure token-based authentication.\n- **Token Management and Verification**: Learn to create and verify JWT \u0026 PASETO tokens effectively.\n- **User Authentication API**: Implement a login user API that returns PASETO or JWT access tokens.\n- **Middleware and Authorization**: Implement authentication middleware and define authorization rules effectively.\n\n### Testing\n\n- **Unit Testing**: Write comprehensive unit tests for CRUD operations and APIs in Golang.\n- **Effective Mocking**: Utilize mocking techniques for comprehensive API testing in Go.\n\n## Contributing\n\nWe welcome contributions to GopherBank! If you'd like to contribute, please follow these steps:\n\n1. Fork the repository.\n2. Clone the forked repository to your local machine.\n3. Create a new branch for your feature: `git checkout -b feature-name`.\n4. Make the necessary changes and commit them: `git commit -m 'Add some feature'`.\n5. Push to the branch: `git push origin feature-name`.\n6. Submit a pull request to the `main` branch of the original repository.\n\n\u003c!-- For more details, see our [Contribution Guidelines](CONTRIBUTING.md). --\u003e\n\n## Questions and Contact\n\nIf you have any questions or need further assistance, please feel free to reach out:\n\n- Email: onlytoaditya@gmail.com\n- Issue Tracker: [GitHub Issues](https://github.com/scortier/gopherbank/issues)\n\n## License\n\nThis project is licensed under the [MIT License](LICENSE). Feel free to use, modify, and distribute the code as needed.\n\n---\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscortier%2Fgopherbank","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscortier%2Fgopherbank","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscortier%2Fgopherbank/lists"}