Inspiration

Everyone comes from somewhere. We all have people back home we love, but slowly lose touch with, not because we stopped caring, but because life gets busy and reaching out feels like one more task on an already full plate. We kept coming back to the word "distance," not just physical distance, but the emotional gap that builds up when life gets in the way. We realized the problem wasn't motivation or love, it was that staying in touch had no natural trigger. So we asked: what if we attached that habit to something people already do every single day, without fail?

What it does

MoonBrush Connect turns your nightly teeth-brushing routine into a gentle prompt to send a quick update to someone you care about. While you brush, the app nudges you to record a short voice note, text, or photo update and send it to a friend or family member. It's low effort, low pressure, and built around a moment you're already having, so staying connected stops feeling like a chore and starts feeling automatic.

How we built it

The frontend is React with TypeScript, built on Vite and React Router, deployed on Vercel. Supabase Postgres handles the database, with about 15 tables secured end-to-end using row-level security, and roughly 30 database functions doing the real work so the rules hold even if someone bypasses the website. A pg_cron job runs every 5 seconds to release held check-ins, end brush sessions, and queue reminders. Realtime channels power live updates for brush sessions, reactions, and friend activity. A separate Node.js messaging agent, built on the Photon Spectrum SDK, watches an outbox table and delivers check-ins, reminders, and replies over iMessage.

Challenges we ran into

Integrating reliably with iMessage was the hardest part of the build. Photon was a tool none of us had used before, so understanding its API and getting a working integration in place took considerable trial and error. Keeping the messaging agent properly synchronized with message delivery was its own challenge: without careful handling, messages could be claimed twice or delivered out of order. We also had to think carefully about the 30-second undo window and audience settings, so that users could trust an update wouldn't go out before they intended it to.

Accomplishments that we're proud of

What we're most proud of is our team itself. We came together with a wide range of backgrounds, from members with prior hackathon experience to those with little to no coding background, and built a complete product despite that gap. Rather than letting differences in experience become a barrier, we treated them as a resource: teammates consistently stepped in to support one another in areas where they had less confidence, and that collaboration is reflected in the final product. Alongside that, we're proud that check-in security is enforced at the database level rather than only in the frontend, so it holds up regardless of how the app is accessed, and that our full test suite, 203 backend tests and three SQL suites, passes across all 16 migrations

What we learned

The biggest lesson we learned was the importance of staying focused on the MVP. During brainstorming, we kept generating new ideas and features, which pulled our attention away from our primary focus and cost us valuable time and mental energy. In hindsight, committing fully to a core set of features first, then expanding only if time allowed, would have made our process more efficient. It was a valuable reminder that discipline in scoping is just as important as creativity in ideation.

What's next for MoonBrush Connect

Looking ahead, our priorities fall into three areas. First, scaling our infrastructure by moving to cloud services, with AWS as our preferred choice given its ease of scalability as our user base grows. Second, expanding our messaging integration beyond iMessage to include WhatsApp, allowing us to reach a broader and more global audience. Third, and perhaps most importantly, acquiring more users and actively gathering their feedback, so we can hear directly from the people using the product and understand what improvements matter most to them.

Built With

Share this project:

Updates

Submission history