Start with the 41-second demo video: a captioned walkthrough with fictional records. Deploy your own copy to keep real notes. An optional interactive sample app is described below.
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.
See it in action
Your next appointment starts with today’s notes.
A short walkthrough of the public product: write a note, put it away, find it later, and bring the details to your doctor. Every record shown is fictional.
On-screen captions make the walkthrough readable without sound. Explore the sample app to explore at your own pace.
Read the walkthrough
Write a daily note and save it to collapse the details. Search past entries when you need to remember. Open a sample doctor visit with its time and prescription placeholder. Prepare an appointment report. Choose light or dark mode. Your own deployed copy works offline after its first online setup and keeps records in that browser. The public demo resets on refresh. Use the template to create your own repository, or fork it to contribute.
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. This public template has no automatic device sync.
Optional interactive preview
Explore the sample app after the video.
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 sample app 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.
Start with the video:Watch the walkthrough, then explore the sample app if you want to click through fictional records yourself. Use the template for your own repository and deployment. Fork the code to make a public copy you can contribute from. A fork does not deploy the app automatically.
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.
The public template has no health-data backend, account system, analytics, advertising, AI processing or third-party runtime request in the diary. Optional encrypted sync in the author’s separate personal edition is not included in this template or demo.
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.
Accessibility improvements, clearer documentation and practical bug fixes are welcome. Read the contribution guide, then open an issue or fork the repository and submit a pull request. Keep examples fictional and include how you tested the change.