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