Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bagashiz/go-pos
Simple RESTful Point of Sale (POS) Service API written in Go using Gin web framework, PostgreSQL database, and Redis cache. Proof of concept of implementing Hexagonal Architecture in Go.
https://github.com/bagashiz/go-pos
gin go golang hexagonal-architecture pgx point-of-sales postgresql redis rest-api
Last synced: 4 days ago
JSON representation
Simple RESTful Point of Sale (POS) Service API written in Go using Gin web framework, PostgreSQL database, and Redis cache. Proof of concept of implementing Hexagonal Architecture in Go.
- Host: GitHub
- URL: https://github.com/bagashiz/go-pos
- Owner: bagashiz
- License: mit
- Created: 2023-07-09T05:59:52.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-11-11T18:12:12.000Z (about 1 month ago)
- Last Synced: 2024-11-29T08:58:33.679Z (23 days ago)
- Topics: gin, go, golang, hexagonal-architecture, pgx, point-of-sales, postgresql, redis, rest-api
- Language: Go
- Homepage: https://gopos.bagashiz.xyz/docs/index.html
- Size: 490 KB
- Stars: 226
- Watchers: 5
- Forks: 37
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
Awesome Lists containing this project
README
# Go POS
## Description
A simple RESTful Point of Sale (POS) web service written in Go programming language. This project is a part of my learning process in understanding [Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/) in Go.
It uses [Gin](https://gin-gonic.com/) as the HTTP framework and [PostgreSQL](https://www.postgresql.org/) as the database with [pgx](https://github.com/jackc/pgx/) as the driver and [Squirrel](https://github.com/Masterminds/squirrel/) as the query builder. It also utilizes [Redis](https://redis.io/) as the caching layer with [go-redis](https://github.com/redis/go-redis/) as the client.
This project idea was inspired by the [Ide Project untuk Upgrade Portfolio Backend Engineer](https://www.youtube.com/watch?v=uAR1kjyeDtg) video on YouTube by [Asdita Prasetya](https://www.youtube.com/@asditaprasetya), which provided valuable guidance and inspiration for its development.
## Getting Started
1. If you do not use devcontainer, ensure you have [Go](https://go.dev/dl/) 1.23 or higher and [Task](https://taskfile.dev/installation/) installed on your machine:
```bash
go version && task --version
```2. Create a copy of the `.env.example` file and rename it to `.env`:
```bash
cp .env.example .env
```Update configuration values as needed.
3. Install all dependencies, run docker compose, create database schema, and run database migrations:
```bash
task
```4. Run the project in development mode:
```bash
task dev
```## Documentation
For database schema documentation, see [here](https://dbdocs.io/bagashiz/Go-POS/), powered by [dbdocs.io](https://dbdocs.io/).
API documentation can be found in `docs/` directory. To view the documentation, open the browser and go to `http://localhost:8080/docs/index.html`. The documentation is generated using [swaggo](https://github.com/swaggo/swag/) with [gin-swagger](https://github.com/swaggo/gin-swagger/) middleware.
## Contributing
Developers interested in contributing to Go POS project can refer to the [CONTRIBUTING](CONTRIBUTING.md) file for detailed guidelines and instructions on how to contribute.
## License
Go POS project is licensed under the [MIT License](LICENSE), providing an open and permissive licensing approach for further development and usage.
## Learning References
- [Hexagonal Architecture](https://alistair.cockburn.us/hexagonal-architecture/) by Alistair Cockburn
- [Ready for changes with Hexagonal Architecture](https://netflixtechblog.com/ready-for-changes-with-hexagonal-architecture-b315ec967749) by Netflix Technology Blog
- [Hexagonal Architecture in Go](https://medium.com/@matiasvarela/hexagonal-architecture-in-go-cfd4e436faa3) by Matias Varela