Ride Sharing App is a Go microservices backend for an Uber-style system. It is structured as a distributed application rather than a single API: services communicate over gRPC and RabbitMQ, real-time flows use WebSockets, and the local platform tooling is built around Docker, Tilt, and Kubernetes.
- service decomposition across gateway, trip, driver, and payment domains
- gRPC and protobuf contracts between services
- RabbitMQ-backed event flow
- WebSocket support for real-time updates
- Kubernetes-oriented local and production deployment paths
- shared infrastructure and contracts across multiple services
services/contains the backend servicesproto/contains protobuf contractsshared/contains cross-service helpers and shared codeinfra/contains deployment and platform materialweb/contains the frontend clientdocs/andassets/contain supporting documentation and visuals
The project is designed to exercise the hard parts of distributed backend work:
- service boundaries instead of a monolith
- asynchronous communication instead of only direct request-response flows
- real-time communication paths alongside backend services
- deployment and observability concerns as part of the system, not afterthoughts
The trip service, for example, already follows a layered structure with domain, service, infrastructure, gRPC, repository, and event-handling concerns separated in code.
- Go
- Docker
- Tilt
- a local Kubernetes cluster such as Minikube or Docker Desktop Kubernetes
tilt upkubectl get podsThis repo exists as a stronger public proof point for backend and distributed-systems work than a generic learning archive. The goal is to show concrete system design, service interaction, messaging, deployment structure, and Go implementation in one place.