MedAssist
MedAssist lets you run daily medication reminders and management entirely on your own server.
Self-hosted medication management, honestly reviewed. A hobby project with real utility — and real limits.
TL;DR
- What it is: A simple, self-hosted Node.js app for tracking medication inventory, schedules, and reorder timing — built by a hobbyist developer for a personal need [1].
- Who it’s for: Individuals or caregivers managing multiple medications on regular schedules who want a private, local alternative to cloud health apps. Not for clinics, not for teams.
- Cost: $0 for the software (GPL-3.0). Self-hosting costs whatever your VPS or home server costs — can be zero on a Raspberry Pi [1].
- Key strength: Solves a specific, real problem extremely well: knowing how many days of each medication you have left and when to reorder. The travel packing list is genuinely useful [1].
- Key weakness: No authentication whatsoever — the developer explicitly says so in the README. This is a single-user tool on a trusted network, full stop [1].
- Third-party reviews: None found. This is a 149-star hobby project, not a commercial product with review coverage. This review is based entirely on the GitHub repository and README.
What is MedAssist
MedAssist is a self-hosted web application for tracking medications: what you take, how much is left, when to reorder, and what to pack for a trip. It was built by a developer who describes themselves as a hobbyist — “not a professional programmer, coding is just a hobby” — to help their partner manage daily medications [1].
That origin story matters because it tells you exactly what you’re getting. This is not a startup with a roadmap, a product team, or an enterprise tier. It is a small, focused app that solves one household problem with clarity and simplicity. The developer is transparent about the disclaimer: “Your health is your responsibility. Take it seriously and don’t rely on any app, especially not this one!” [1].
The tech stack is minimalist: Node.js with Express, SQLite for storage, node-cron for scheduling, and nodemailer for email reminders. It runs in Docker on port 3111 with a single volume mount for the database. No external services required beyond an optional SMTP relay for email [1].
As of this review, the project has 149 stars and 3 forks on GitHub. That’s a small but nonzero signal that others found it useful enough to bookmark. The repository has 45 commits across its history, indicating active maintenance [1].
Why People Choose It
No independent third-party reviews of MedAssist were found during research for this article. The coverage gap is itself informative — this tool exists outside the reviewed-software ecosystem. What follows is drawn from the README and repository directly [1].
The motivation case is straightforward: most medication tracking happens in one of three places — commercial mobile apps (Medisafe, MyTherapy, RoundHealth), paper systems, or nothing at all. Each of those has a real cost:
Commercial apps like Medisafe and MyTherapy sync your medication history, dosing patterns, and adherence data to their servers. For a non-technical founder concerned about data privacy, that’s a meaningful trade-off. Your medication schedule is sensitive health information, and “free app” usually means the data is the product.
Paper or spreadsheets don’t send you a reminder when you have 8 days of blood pressure medication left and you’re traveling next week.
Nothing works until it doesn’t — and the consequence is running out of a medication mid-trip.
MedAssist fills the middle ground: a browser-based tool that runs on your own hardware, stores data in a local SQLite file, and emails you when supplies are low. The travel packing list feature — generate a list of all medications and their required quantities for a given number of days away — is the kind of thing that is genuinely useful and absent from most free tools [1].
Features
What the app actually does, from the README [1]:
Dashboard:
- Medication Overview sorted by Days Left — shows current quantity, days remaining, and the date/time when the next scheduled dose will have no medication available (“Resupply Before”)
- Upcoming Schedules for today and tomorrow, expandable to future dates
- Reorder Reminder that appears only when inventory is low (default threshold: 10 days, configurable in settings)
Configuration:
- Add, edit, and delete medications
- Each medication tracks: name, current count, usage per dose, interval in days (e.g., every 1 day, every 3 days), time of day, and start date
- One medication can have multiple schedules — useful for medications taken twice daily or on different days
Travel list:
- Generate a packing list of all medications with calculated quantities for a custom number of days
- Optional: send the list by email to yourself or whoever is packing
Email reminders:
- Low-inventory alerts sent via SMTP when the Days Left threshold is crossed
- Travel list can be emailed on demand
What it does not do:
- Dose logging / confirmation (you cannot mark a dose as taken — the README suggests inferring adherence by comparing expected vs. actual stock count)
- Multi-user or family accounts
- Authentication of any kind
- Push notifications (email only)
- Drug interaction checking
- Prescription history or physician records
- Any kind of API or mobile client
The absence of dose confirmation is the most notable gap for strict adherence tracking. The workaround described in the README — compare expected quantity with actual count — is a pragmatic approximation, not a real solution. If you need to verify dose-by-dose adherence, this tool is not built for it [1].
Pricing: SaaS vs Self-Hosted Math
There is no SaaS offering. MedAssist is GPL-3.0 licensed and self-hosted only. The software costs nothing [1].
Your actual costs:
| Option | Monthly cost | Notes |
|---|---|---|
| Raspberry Pi at home | ~$0/mo (after hardware) | Runs fine, zero recurring cost |
| Shared VPS (Hetzner CX11) | ~$4–5/mo | Overkill for a single SQLite app |
| Docker alongside other containers | $0 incremental | If you already self-host other things |
For comparison, commercial medication tracking apps:
- Medisafe: Free tier (data goes to their servers); premium plans exist but pricing data not publicly listed
- MyTherapy: Free with optional premium
- RoundHealth: $4.99 one-time on iOS
The honest math: MedAssist costs less than any alternative if you already have a home server or VPS. If you don’t, the setup overhead may not be worth it versus a free mobile app — unless data privacy is a priority.
Deployment Reality Check
This is the shortest deployment section in any review on this site, because the setup is genuinely straightforward [1].
What you need:
- Docker and docker-compose (or Node.js v18+)
- A directory for the SQLite database
- Optional: SMTP credentials (Gmail app password, Mailgun, etc.) for email reminders
Docker Compose in its entirety:
services:
medassist:
container_name: medassist
image: ghcr.io/njic/medassist:latest
restart: always
environment:
- TZ=Etc/UTC
ports:
- 3111:3111
volumes:
- /path/to/database/directory:/app/database
That’s it. No database container to configure, no Redis, no secrets management. The SQLite file lives in the mounted volume.
What can go sideways:
- No authentication. The developer states this explicitly: “Application doesn’t have login and I’m not sure what to expect security wise.” [1] This means: do not expose port 3111 to the public internet. Put it behind a VPN (Tailscale, WireGuard) or restrict access to your local network. Anyone who can reach the URL has full read/write access to your medication data.
- Email requires SMTP setup. The app uses nodemailer. You’ll need to configure an SMTP relay if you want reminders. Gmail works with an app password; any standard SMTP provider works.
- Time zone. Set
TZcorrectly in the environment or your “Days Left” calculations will be off. The default is UTC [1]. - Backup is on you. The README includes a backup section. The SQLite database is a single file — back it up to wherever you back up files. There’s no built-in backup tooling [1].
Realistic time estimate: 15–30 minutes for anyone who has run a Docker container before. For someone with no Docker experience, budget a couple of hours including the first-time Docker setup.
Pros and Cons
Pros
- No subscription, no tracking, no cloud. Your medication data lives in a SQLite file on your hardware. No company is aggregating your health information [1].
- Dead-simple deployment. One Docker Compose file, one volume mount, done. Lower barrier than most self-hosted tools by a significant margin [1].
- Days Left math is exactly right. The combination of current count, dosage schedule, and interval calculation means you get a precise reorder date rather than a rough estimate. “Resupply Before” showing the exact date of first schedule with insufficient supply is the kind of detail that actually prevents running out [1].
- Travel packing list. Underrated feature. Input your departure date and return date, get a list of exactly how much of each medication to pack. Worth the setup cost alone for frequent travelers on multiple prescriptions [1].
- Low resource usage. Node.js + SQLite runs comfortably on the smallest VPS tier or a Raspberry Pi. This is not a heavy application [1].
- Honest disclaimer. The developer doesn’t oversell it. The README explicitly says not to rely on this app for health decisions. That’s the right framing for a tool like this [1].
Cons
- No authentication. This is not a minor caveat — it is the dominant architectural limitation. The app cannot be safely exposed to the internet without an external auth layer (Authelia, Authentik, basic auth in nginx) [1]. For a health application, this is a significant oversight.
- No dose confirmation. You cannot mark doses as taken. Adherence tracking is inferred, not recorded [1]. This limits usefulness for anyone trying to verify they took a dose vs. just tracking when they’re supposed to.
- Single-user only. No family accounts, no caregiver view, no sharing. If you’re managing medications for multiple people or want a family member to have access, there’s no built-in solution [1].
- Hobby project maintenance risk. The developer is explicit: this is a hobby project that continues because they enjoy it. There is no company, no roadmap, no SLA. If they stop maintaining it, there are 3 forks to pick from [1].
- Email-only notifications. No push notifications, no SMS, no webhook. If you want to be reminded to take a medication at a specific time, this does not do that — it only alerts on low inventory [1].
- No mobile interface. The web UI is described as user-friendly but there’s no dedicated mobile app or PWA. It works in a mobile browser, but it’s not designed for it [1].
- No drug interaction data. This is not a medical safety tool. It tracks quantities and schedules, nothing about contraindications, interactions, or dosing guidance [1].
Who Should Use This / Who Shouldn’t
Use MedAssist if:
- You manage 3+ regular medications and constantly lose track of when to reorder.
- You travel frequently and the packing calculation problem is real for you.
- You already self-host other tools and adding one more Docker container is trivial.
- You want your medication data on your own hardware, not in a mobile app’s cloud.
- You’re comfortable putting it behind a VPN or local-network-only access.
Skip it if:
- You need dose confirmation — proof that you actually took each scheduled dose. This tool cannot provide that.
- You want mobile push notifications reminding you to take medications at the correct time. Email-only notifications for low inventory is not a dose reminder system.
- You’re managing medications for multiple family members and need separate views per person.
- You have no server or Docker experience and aren’t willing to learn. A free mobile app solves the basic problem with less friction.
- You need the app accessible from outside your home network without setting up a VPN. Exposing it unauthenticated to the internet is not an option.
Alternatives Worth Considering
For self-hosted medication tracking:
- There are no well-known self-hosted alternatives with active communities. This is a sparse category. MedAssist is one of the few things in this space.
For commercial/mobile medication management:
- Medisafe — Free mobile app, dose reminders with confirmation, caregiver sharing, drug interaction alerts. Much more feature-complete. Data lives on their servers.
- MyTherapy — Similar to Medisafe, dose tracking with confirmation, also free. Cloud-based.
- RoundHealth — iOS only, clean interface, $4.99 one-time. No subscription.
For adjacent self-hosted health tools:
- Tandoor Recipes (if the actual concern is general personal organization, not medication specifically)
- Home Assistant (if you want medication reminders through a home automation platform, configurable but complex)
The honest assessment: if privacy is not a specific concern, Medisafe or MyTherapy solve more problems (dose confirmation, reminders, interaction checks) at no cost. MedAssist wins only when the combination of self-hosting + simplicity + data ownership matters to you specifically.
Bottom Line
MedAssist is a well-executed solution to a narrow, real problem: knowing how many days of each medication you have left and when to reorder. The travel packing list is the kind of feature you didn’t know you needed until you’ve once landed somewhere and realized you miscounted your pills. The deployment is as simple as self-hosted software gets. The GPL-3.0 license means the code is genuinely yours.
The limits are equally real: no authentication, no dose confirmation, no mobile push reminders, and the entire project depends on one developer’s continued interest. For the right user — someone already running a home server, managing multiple medications, and wanting their health data off commercial clouds — it’s a 30-minute setup that solves the problem permanently. For anyone else, a free mobile app is the lower-friction answer.
Sources
- njic/medassist — GitHub repository and README. Self-hosted medication management software. GPL-3.0 license, 149 stars. https://github.com/njic/medassist
Features
Analytics & Reporting
- Dashboard
Related Health & Lifestyle Tools
View all 53 →Monica
24KPersonal CRM for tracking interactions with friends, family, and contacts with relationship management tools.
Habitica
14KHabitica is a self-hosted habit & personal tracking tool with support for Habit Tracking, Tracking.
Mealie
12KMealie handles material design inspired recipe manager as a self-hosted solution.
Tandoor Recipes
8.1KTandoor Recipes handles manage recipes, plan meals, build shopping lists, and much much more as a self-hosted solution.
Workout.cool
7.1KWorkout.cool lets you run modern fitness coaching platform entirely on your own server.
wger
5.8KReleased under AGPL-3.0, wger provides web-based personal workout on self-hosted infrastructure.