Inspiration

MedMinder was born from a simple but painful observation: the people who need medication reminders the most are the ones least served by existing apps.

We thought about our grandparents — juggling five or six medications a day, writing times on sticky notes, calling family members to ask "did I already take this?" The apps that exist are either too complex, too cluttered, or designed by people who have never watched an 80-year-old try to navigate a dashboard full of charts and toggles.

We wanted to build something different. Not a tracker for tech-savvy users who want

What it does

MedMinder is a calming, accessible medication tracker designed specifically for elderly users and their caregivers.

  • Tracks medications across Morning, Afternoon, Evening, and Night with a clean, grouped view
  • Sends reminders so users never miss a dose
  • Monitors adherence with a streak tracker and weekly progress chart
  • Manages refills with low-stock warnings before medications run out
  • Stores contacts for family, doctor, and pharmacy — one tap to call
  • Works offline with all data stored locally — no account, no servers, no privacy concerns
  • Installs as a PWA so it lives on the home screen like a native app
  • **Has a AI feature to ask questions about basic health needs
  • **

The entire experience is built around one principle: if your grandmother couldn't figure it out in 30 seconds, we simplified it further.


How we built it

MedMinder is built entirely with vanilla HTML, CSS, and JavaScript — no frameworks, no build step, no dependencies. This was a deliberate choice. The target users are often on older devices with slower connections, and a lightweight single-file app loads instantly and works offline without any setup.

Key technical decisions:

  • LocalStorage for all data persistence — keeps everything private and on-device
  • CSS Variables for theming, enabling seamless light/dark mode switching
  • PWA manifest so the app is installable directly from the browser
  • Web Speech API for accessibility features
  • CSS animations for smooth, calming micro-interactions that reduce cognitive load rather than add to it

The UI was designed mobile-first with large tap targets, high-contrast text, and a gentle color palette — every design decision was filtered through the question: would this work for someone with mild vision loss or shaky hands?

Challenges we ran into

Designing for a user we aren't. The hardest part wasn't technical — it was empathy. It's easy to design for yourself. Designing for an elderly user with potential vision impairment, limited tech confidence, and high stakes around getting it right required us to constantly challenge our assumptions. Features we thought were obvious turned out to be confusing. Interactions we thought were simple required too many taps.

Balancing features with simplicity. Every feature we added risked making the app harder to use for the core user. The refill tracker, the stats view, the calendar — each one useful in isolation, each one a potential source of confusion if poorly introduced. Knowing what not to build was harder than building.

Notifications without a backend. Implementing reliable push notifications as a pure client-side PWA is genuinely difficult. The Web Push API requires a service worker and VAPID keys, and making it work consistently across iOS Safari, Android Chrome, and desktop browsers — each with their own quirks — took significant iteration.

Data resilience. LocalStorage is convenient but fragile. One browser data clear, one device switch, and everything is gone. For a general-purpose app that's an inconvenience. For an elderly user who has spent months building their medication history, it's devastating. Finding the right balance between privacy-first local storage and some form of backup was an ongoing tension.

Accomplishments that we're proud of

Built a fully functional, installable PWA with zero external dependencies — the entire app is a single HTML file that works offline, on any device, in any browser

  • Designed an interface that genuinely feels calm — not just visually, but in terms of cognitive load. Every screen has one primary action. Nothing competes for attention.
  • Implemented a complete medication management system — add, edit, delete, schedule up to 6 times per day, color-tag, add food instructions, track refills — all within a UI that doesn't feel overwhelming
  • Built emergency contact quick-dial — a feature that sounds simple but required careful thought about one-tap reliability and making sure it worked on every device
  • Achieved full dark mode with a design that actually looks intentional, not just inverted colors
  • Kept the codebase readable and dependency-free — any developer can open the file and understand it immediately, which matters for a health tool that users need to trust

What we learned

Accessibility is not a checklist. We went in thinking accessibility meant ARIA labels and sufficient color contrast. We came out understanding it's a completely different way of thinking about interaction design — about what information is essential vs. supplementary, about the cost of every additional tap, about how much trust a user has to extend just to open an app with their health information in it.

Simple is an engineering problem, not just a design one. Getting the UI down to its essential elements required more code decisions than adding complexity did. Smooth animations that don't feel jarring, transitions that orient rather than distract, loading states that don't make the user wonder if something broke — all of that takes deliberate engineering work.

The target user changes everything. We've built apps before. MedMinder forced us to question every default assumption we had about how people use software. Font sizes, button placement, error messages, confirmation dialogs — nothing could be inherited from prior experience. Everything had to be re-examined through the lens of our actual user.


What's next for Medminder

Caregiver mode — a linked view where a family member can monitor adherence and receive alerts when a dose is missed, without being able to modify the user's settings. This is the most-requested feature from every caregiver we spoke to.

Missed dose push alerts — if a medication isn't marked taken within 2 hours of its scheduled time, automatically notify a designated emergency contact. This single feature transforms MedMinder from a tracker into a genuine safety net.

Cloud backup — a simple, privacy-respecting export/import system and optional cloud sync so users don't lose months of history when they switch devices or clear their browser.

Drug interaction warnings — when a new medication is added, cross-reference it against existing ones using the OpenFDA API and surface plain-language warnings before saving.

Simplified "right now" mode — a stripped-down view showing only the next medication due, in large text, with a single giant button. For users who find even the current interface complex, this is the floor we should be building toward.

Printable medication list — a formatted PDF export designed for doctor appointments, replacing the handwritten list on the fridge that is currently how most elderly users manage this.

Built With

Share this project:

Updates