How I built CampusOlx
The journey of designing and shipping a production hyper-local campus marketplace for students.
Why I Built It
Simple. I was tired of seeing waste.
Every April, same story. Seniors pack up, leave behind perfectly good stuff. Juniors buy the same stuff new. No connection between them.
I thought there should be a place where students can sell to students. Only our college. Trusted because everyone uses their college email. No strangers, no delivery hassles, just meet on campus and exchange.
That was the idea.
How I Built It
I'm not some senior developer. Just a student who codes. So I picked things I could learn quickly.
Day 1-2: Auth
Got login working. The main thing was restricting to @sastra.ac.in emails only. Spent hours on this, reading docs, confused. Turned out to be one line in Google OAuth settings. Just restrict domain. Done.
Day 3: Images
Wanted people to upload multiple photos. But campus wifi is slow. If someone tries to upload 5 high-res photos, they'll wait forever and give up.
Found a library that compresses images on the phone before uploading. Took a while to set up but now uploads are fast and images look fine.
Day 4: Chat
This was the hardest part.
Wanted buyers and sellers to talk without exchanging numbers. Building realtime chat is harder than it looks. Messages disappearing. Showing up for wrong people. Not showing up at all.
Stayed up late multiple nights. Eventually got it working with Supabase realtime. When that first message appeared without refreshing the page, I felt like a genius. (I was not a genius. I just finally read the docs properly.)
Day 5: Sell Now, Deliver Later
Seniors are leaving now, but what about stuff they could sell to next semester's juniors? They shouldn't have to wait. Added a calendar feature where you list something today but set a future date when it's actually available.
Freshmen can reserve stuff months in advance. Seniors don't haul things home. Works well.
Day 6: AI Descriptions
Writing product descriptions is boring. Nobody wants to type "blue lamp in good condition, works perfectly" for every item.
Hooked up Google Gemini. Upload photos, click a button, it writes a description. Tested with my old calculator and it said "scientific calculator, perfect for engineering students - works great, just needs new batteries." Exactly what I'd write. Kept it.
Day 7: Launch
Shared link in one WhatsApp group. Waited.
20 minutes, nothing. Thought maybe it's broken, maybe nobody cares.
Then people started signing up. Someone listed a book. Someone messaged about it. By end of day, 40-50 students joined.
It worked.
Tech I Used
Frontend:
- Next.js - for the app framework
- React - obviously
- Tailwind CSS - for styling fast
- TypeScript - to catch errors
Backend:
- Supabase - database, auth, realtime all in one
- PostgreSQL - the actual database
Media:
- Cloudinary - image hosting and optimization
- browser-image-compression - compress images before upload
AI:
- Google Gemini API - auto-generate product descriptions
Notifications:
- OneSignal - push notifications
Deployment:
- Vercel - hosting
What I'd Do Better / Tech Improvements
If I rebuild or scale this, here's what I'd change:
- Database: Right now using Supabase. Works fine. But if user base grows beyond 1000, might need to optimize queries better. Maybe add Redis for caching.
- Search: Current search is basic SQL
LIKEqueries. For better performance, should integrate Algolia or Meilisearch. Students can search faster, filter better. - Images: Cloudinary is good. But could implement lazy loading better and use their built-in transformations more.
- Chat: Current chat works. But if many users chat simultaneously, Supabase realtime might hit limits. Could move to a dedicated WebSocket server or use Pusher.
- Performance: Next.js is fast. But could improve with better caching strategies, ISR for product pages, and prefetching.
- Monitoring: No proper error tracking. Should add Sentry.
- Testing: Bare minimum testing. Should add unit tests and integration tests.
- Payments: Don't have payments integrated. Keeping it free for now. But if needed later, Razorpay or PhonePe integration.
- App: Currently PWA. Works like an app. But if demand increases, maybe build native Android/iOS apps using React Native.
Results & Outcomes
Launched 2 months ago. Numbers so far:
- 1340+ students signed up
- 200+ listings created
- ~45 successful transactions (that I know of)
- Zero rupees spent on marketing
- Zero rupees charged to users
More importantly: People actually use it. Someone sold their hostel essentials before leaving. Someone bought cheap books, calculators for next semester. A guy found a cycle for ₹2500. It may not be the best app yet, but it matters.
The feedback that matters: "Wish this existed when I was in first year."
That's it. That's the win.