Home

Awesome

Restaurant App

Open in Gitpod

if you have any questions, please reach me out:

Gitter

Restaurant App is containerized polyglot microservices application that contains projects based on .NET Core, Golang, Java, Xamarin, React, Angular and etc. The project demonstrates how to develop small microservices for larger applications using containers, orchestration, service discovery, gateway, and best practices. You are always welcome to improve code quality and contribute it, if you have any questions or issues don't hesitate to ask in our gitter chat.

To getting started, simply fork this repository. Please refer to CONTRIBUTING.md for contribution guidelines.

Motivation

Architecture overview

The architecture proposes a micro-service oriented architecture implementation with multiple autonomous micro-services (each one owning its own data/db and programming language) and using REST/HTTP as the communication protocol between the client apps, and gRPC for the backend communication in order to support data update propagation across multiple services.

List of micro-services and infrastructure components

ServiceDescriptionBuild StatusEndpoints
1.Identity API (.NET Core + IdentityServer4)Identity management service, powered by OAuth2 and OpenID ConnectBuild Statusdev | prod
2.Cart API (Golang + Redis)Manages customer basket in order to keep items on in-memory cache using redisBuild Statusdev | prod
3.Catalog API (Rust + Rocket, PostgreSQL)Manages data for showing restaurant menuBuild Statusdev | prod
4.Order API (Java + Quarkus + Native Build)Manages customer ordersBuild Statusdev | prod
5.Ceckout API (Node.js + Express)Responsible for checkout functionalityBuild Statusdev | prod
6.Payment API (Golang)Fake payment API (Payment service abstracting PSP)Build Statusdev | prod
6.Web App (Typescript + Next.js ❤️ )Frontend applicationBuild Statusdev | prod

Web App

Web app developed using Next.js with SSR <img width="1828" alt="image" src="https://github.com/chayxana/Restaurant-App/assets/8397056/590a5fe5-58c6-425f-934c-54456a9257bf">

Mobile app

Unfortunately I no longer be able to maintain Xamarin(mobile) part

MobileBuild statusRelease
AndroidBuild StatusDownload Android
iOSBuild StatusDownload iOS

Mobile app developed by Xamarin.Forms and supports iOS and Android, here you can find how to develop cross-platform mobile apps using C#. The example shows how to develop beautiful user interfaces using Xamarin.Forms and how to manage your code with Clean Architecture on the mobile side and get a clean, maintainable, testable code.

<img src="art/2.png" width="210"/> <img src="art/3.png" width="210"/>

Contributors

Thank you to all the people who have already contributed to our project! <a href="/graphs/contributors"><img src="https://opencollective.com/restaurant-app/contributors.svg?width=890" /></a>