Welcome to Burgers Joint!
What is it? Everyone creates a bookstore as an example of given technology, so I decided to make a service that accepts daily orders from a burgers place that can be used inside an office.
It’s basically a simple REST micro-service example based on Java 17 and kotlin technology stack. The code base aims to mostly use functional approach. In future I might add a presentation layer using React.
Following technologies used:
- Ktor – as server layer
- Kotlin exposed with HikariCp and PostgreSQL – as database layer
- Redis with Redisson – used as a cache layer
- RabbitMq – used for notifications
- Docker with Docker-compose and Jib – user for containers and deployment
- RestAssured with H2 – as testing tools
- ArrowKt – as functional programming library
- apibluepint – as documentation tool
- prometheus with grafana – as monitoring tools
- SonarQube – as static code analysis tool
How it works?
- Service exposes REST API:
- Accepts burger orders
- Returns current menu
- Returns list of current orders
- Allows to change order state (payment status)
- The burger orders are accepted each day between 7 am and 11 am
- The menu is read from external service each day as a first request for the menu occurres – then it is cached in redis with expiration date
- There is no authentication layer, each user can update other users order payment status
- At the end of the orders time window the message notification is sent on rabbitmq with full orders list