Modern microservice for guest check and time recording, built with Go, REST, gRPC, Kafka, and Kubernetes.
Fast, scalable, and cloud-native solution for hospitality and retail environments.
Get Started »
·
Report Bug
·
Request Feature
Guest Check is a cloud-native microservice designed for fast, reliable, and scalable guest check and time recording operations. It provides a robust API for managing guest checks, items, and payments, supporting both REST and gRPC protocols, and integrates seamlessly with Kafka for event-driven architectures.
- Use case: Ideal for restaurants, hotels, and retail environments needing modern, distributed guest check management.
- Why Guest Check?
- Cloud-native, scalable, and production-ready
- Built with Go for performance and reliability
- Easy integration via REST, gRPC, and Kafka
- Ready for Docker and Kubernetes deployments
- Full CRUD for guest checks and items
- RESTful API and gRPC support
- Event-driven with Kafka (consume and produce)
- PostgreSQL and MongoDB support via GORM
- OpenAPI/Swagger documentation
- Cloud-native: Docker & Kubernetes ready
- Secure: API key authentication
- Extensible and easy to contribute
- Language: Go (Golang)
- Frameworks: Fiber (REST), Cobra (CLI), GORM (ORM)
- Messaging: Kafka (Confluent)
- API: REST (Fiber), gRPC
- Database: PostgreSQL, MongoDB
- Containerization: Docker, Docker Compose
- Orchestration: Kubernetes (k8s)
- Docs: Swagger/OpenAPI
# Clone the repository
$ git clone https://github.com/patricksferraz/pinned-guest-check.git
$ cd pinned-guest-check
# Copy and edit environment variables
$ cp .env.example .env
# Start all services
$ make up
# Run tests
$ make gtest- Fill in
k8s/.envusingk8s/.env.example. - Create secrets:
kubectl create secret generic guest-check-secret --from-env-file k8s/.env
- (Optional) Create Docker registry secret:
kubectl create secret docker-registry regsecret \ --docker-server=$DOCKER_REGISTRY_SERVER \ --docker-username=$DOCKER_USER \ --docker-password=$DOCKER_PASSWORD \ --docker-email=$DOCKER_EMAIL
- Deploy all resources:
kubectl apply -f ./k8s
POST /guest-checks— Create a new guest checkGET /guest-checks— List/search guest checksGET /guest-checks/{guest_check_id}— Get guest check by IDPOST /guest-checks/{guest_check_id}/wait-payment— Mark as waiting paymentPOST /guest-checks/{guest_check_id}/cancel— Cancel guest checkPOST /guest-checks/{guest_check_id}/pay— Pay guest checkPOST /guest-checks/{guest_check_id}/items— Add item to guest checkGET /guest-checks/{guest_check_id}/items/{item_id}— Get item detailsPOST /guest-checks/{guest_check_id}/items/{item_id}/cancel— Cancel itemPOST /guest-checks/{guest_check_id}/items/{item_id}/prepare— Mark item as preparingPOST /guest-checks/{guest_check_id}/items/{item_id}/ready— Mark item as readyPOST /guest-checks/{guest_check_id}/items/{item_id}/forward— Forward itemPOST /guest-checks/{guest_check_id}/items/{item_id}/deliver— Deliver item
Full Swagger docs available at
/api/v1/swagger/index.html
OPEN_GUEST_CHECK— Open a new guest checkNEW_GUEST— Register a new guestNEW_PLACE— Register a new placeNEW_EMPLOYEE— Register a new employeeNEW_MENU_ITEM— Register a new menu itemUPDATE_MENU_ITEM— Update menu item
Contributions are what make the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated!
- Fork the repository
- Create your feature branch (
git checkout -b feature/AmazingFeature) - Commit your changes (
git commit -m 'Add some AmazingFeature') - Push to the branch (
git push origin feature/AmazingFeature) - Open a Pull Request
- Project Link: https://github.com/patricksferraz/pinned-guest-check
Guest check, time recording, microservice, Go, Golang, REST API, gRPC, Kafka, Kubernetes, Docker, hospitality, retail, open source, cloud-native, scalable, event-driven, POS, restaurant, hotel, guest management, order management, payment, API, backend, distributed systems, openapi, swagger, fiber, gorm, cobra, postgres, mongodb, devops, CI/CD, modern architecture, best practices.