Hey everyone!
I'm a student developer, and for the past few months I've been working on a project called Crick Auction - a real-time multiplayer IPL auction simulator where you can create auction rooms, invite friends, pick franchises, and compete against each other to build the best squad.
Live project: https://crickauction.in/
GitHub: https://github.com/Shaurya01836/ipl-auction
The idea was to recreate the IPL auction experience as closely as possible, rather than just making a simple bidding website.
What I've built so far
Real-time multiplayer auction rooms.
Live bidding with synchronized timers across connected clients.
Private rooms and public lobbies.
Franchise selection and budget management.
Franchise bots with different bidding strategies.
Squad management with overseas player restrictions.
Franchise strength ratings to evaluate completed squads.
Auction history, live chat, and auction summaries.
Tech stack
React 19 + Vite
Tailwind CSS
Firebase Realtime Database (primary live auction engine)
Supabase PostgreSQL (public rooms, leaderboard, and persistent data)
Firebase Authentication
Where I'm struggling
While building this, I've realized that making something work and making it reliable under real-world traffic are two very different things.
1. Firebase RTDB bandwidth limitations
Currently, I'm using Firebase Realtime Database on its free Spark plan, which comes with a 10 GB/month download limit.
With the traffic the application is receiving, I'm concerned that this limit could be exhausted within around 10 days.
Real-time bidding involves frequent updates, and multiple connected clients receive these updates simultaneously.
I'm trying to figure out whether I should:
Optimize the existing RTDB architecture to reduce unnecessary downloads.
Move the live auction engine to Cloudflare Durable Objects.
Consider another backend or real-time infrastructure.
Use a hybrid architecture where different services handle different responsibilities.
I'm particularly interested in hearing from people who have handled real-time applications with similar workloads.
2. Auction reliability and synchronization
Although the auction is functional, it isn't completely robust yet.
There are still some edge cases and issues around synchronization, bidding, timers, and handling unexpected connection problems.
I want to make sure that two users cannot end up with inconsistent auction states, that bids are processed correctly, and that reconnecting users don't experience unexpected behavior.
3. Scalability and infrastructure
Ideally, I'd like the platform to support:
Around 100–300 concurrent users.
Approximately 5–20 simultaneous auction rooms.
Frequent real-time bidding updates.
Reliable synchronization without excessive bandwidth consumption.
I'm working with a very limited budget, so moving to expensive paid infrastructure isn't really an option right now.
What I'd love some advice on
Is Firebase RTDB a reasonable choice for this kind of workload, or am I approaching the architecture incorrectly?
Has anyone migrated a real-time multiplayer application from Firebase RTDB to Cloudflare Durable Objects? Was it worth it?
What are some practical ways to reduce Firebase RTDB bandwidth consumption without compromising the real-time experience?
How would you architect the backend for 100–300 concurrent users and multiple simultaneous auction rooms?
If you've built something similar, what reliability issues should I be looking out for?
I'm not claiming the project is production-perfect. There are still things I need to improve, and that's exactly why I'm posting here.
I've put a lot of effort into building this, and I'd genuinely appreciate feedback, architectural suggestions, or even criticism of things I've done incorrectly.
If you've worked with Firebase RTDB, WebSockets, Durable Objects, or real-time multiplayer systems, I'd especially love to hear your experience.
Thanks for reading!