Gawain
A chore app for working from home that fits housework into the gaps between your meetings
Timothy Maersk M. Borja
Preview




Chores repeat from the last time you actually did them, not on fixed dates. Gawain reads your calendar, suggests chores that fit before your next meeting, holds the washer reminder until your call ends, and keeps a pantry and grocery list that reminds you when you leave the house.
The problem
I work from home, and chores fill the small gaps in my day: ten minutes before a call, the hour after work. The usual tools get chores wrong.
Calendars and to-do apps repeat on fixed dates. “Clean the fridge every two weeks” really means two weeks after you last cleaned it. If you do it late, the next one should move too. Fixed dates nag you on the wrong day, so you start ignoring them. None of these apps know when you’re free, either.
What I built
Gawain (Filipino for “chore” or “task”) keeps each chore on its own interval, counted from when you actually did it. The Today screen looks at your meetings and says what fits right now: “20 min before Design review. Take out the trash (5 min)?” During work hours it suggests only short chores. Bigger ones wait until evening.
Appliance timers work the same way. Start the washer and Gawain works out that it finishes during a meeting, so it reminds you a couple of minutes after the meeting ends.
The pantry side tracks what’s running low. Mark something Low or Out and it goes on the shopping list. Tick it off when you buy it, and after a few purchases Gawain learns how long each item lasts and warns you before it runs out. On a phone it can remind you when you leave home, and when you walk into a store you’ve saved it shows only that store’s items.
How it works
- Scheduling (TypeScript, Vitest): pure functions for due dates, urgency, free-time gaps and meeting-aware reminders, all unit tested. Gaps are split at work-hour boundaries so a break between meetings gets one quick chore, not a long one.
- Calendars: on phones,
expo-calendarreads busy times from every account on the device, read-only. Anywhere else, you paste a Google or Outlook iCal link. A small parser expands repeating meetings (daily, weekly, “second Tuesday”), applies time zones including Outlook’s Windows zone names, and handles skipped, moved and cancelled meetings. - Web: a Cloudflare Pages Function fetches the calendar link for the browser, because calendar sites block cross-site requests. It only talks to known calendar hosts, and the link travels in the request body, so it never shows up in logs. A service worker makes the app open offline, and reminders arrive as browser notifications while the app is open.
- Location:
expo-locationgeofencing hands the watching to the phone’s OS, so the app doesn’t run in the background and battery use stays low. A small background task builds the “you’re out, 6 items on your list” notification. - No backend: everything is stored on the device with Zustand. There’s nothing to sign up for, and backup files cover the web version.
Try it
The web app is live. Use it in the phone frame on this page, or open gawain-ccn.pages.dev on your phone and add it to your home screen.