A simple app that helps to share, learn, innovative with recipes at home!
Here is a GIF of how the app looks like:
One of the key motivations to build this app was to experiment with different technologies. The technologies used to build this app are explained in the following sections:
- Written using protobuf (proto3 syntax)
- Exposes the following types of gRPC endpoints:
- unary messages
- server-streaming messages
- client-streaming messages
- bidirectional streaming messages
- Written in Golang (v.1.14)
- Implements GRPC server
- Written in Dart (v2.7.2)
- Using the Flutter framework
- Compiled for multiple platforms
- Android
- iOS
- Web-app (partial support)
- MacOS (partial support)
- HTTP-GRPC proxy implemented using gRPC-Gateway
- Published Swagger UI on top of HTTP-GRPC proxy
- Prometheus to collect metrics
- Grafana to visualize metrics
- Created as a docker image
- Tagged docker image hosted on dockerhub
- Running in an elastic Kubernetes cluster
- Hosted on Azure Kubernetes Service
- gRPC client written in Node.js
- gRPC client written in Golang
- Android apk available on thhe releases page: https://github.com/kaushikchaubal/home-recipes/releases/tag/0.0.1
The final architecture of the designed system is as seen here:
- As part of the implementation stage, Miro was used as the digital whiteboard of choice
- The miro board associated with home-recipes can be found here: https://miro.com/app/board/o9J_ktw-EKc=/
- You will find details of multiple things including architecture design, the API definitions and UI mocks details
- All different components are documented in their respective README files
- The list of available README files are here:
- Server: https://github.com/kaushikchaubal/home-recipes/blob/master/server/README.md
- Client: https://github.com/kaushikchaubal/home-recipes/blob/master/client/home_recipes_app/README.md
- Middleware: https://github.com/kaushikchaubal/home-recipes/blob/master/middleware/README.md
- Node.js test client: https://github.com/kaushikchaubal/home-recipes/blob/master/client/test-client-node/README.md
- Golang test client: https://github.com/kaushikchaubal/home-recipes/blob/master/client/test-client-golang/README.md
- Deployment: https://github.com/kaushikchaubal/home-recipes/blob/master/deploy/README.md