You are going to design and implement a large-scale backend application inspired by modern platforms such as online taxi booking, food ordering, and logistics systems.
The project is named Snapp and is divided into three main independent applications (microservice-based programs):
- Snapp β Taxi booking, parcel delivery, price estimation, and related services.
- Map β Location, routing, distance, and travel time calculation.
- Food β Online food ordering and restaurant management.
Each of these applications should follow the principles of software engineering such as:
- OOP (Object-Oriented Programming)
- SOLID principles
- DRY (Donβt Repeat Yourself)
- Design Patterns (where applicable)
All code should be managed under a GitHub Organization called snapp-map. Each main program will have a hub repository (e.g., snapp-hub, map-hub, food-hub). Inside these hubs, the actual microservices will be developed as independent repositories and linked as submodules.
- Each microservice should be independently deployable and self-contained.
- Services should communicate through standard protocols (HTTP REST, gRPC, message brokers, etc.).
- Each service should have its own database (if needed).
- The entire project must be designed as if it were to be used in production (professional level).
In addition to the three main applications, a few smaller supporting programs will be implemented for simulation purposes, such as:
- Bank service (for payments and transactions)
- Email service (for user notifications)
These will act like external systems but will be locally implemented in simplified form.
- The user should register only once.
- A third-party authentication service will handle login, registration, and authorization for all three main programs.
- Each program (Snapp, Map, Food) should use this authentication service instead of implementing its own.
The project will be divided into multiple phases, so that functionality grows step by step.
This statement will be completed gradually. After the list, you can have an overview of the different parts.
- snapp
- map
- food service
- extra services
- other
- seggestions for tools and frameworks
- collaboration workflow π€
- Focus only on the Snapp application.
- Users can register, log in, and request a ride or delivery.
- Map outputs (route, ETA, price) should be mocked with random but standard outputs.
- Microservices for Snapp must be independent and well-structured.
- Develop the Map application.
- Replace mocked data in Snapp with real services from Map (distance, ETA, pricing).
- Ensure Snapp and Map communicate correctly.
- Develop the Food application.
- Restaurants register and manage menus.
- Customers order food.
- Deliveries are handled via Snapp.
- Add banking service simulation (transaction processing).
- Add email service simulation (notifications, confirmations).
- Ensure all three programs integrate with these external services.
- Deploy all services as microservices with Docker.
- Document APIs with OpenAPI/Swagger.
- Ensure CI/CD pipelines for GitHub repositories.
- Add optional features: analytics, monitoring, logging.