Health Diary · Product brief & PRD · v1.3
A little less
to remember.
A simple place to record what happened today, keep prescriptions, and prepare for your next doctor visit. Your diary content stays in your browser.
Local-firstWorks offlineLight & dark modeOpen source · MITNo account required
No setup needed to explore: the interactive demo has fictional data, a one-minute guided tour and quick tips. Deploy your own copy to keep real records.
The starting point: by the time a doctor asks “What happened since your last visit?”, small but useful details are easy to forget. I wanted a quiet daily record that I could own and revisit.
01 / Problem & goal
Remember the details. Keep control of the record.
For someone managing their own health notes, the job is simple: capture events as they happen and recall them at an appointment. Success means an entry can be saved on a phone, found later without internet, and included in a report the person chooses to share.
Scope: a personal record keeper. It does not diagnose, recommend treatment, connect to hospitals, or replace a clinician or an emergency service.
02 / The experience
Write. Put it away. Come back when you need it.
Daily diary
Notes autosave on the device. Add optional mood, symptoms, medicines and questions. Collapse a finished note; reopen it to add more. Search and edit past entries. Choose light or dark mode from the header or Settings; your preference is remembered on the device.
Doctor visits
Save the doctor, date and optional time. Keep more than one visit per day. Attach prescription photos or PDFs; view or download them offline.
Appointment report
Choose a date range to gather notes, visits and questions. Print or save as PDF through the browser, or download text. Prescription files remain separate.
A copy you control
Download a backup containing notes, visits and prescription files. Restore it on another browser or device when you choose. There is no automatic sync.
Try it first
A working demo, before you make it yours.
Explore four fictional diary days, two sample visits and a clearly marked prescription placeholder. A six-step tour covers daily notes, optional details, past-entry search, visits, reports and appearance. Tap the quick tips for context or explore freely.
The demo opens immediately, without GitHub, Vercel or any sign-in. Edits stay in page memory and reset on refresh or Reset demo; only the theme preference persists. Real uploads and backup imports are disabled. The demo works offline after its first load, but never keeps diary records across reloads.
The normal template starts empty and uses persistent browser storage. Demo mode is an explicit build option on a separate origin. GitHub’s fork link opens the source code; users deploy their own copy to keep a real diary.
03 / How it is built
A small app, with storage on your device.
VercelServes app code over HTTPS
→Your browserHTML, CSS and JavaScript
→On-device storageNotes, visits and prescriptions
The interface uses plain HTML, CSS and JavaScript with no runtime dependencies. IndexedDB stores entries, visits and prescription blobs separately. localStorage holds drafts and display preferences, including the selected theme. Dark mode is the default, and the theme is applied before rendering to avoid a light flash. A service worker caches the app for offline use; a web app manifest enables home-screen installation.
A small Node.js build script checks the JavaScript and versions the offline cache. A visible update notice lets you save notes and reload when a new version is ready; it waits for unfinished visit edits and other diary windows. Settings shows the app version and a manual update check. Versioned JSON backups support older diary-only files; restore validates records and commits them together. Vercel serves static files with security headers and a restrictive Content Security Policy.
There is no health-data backend, account system, analytics, advertising, AI processing or third-party runtime request in the diary.
04 / Requirements & checks
Small features, checked end to end.
| Requirement | Acceptance check |
| Reliable capture | Saved notes survive reload and browser restart; conflicting edits are detected. Collapse preferences are remembered per date. |
| Offline access | After the first online setup, launch, write, search, view prescriptions and export backups with the network disconnected. |
| Prescription files | Original bytes survive save, download and backup restore. Up to 5 files per visit, 10 MB each, 30 MB per visit. |
| Safe restoration | Keep existing diary records during database and app updates, reject malformed backups, and remove orphaned files after deletion. Import limit: 150 MB. |
| Demo without setup | Fictional samples load immediately; the tour and tips work on phones and keyboards. Editing, search, attachment preview and report export work. Refresh resets records; no diary data is persisted or uploaded. The normal build contains no demo assets or sample seeding. |
| Phone usability | Layouts checked at 320, 390, 768 and 1440 px, with keyboard controls and readable save status. Both themes cover all diary screens, persist offline, and leave records unchanged. Printed reports stay light. |
Browser smoke checks use synthetic records in isolated profiles. These are functional checks, not an independent security audit or a clinical validation. Progress is assessed through tests and voluntary feedback; the app does not collect usage metrics.
05 / Privacy & trade-offs
Local-first is a design choice, not a security guarantee.
- Health content is not uploaded by the app. The hosting provider still receives ordinary connection metadata, such as IP addresses, when serving app files.
- Storage and exported backups are not encrypted by this app. Use a device lock and keep backups private. Browser data can be cleared or evicted.
- Data belongs to the current browser and website origin. Notes on your phone and computer are separate. A new device, browser or domain needs a backup and restore. Use your stable production URL.
- Deploy on a separate origin from other sites and review updates. Whoever controls the hosted code can change what it does.
The open-source template contains no personal records or private deployment configuration. Every normal deployment starts with an empty diary in its own browser. Only the separate, clearly labelled demo includes fictional samples. No health records should be included in GitHub issues or contributions.
06 / Make it yours
Copy the template. Deploy. Start writing.
- Use the GitHub template to create your own repository. Choose private if you want private source. Fork it if you want a public copy connected for contributions.
- Import your copy into Vercel. The included configuration builds with
node scripts/build.mjs and serves dist/. No database or environment variables are needed. - Open the production URL online and wait for Ready offline. Add it to your home screen from Safari or Chrome. Keep regular backups.
Hosting is subject to your provider's plan and limits. The full README includes local setup, attachment formats, testing and contribution instructions. The template is MIT-licensed; keep the license notice when sharing it.