AWS Builder Center

Building DinnerKaha: A Campus Food Discovery App

DinnerKaha is a campus-first food discovery app for MSRIT students who need a fast answer to one question: "Aaj kya khaana hai?" I created this piece of content for the purposes of entering this hackathon. #H0Hackathon

FOSS Enthusiast, Linux User, Cyber Sec <3

Introduction

The idea came from a real problem I kept running into around college. Finding dinner near campus is harder than it should be. Some places are open one week and closed the next, late-night stalls appear and disappear, prices shift because of gas hikes, and nobody in the group ever agrees on where to eat.
DinnerKaha turns that messy student food discovery problem into a real-time campus app using student check-ins, upvotes, live crowd flags, weekly hype boards, OpenStreetMap-powered discovery, campus deals, and a hype-weighted roulette wheel.
Dinner Kaha Architecture

What DinnerKaha Does

DinnerKaha helps students near MSRIT and Mathikere discover where to eat based on actual student activity.
Students can:
  • Browse nearby food spots around campus
  • Check live hype scores
  • Spin a roulette wheel when nobody can decide
  • Check in to places
  • Upvote places
  • Add reviews
  • Add live flags like "Open past midnight", "Prices hiked", "Gas upcharge", or "Closed today"
  • View weekly leaderboards
  • Discover small campus deals
  • Add new places through OpenStreetMap/Nominatim search
It is not a delivery app, not a booking app, and not trying to be Zomato. It is built for the smaller, messier, more student-specific food decisions that happen every day.

Why AWS Aurora PostgreSQL

DinnerKaha uses AWS Aurora PostgreSQL as the main database because the app has strongly relational data.
The database stores:
  • users
  • places
  • check-ins
  • upvotes
  • reviews
  • flags
  • deals
  • badges
Aurora PostgreSQL made sense because the app needs reliable relational queries, transactional writes, and leaderboard-style aggregations. A check-in is not just a button press; it affects the user profile, place hype score, active occupancy, and leaderboard ranking.
The main hype formula is:
1
hype_score = upvotes * 2 + check_ins * 1.5 + reviews * 1 + deal_boost - negative_flags * 3
That score powers the place cards, leaderboard, and roulette wheel weighting.

How The App Is Built

DinnerKaha is a full-stack Next.js app deployed on Vercel.
The frontend uses:
  • Next.js App Router
  • React
  • TypeScript
  • Tailwind CSS
  • shadcn-style components
  • SWR
  • MapLibre
  • a custom dark "Midnight Dhaba" visual design
The backend uses:
  • Next.js API routes
  • PostgreSQL through the pg driver
  • AWS Aurora PostgreSQL
  • AWS SES for OTP email delivery
  • Google OAuth as an alternate login method
  • OpenStreetMap/Nominatim for place search
  • MapLibre/OpenFreeMap for maps
  • openrouteservice/OSRM for navigation

Architecture

At a high level, DinnerKaha works like this:
  • The student opens the app on mobile or desktop.
  • Vercel serves the Next.js frontend and API routes.
  • API routes read/write data from AWS Aurora PostgreSQL.
  • AWS SES sends OTP emails for login.
  • Google OAuth provides an alternate sign-in path.
  • OpenStreetMap/Nominatim powers place search and adding new places.
  • MapLibre/OpenFreeMap renders the campus map.
  • Directions APIs provide navigation.

The Roulette Wheel

The roulette wheel is the hero feature of DinnerKaha.
Instead of showing equal random options, the wheel is weighted by hype score. A place with more upvotes, check-ins, reviews, and active student interest has a higher chance of appearing as the result.
That makes the wheel feel fun while still being grounded in real campus behavior.
The goal is simple:
Wheel ghumao, argument khatam.

Security & Reliability Hardening

After deploying the app publicly, DinnerKaha was hit by crawler/DDoS-style traffic. The traffic attempted to scrape public routes, send oversized request bodies, abuse OSM and directions proxy routes, and manipulate user IDs in write requests.
That forced a full security hardening pass.
The API was strengthened with:
  • Authenticated sensitive GET routes
  • Secure HttpOnly signed session cookies
  • Server-derived user identity instead of trusting client-supplied userId
  • Payload size limits
  • application/json content-type enforcement
  • Positive integer validation for route/query parameters
  • Review length and rating validation
  • Escaped SQL wildcard characters in search
  • Protected OSM and directions proxy routes
  • Safer admin secret handling through authorization headers
This was one of the most important engineering lessons from the project. Once an app is public, even a student project can be hit by crawlers and abuse traffic. The hardening work made DinnerKaha feel much closer to a real production service.

Challenges

The biggest challenge was balancing a reliable hackathon demo with a real database-backed app.
I wanted the app to work even if the database was temporarily unavailable during judging, so DinnerKaha includes demo fallbacks. But the main flows are still designed around real Aurora PostgreSQL persistence.
Another challenge was making the app feel original. Food discovery apps can easily become generic. DinnerKaha avoids that by focusing on campus-specific problems: late-night stalls, sudden closures, price hikes, live student flags, and a roulette wheel for group indecision.

What I Learned

This project taught me that the database model directly shapes the product experience.
Once check-ins, upvotes, reviews, flags, and deals are stored in PostgreSQL, the frontend becomes more than a static UI. The roulette wheel, leaderboard, place cards, and profile all reflect the same underlying student activity.
I also learned that deployment architecture matters even for an MVP. Using Aurora PostgreSQL with Vercel made the app feel shippable, while AWS SES, OAuth, maps, and API hardening pushed it beyond a simple demo.

What's Next

Next, I want to:
  • Add stricter college email enforcement
  • Add true weekly leaderboard snapshots
  • Improve rate limiting across all write routes
  • Add OSM write-back so community-added places can be contributed upstream
  • Expand from MSRIT to other Bengaluru colleges
  • Build a React Native mobile app using the same backend and data model

Final Thoughts

DinnerKaha started from a small everyday frustration: deciding where to eat near college. By combining AWS Aurora PostgreSQL, Vercel, OpenStreetMap, and a student-first design, it became a working full-stack product for a real audience.
It is built for hungry students, late-night food debates, and the tiny campus food spots that deserve to be discovered.
Any opinions in this article are those of the individual author and may not reflect the opinions of AWS.
Enjoyed reading this content? Let the author know!

Your likes, comments, shares, and saves help creators reach more builders.

Loading recommendations

Loading article