MHomie

The mom you don't have around when you live away from home — plans your meals around your culture and habits, drops "side quests" into your day to get you off the couch, checks in on things you actually told it, and remembers everything, so you don't have to.

Built for OpenAI Build Week, using Codex and GPT-5.6.

MHomie — your companion when no one's around.

After moving away to a new city alone for studies, I noticed that I started forgetting the little things that are essential in life because I wasn't reminded of them anymore — I forgot to eat, go out, get air. I was overwhelmed with studies and trying to adapt to the new life and place, so much that I forgot myself. Living alone for the first time was my best and worst experience ever, and I made this app knowing that I'd be the first one to use it.


What it does

  • Chat — a real, ongoing conversation with GPT-5.6. It remembers your name, culture, diet, allergies, and preferences from onboarding, asks natural follow-up questions instead of just acknowledging what you say, and proactively checks in on you (referencing your real calendar, the time of day, or things you've recently done) rather than waiting silently.
  • Meals — culturally-aware suggestions (with an 18-cuisine curated fallback dataset if the AI is ever unavailable), respecting allergies as a hard rule, aware of what's actually in your Pantry, with detailed step-by-step recipes generated on demand.
  • Side Quests — small, real reasons to get off the couch, filterable by company/time/mood, with checklist-style steps and a full completion flow: photo, comment, star rating.
  • Pantry — track what you have manually or by taking a photo (GPT-5.6 vision reads it in); ingredients automatically deplete as you cook.
  • Calendar — Year → Month → Week → Day drill-down, manual event entry with recurrence, and a "scan my calendar" photo-import feature for paper calendars.
  • History — every meal and quest you've tried lives in its own personal thread (past photos, comments, ratings), plus a general chronological archive, with a "try this again" replay flow.
  • Saved Suggestions — save an idea or a link (recipe video, reel, etc.) for later; MHomie turns it into a real meal or quest on request.

Tech stack

  • Frontend: Vite + React
  • AI backend: a Vite middleware (vite.config.js) exposing /api/chat, /api/meals, /api/quests, and a Pantry/Calendar vision-scan endpoint, calling OpenAI's Responses API directly
  • Model: gpt-5.6-luna
  • Storage: browser localStorage for this build (profile, chat history, calendar events, pantry, saved suggestions, memory/history) — no external database required to run it
  • Production: a real Node server (npm start) keeps the OpenAI key server-side; see DEPLOYMENT.md for hosting on a Node platform like Render or Railway

Setup

git clone https://github.com/fkirnabila5295fsts-lab/MHomie.git
cd MHomie
npm install

Create a .env file in the project root (see .env.example):

OPENAI_API_KEY=your_key_here
OPENAI_MODEL=gpt-5.6-luna

Development:

npm run dev

Open the local URL it prints (usually http://127.0.0.1:5173).

Production:

npm start

No seed data setup is required — the app walks you through onboarding on first launch (takes under a minute), after which every feature is immediately testable with your own inputs. If the OpenAI key isn't present or a request fails, Meals and Quests automatically fall back to a curated offline dataset spanning 18 cuisines, so the app remains functional and demonstrable even without live API access.

How Codex and GPT-5.6 were used

Codex was used throughout the entire build — not just at the start. Nearly every feature in this app, from the onboarding flow to the calendar's drill-down navigation to the Pantry vision-scan integration, was built through iterative, scoped instructions to Codex, verified with real evidence (live testing, console output, exact code review) rather than trusting a single "done" claim. A few specific debugging moments worth highlighting, since they show genuine collaborative problem-solving rather than one-shot code generation:

  • A parsing bug that blocked all AI features. The chat, meals, and quests routes were all trying to read data.output_text from OpenAI's raw API response — a field that only exists as an SDK convenience property, not in a raw fetch() response. Diagnosed by logging the actual raw response, then fixed by correctly extracting the reply from data.output[].content[] instead — a fix that had to be independently found and applied in three separate places.
  • A CSS containing-block bug. The chat input's position: fixed was silently being broken by a page-transition animation on its parent, which creates a new containing block for fixed-position children — a genuinely obscure CSS behavior. Fixed by rendering the composer through a React portal directly into document.body, sidestepping the issue entirely instead of fighting it with more CSS.
  • A structurally-impossible scroll bug. Users couldn't scroll up to see chat history — not because of broken scroll-detection logic (which is what several earlier attempts assumed), but because .conversation used justify-content: flex-end, which pushed older messages completely outside the reachable scroll range. Changing it to flex-start fixed it at the structural level.
  • A React Rules of Hooks crash. A returning-user "welcome back" screen crashed the entire app on transition, because a useState hook was declared after a conditional early return — violating React's fixed hook-order requirement. Found via the exact console error and fixed by reordering hooks to the top of the component.
  • A latency optimization with a measured result. Meal and quest suggestions were generating full detailed steps for all three list items upfront, even though users only open one. Splitting this into a lightweight initial list request plus a separate on-demand detail request cut measured latency by 52% (Meals) and 62% (Quests) — a real architectural fix, not just a nicer loading spinner.

Built With

Share this project:

Updates