Abstract:
FuelUp is a Flutter mobile application I built for my final year project. The core idea is simple: recommend meals that actually fit the user — not just their dietary needs, but also how they feel at that moment. On the backend side, I used Firebase Authentication, Cloud Firestore, Realtime Database, Cloud Messaging, and Storage together. A custom Node.js service running on Render takes care of event-driven tasks like meal tagging. The main thing that makes FuelUp different from regular food apps is the moodaware recommendation engine. Rather than just showing the same meals to everyone, the system tries to detect the user's mood using an on-device speech emotion recognition model — a TFLite model that I integrated to extract MFCC features from the microphone. When that fails or gives a low-confidence result, a simpler tag-based classifier steps in as a fallback, so the app always has something to show. Meal tagging uses two paths. The rule-based lexical engine always runs first, regardless of anything else. If the Gemini API quota is still available for that day, AI-assisted tagging also runs and adds richer tags on top. This way the system keeps functioning even when the external API hits its daily limit. There are two roles in the app. Customers browse meals, complete their health profile, place orders, and track delivery in real time. Chefs list their meals, get FCM push notifications when orders come in, and update order status from their interface. Real-time updates go through Firebase Realtime Database listeners. This report covers the motivation, background literature, requirements, design, implementation, and testing for FuelUp. I have also tried to be honest about the problems I encountered during the project — particularly around credential security, Firestore access control, listener reliability, and gaps in automated testing — and what should be done to fix them.