Inspiration
College students are busy. Between classes, work, and studying, most people only have about 20 minutes to grab food.
Eating healthy sounds simple, but traditional apps make it a chore. Tracking calories after the fact or trying to guess the macros of a dining hall meal is tedious and often inaccurate. We realized students don't need another blank diary to log their food but they need an engine that makes the decision for them.
We wanted to flip the standard model: instead of tracking what you already ate, MealMe tells you exactly what you should eat before you even walk into the dining hall.
What it does
MealMe is a live, multi-campus nutrition dashboard. It acts as a "Macro Command Center" that actively pulls the daily menus from university dining halls (currently supporting Iowa State and Purdue).
Instead of just displaying a list of food, MealMe features a Target Match Engine. You set your daily macro goals (Protein, Carbs, Fats, Calories). The app calculates your remaining limits and actively scores the available campus meals using a weighted penalty algorithm. It filters out the noise and highlights the exact meal you need to hit your targets perfectly, dropping it directly into a daily timeline ledger.
How we built it
We built MealMe as a multi-tenant web application using React and TypeScript.
Because we wanted live data without the nightmare of web scraping, we built a custom Node.js backend (deployed via Vercel Serverless Functions) that directly hooks into the universities' hidden JSON APIs (ISU's WordPress REST API and Purdue's HFS API).
The frontend was designed to avoid the "boxy spreadsheet" look of older fitness apps. We used Tailwind CSS and Shadcn to create a premium, editorial-style interface featuring fluid animations, custom SVG macro rings, and immersive "one-at-a-time" onboarding flows.
Tech Stack
- Frontend: React 19, TypeScript, Vite
- Styling & UI: Tailwind CSS, Shadcn, Framer Motion, GSAP, Mapbox GL
- Backend: Node.js / Express (Vercel Serverless API Functions)
- Data Integration: Custom REST API parsers for ISU and Purdue dining systems
Challenges we ran into
- Dirty API Data: Dining hall APIs are notoriously messy. The CMS doesn't know the difference between a "Cheeseburger" and a "Side of Ranch." We had to build a data sanitization pipeline and write specific heuristics (calorie thresholds and keyword filters) so our algorithm wouldn't suggest drinking four cups of mayo to hit a fat goal.
- Standardizing Different Universities: Purdue and Iowa State format their API data completely differently. Building a system that could parse both structures into one unified data model without breaking the frontend was a massive architectural challenge.
- Vercel and CORS: Moving from localhost to production broke our API calls due to strict university firewalls and CORS policies. We had to pivot and write serverless proxy functions to mimic browser headers and route the data safely to our frontend.
Accomplishments that we are proud of
- The Weighted Penalty Algorithm: Our recommendation engine doesn't just blindly suggest "high protein" meals. It actively penalizes meals that push a user over their remaining carb or fat limits, solving the problem like a puzzle.
- The UI/UX: We successfully built a data-heavy application that feels clean, fast, and satisfying to use. Features like the 'basketball shot' absorption animations and the dynamic timeline ledger make it feel like a premium SaaS product.
- Real-time Utility: We didn't rely on static, hardcoded databases. The app actually works with live campus data right now.
What we learned
- Working with undocumented, live third-party APIs requires intense data validation and fallback states.
- "State management" gets incredibly complex when syncing a global meal period (Breakfast/Lunch/Dinner) across multiple different UI components simultaneously.
- Small UI details—like tabular numbers in data rings and hiding default scrollbars—make a massive difference in how professional an application feels.
What is next for MealMe
- Database Integration: Connecting a backend like Supabase or PostgreSQL to allow users to permanently save their profiles, macro goals, and historical logs across devices.
- More Campuses: Expanding our API fetchers to support the dining systems of the rest of the Big Ten and Big 12 schools.
- Dietary Filters: Hardcoding strict algorithmic filters for Vegan, Vegetarian, Halal, and specific allergen requirements.
Built With
- css
- html
- node.js
- react
- tailwind
- typescript
- vercel
- vite
Log in or sign up for Devpost to join the conversation.