Nudge app icon

A gentle reminder for recurring things.

Set the interval once. Get nudged at the right moment. Your server, your rules. Offline-first PWA. No SaaS. No public registration.

MIT-licensed · Docker images for amd64 + arm64 · Synology-friendly

You open the app on the metro. It just works.

Nudge is for the recurring jobs a household or team actually runs — medication, filters, pet dewormer, server backups, anything with an interval. It sends a push the moment something comes due, decrements the consumable it is attached to, and keeps working when the network doesn't.

How it works

From the first install to the moment you mark something done — the whole loop in five beats.

Nudge

Install it

Add to Home Screen on iOS or Android. Opens from its own icon, feels like a native app — no store review, no download queue.

Nudge dashboard with four routines, one shared with a contact

See your loop

Routines for anything recurring — medication, filters, the plants. Some tracked against stock, some not. Share any of them with the household.

Nudge inventory with five stock items, one shared, and lot-level expiry dates

Track your stock

Attach a consumable to a routine. Nudge tracks lots and expiries individually, and warns you 90 days before the first lot goes off.

Get nudged

When a routine comes due, Nudge sends a push — instantly on the due moment, with follow-up reminders every 8 hours until done.

Nudge lot-selection modal showing two Vitamin D lots ordered by expiry date

Complete with a lot

Tap done. If the stock has multiple lots, Nudge picks the First-Expired-First-Out by default — you just confirm.

Offline-first, sync when you're back

Three moments every offline-capable app has to get right. Nudge got the details right so you don't notice them.

Tap it offline

Mark-done, edits, new routines — every mutation is captured in IndexedDB the moment the network drops, with an optimistic update so the UI reacts immediately.

Nudge dashboard with the offline banner and a pending mutation counter

Sync when you're back

A reachability probe polls the backend (not just navigator.onLine, which lies on captive portals). As soon as it sees a 2xx, the sync worker drains the queue with backoff and invalidates only the caches that were touched.

Nudge dashboard back online with the queue drained and routines up to date

Resolve conflicts with a diff

If someone else edited the same thing while you were gone, Nudge opens a modal with a per-field diff. Overwrite with your version or discard — not a guess.

Nudge conflict resolution modal with a per-field diff

Everything you expect, nothing you don't

No freemium tier. No tracking. No onboarding wizard. It does one thing, and it does it on your machine.

Offline-first PWA

Queue in IndexedDB, sync on reconnect, optimistic updates, conflict resolution with visual diff, idempotent retries.

Push notifications

Daily heads-up at your chosen time, a due alert the moment the interval expires, follow-up reminders every 8 hours until done.

Household sharing

Share routines and stock items with contacts. Shared items show up on the recipient dashboard with an owner label.

Inventory with FEFO

Attach a consumable; Nudge decrements stock automatically, lot by lot, First Expired First Out. Expiry warnings 90 days out.

Timezone-aware

Notification schedule follows your local time and adjusts automatically for daylight saving.

Multilingual

English, Spanish, and Galician. Auto-detected from the browser, overridable per user.

Private by design

No public registration. No SaaS. No telemetry. Backend and database never leave the Docker network.

Install like an app

Add to home screen on iOS and Android. Opens from the icon, runs like a native app, push notifications included.

A quick tour

Every screen at the same mobile aspect ratio — because that's where Nudge lives day-to-day.

Dashboard — due and upcoming routines
Dashboard
Routine detail with next due date and history
Routine detail
New-routine form with interval presets
Create routine
Inventory with stock items grouped by category
Inventory
Stock detail with per-lot quantities and consumption audit
Stock detail
Sharing popover with contacts
Sharing
Recipient's dashboard with shared items
Received share
History of all completions
History
Settings: contacts, push, language, timezone
Settings

Your server, your rules

Nudge runs entirely in your Docker stack. No managed service, no public registration, no telemetry, no third-party analytics. Backups are a pg_dump away. The backend and database never leave the Docker network — only the frontend container exposes a port, and even that is typically behind your own reverse proxy for TLS.

MIT licence · Read the terms

Self-host in 5 minutes

Two files, a few secrets, docker compose up. Full walkthrough in the README.

# 1. Download the compose file + env template
curl -O https://raw.githubusercontent.com/cibrandocampo/nudge/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/cibrandocampo/nudge/main/.env.example
cp .env.example .env

# 2. Fill in DJANGO_SECRET_KEY, ADMIN_PASSWORD, POSTGRES_PASSWORD,
#    REDIS_PASSWORD and the VAPID key pair (see the README)

# 3. Start it
mkdir -p data
docker compose up -d

# Admin panel is at /nudge-admin/, the app at your configured port.

Full setup + configuration reference: README — Self-hosting

Questions people ask

Does it really work offline?

Yes. Reads come from the Service Worker cache, and mutations (mark done, edits, new routines, sharing, consumption) go into a local queue. When the browser reconnects, the queue drains automatically. Conflicts go through a visual diff modal. No data loss in normal use.

Can I use it without running my own server?

Not today — Nudge is self-hosted on purpose. There is no managed SaaS, no public registration, and no plan to add one. You run it yourself on any host that can run Docker (a NAS, a cheap VPS, a home server) and it is yours.

Why no iOS app?

Nudge is a Progressive Web App. Apple finally supports Web Push in Safari, and the install flow (Add to Home Screen) works well. No App Store review, no native fork, no second UI to maintain.

What about my data?

It lives in PostgreSQL inside your container stack. Backups are straightforward (pg_dump), there is no vendor to depend on, and no analytics or telemetry ships out of the box.

Does it cost money?

No. MIT licence, free to use, modify, and distribute. You pay for whatever hosting you want to run it on — often a Synology or Raspberry Pi is enough for a household.

Is there a demo I can try?

Not yet — this site is pure marketing, and a public demo with test data takes ongoing moderation work. The repo ships with Docker Compose so spinning up a local instance takes a few minutes if you just want to kick the tyres.