Inspiration
Over the past year, we've watched countless peers struggle with tracking their nutrition while navigating campus dining halls. Traditional calorie counting apps were generic—they had no idea what was actually served at their dining halls. Students were either guessing at portion sizes or avoiding tracking altogether, making it nearly impossible to maintain healthy eating habits during the stressful college years. The "Freshman 15"—gaining 15 pounds of weight during the 1st year of college—was instilled in every college student in America. We realized that technology could heal this wound. What if we could create an app that understood GT's dining ecosystem while providing the sophisticated tracking capabilities that health-conscious students needed?
What it does
Our platform features secure JSON database storage and email sign-in, real-time integration with GT dining halls through the Nutrislice API, access to over 1000 foods from the USDA database with accurate nutrition data, smart calorie tracking using BMR and TDEE calculations with personalized goals, cloud synchronization for real-time data across devices, responsive design that works seamlessly from mobile to desktop, and a beautiful user interface with modern animations and Georgia Tech-esque branding.
How we built it
We followed an iterative development process, starting with core functionality and incrementally adding advanced features. The technical stack consisted of a modern React frontend and a Node.js (Express) backend acting as a proxy for external APIs. This architecture enabled API rate limiting, caching, and data transformation, while keeping the frontend user-focused. Development began by setting up a React app with Vite, an Express server for API handling, Firebase for auth and database, and a modular routing/component structure. The frontend was built using React 18, with a component hierarchy centered on key workflows (Dashboard, MealTracker, Profile) and supported by reusable UI elements. State management was handled through a layered Context system: FirebaseContext for auth and cloud ops, LocalContext for offline/localStorage support, UserContext to coordinate data flow and interface with components. This architecture enabled robust data synchronization, offline capabilities, and clean separation of concerns. We also used React Context API, custom hooks for data logic, error boundaries, and performance optimizations (memoization, debouncing) to ensure a responsive UX.
Challenges we ran into
Several significant challenges arose during development, which changed the approach to building scalable applications. The most critical challenge emerged during testing when Firebase’s free tier quotas proved insufficient for the application’s data needs. Despite optimizations, the combination of user authentication, real-time meal logging, and historical data storage quickly exhausted the daily read and write limits. This led to the decision to transition from Firebase Firestore to a local JSON database system for development and testing. Another major obstacle was dealing with API rate limiting, especially with the USDA API, which allows only 1,000 requests per hour. Early testing with multiple developers and automated tests quickly exceeded this limit, risking core functionality. The Firebase quota challenge became even more complex as it was realized that the free tier limitations impacted not just individual user usage but the entire application’s ability to function during development and testing. With multiple team members testing features simultaneously, as well as automated testing suites, the quota limits were hit within hours of starting development each day, creating a bottleneck that threatened to delay the project timeline.
Accomplishments that we're proud of
We are most proud of the impact that BuzzBites has, extending across user experience, technical performance, and scalability dimensions. From a user experience perspective, the application achieves sub-200ms response times for cached dining hall data, provides offline capability through localStorage fallback, maintains cross-device synchronization with consistent data, and offers an intuitive user interface with smooth animations and clear navigation. Technical performance metrics demonstrate 99.9% uptime through robust error handling, a 90% cache hit rate that reduces external API dependency, mobile-optimized responsive design that works across all screen sizes, and accessibility compliance with proper ARIA labels and keyboard navigation.
What we learned
Building BuzzBites became an intensive learning experience in modern web development. The frontend construction began with establishing a robust component architecture using React 18's latest features. We structured the application around a hierarchical component system where each page represents a major user workflow (Dashboard, MealTracker, Profile), supported by reusable components for common functionality like navigation, progress visualization, and form handling.
The state management implementation required careful planning due to the complexity of user data, meal logging, and real-time synchronization. We built a three-layer context system: FirebaseContext handles authentication and cloud data operations, LocalContext manages localStorage fallbacks and offline functionality, and UserContext coordinates between them while providing a clean interface for components. This architecture ensures data consistency while maintaining separation of concerns.
The frontend architecture taught us advanced React patterns, particularly state management for handling complex user data across components. We implemented a sophisticated provider system that manages user authentication, daily meal logs, and fallback mechanisms when Firebase quota limits are exceeded. The application uses React's Context API for state management, custom hooks for reusable logic around API calls and data persistence, error boundaries for error handling and recovery, and performance optimization techniques like memoization and debouncing to ensure a smooth user experience.
What's next for BuzzBites
Looking toward the future of BuzzBites, we’ve identified several technical improvements that would elevate our app further. These include migrating to TypeScript for type safety across the entire codebase, migrating to a Firebase or MongoDB database for commercial use, integrating WebSocket technology for real-time updates and live data synchronization, developing Progressive Web App capabilities with offline functionality and push notifications, and incorporating machine learning and/or chat-bot wrapping for personalized meal recommendations based on individual eating patterns.

Log in or sign up for Devpost to join the conversation.