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 in Go.
It uses Gin as the HTTP framework and PostgreSQL as the database with pgx as the driver and Squirrel as the query builder. It also utilizes Redis as the caching layer with go-redis as the client.
This project idea was inspired by the Ide Project untuk Upgrade Portfolio Backend Engineer video on YouTube by Asdita Prasetya, which provided valuable guidance and inspiration for its development.
-
If you do not use devcontainer, ensure you have Go 1.23 or higher and Task installed on your machine:
go version && task --version
-
Create a copy of the
.env.example
file and rename it to.env
:cp .env.example .env
Update configuration values as needed.
-
Install all dependencies, run docker compose, create database schema, and run database migrations:
task
-
Run the project in development mode:
task dev
For database schema documentation, see here, powered by 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 with gin-swagger middleware.
Developers interested in contributing to Go POS project can refer to the CONTRIBUTING file for detailed guidelines and instructions on how to contribute.
Go POS project is licensed under the MIT License, providing an open and permissive licensing approach for further development and usage.
- Hexagonal Architecture by Alistair Cockburn
- Ready for changes with Hexagonal Architecture by Netflix Technology Blog
- Hexagonal Architecture in Go by Matias Varela