I'd like to ask for your feedback on my side project - a full-stack simulation of a ride-hailing app such as Uber or Lyft.
App:Â
Blog:Â
A bit of background first. I've been wanting to publish a personal full-stack project for a while. These were my main reasons:
- I wanted a platform to explore concepts and tools I don't get to work with in my day job, helping me accelerate my learning.
- I've wanted to break into big tech and thought this project could help me stand out among many applicants.
- I enjoy writing and wanted to get better at it.
Why did I choose a simulation of the Uber/Lyft app? I always found something very attractive about these apps - they're visually appealing and dynamic, with colossal architectures behind them. I thought it would be very cool to re-implement some aspects of such an app. I have also been reading the Uber engineering blog and got a glimpse of the complexity these companies are dealing with.
My final goal with this app was to have an animated map with cars picking up customers, driving them across the map and dropping them off at their destinations. Customers would post ride requests and the system would match them with the nearest drivers. The simulation would run on the backend, and the frontend map would show the action in real-time.
I started working on the project last autumn. I've spent around 300 hours working on it and you can see the result in the links above.
My ask
I'd love to get your feedback to improve or extend this app and my blog, keeping in mind my objectives:
- I plan to apply to big tech companies this summer, and I'd like this project to help me with my applications.
- The project targets both recruiters and hiring managers. With recruiters, the goal is to pass the initial screening and get me to the interview stage (of course, I'll also be trying to secure referrals, but I might not always succeed). With hiring managers, this project might help me score extra points in my final evaluation.
- I might be applying to companies such as Uber or Bolt, but this project is not supposed to impress just the ride-hailing companies.
- I prefer not to put much more time into the project at the moment, as my focus right now has to be on the coding interview prep.
Possible additions or improvements include:
- Splitting the system across multiple machines (perhaps 3), making it truly distributed.
- Adding various components used in large-scale systems such as load-balancer, rate limiter, or message queues. Indeed, these components are not actually needed for the app to function. But by doing so, I could demonstrate my ability to work with them (albeit not necessarily demonstrating deep expertise).
- Adding comprehensive documentation with system diagrams and explaining the choices I made.
- More rigorous testing by adding integration tests (right now, I only have unit tests).
As for my previous background - I've been an engineer for ~4.5 years, most of my experience is from a small startup (series B). I consider myself a full-stack engineer but going forward, I aim to specialize more in the backend. Therefore, the project should strongly communicate my backend skills. For my next role, I also prefer backend positions to full-stack ones.
Recently I watched the great masterclass from Rahul and Alex on side projects. It made me realize that while my project might be interesting from a technical perspective, it has no users. In fact, this app doesn't allow any user interaction by nature. However, what I'm lacking in terms of users, I'm hoping to make up with the degree of technical complexity. Please also share your views on this aspect.
Many thanks if you've read this long post to the end. I'll be very grateful for any tips on how to make this project more appealing 🙏🏼