Sign inSign up

cibrandocampo/nudge-frontend

By cibrandocampo

Updated 2 days ago

React PWA for Nudge — recurring routine reminders with i18n and offline support.

Image
0

7.7K

cibrandocampo/nudge-frontend repository overview

Nudge

Docker Hub frontend pulls Docker Hub backend pulls Source on GitHub Last release codecov License MIT

Python 3.13 Django 5.2 React 19.2 Vite 8.1

Nudge app icon

A gentle reminder for recurring things.
Set the interval once. Get nudged at the right moment. Your server, your rules.

Nudge dashboard with due and upcoming routines, sharing indicators, and inline stock status    Nudge scanner open on a medicine box, the DataMatrix framed inside the viewfinder

See the project site →
Product tour, screenshots and FAQ. This README is the technical side.


What it is

A self-hosted tracker for the things that come round again: medication, filters, fertiliser, descaling the coffee machine. You set the interval once, Nudge tells you when it is due, and it keeps the history.

What makes it more than a checklist:

  • Stock that decrements itself. Attach a consumable to a routine and every completion draws it down, lot by lot, First Expired First Out — with expiry warnings before anything goes off.
  • Findable at twenty items. The inventory is one compact row per product — what is left, how fast it goes, when it runs out — with a search that matches names, categories and batch numbers, filters per category, and up to four products pinned to the top. What needs attention is one summary line, not a wall of alerts.
  • Scan the box. Point the camera at the DataMatrix on the packaging and the batch, its expiry and the product code fill themselves in — or type them, for the boxes where the print is scratched or there is no camera to hand. A pack carrying a serial stays one physical box, never merged with another, so "which box did I open?" has an answer.
  • Offline-first, honestly. Mutations queue in IndexedDB, sync when the network returns, and a conflict opens a per-field diff instead of guessing. Reads come from the service-worker cache.
  • Shared with the household. Share a routine or a stock item with a contact; either of you can complete it and both see the same history.
  • Push that respects the night. A daily heads-up, an alert when something falls due, follow-up reminders — with quiet hours per user.
  • Yours. No SaaS, no public registration, no telemetry. Backend and database never leave the Docker network.

Up and running in 5 minutes

Two files, a few secrets, docker compose up:

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

Fill in .env — at minimum DJANGO_SECRET_KEY, the database and Redis passwords, ADMIN_PASSWORD, your domain in DJANGO_ALLOWED_HOSTS / CORS_ALLOWED_ORIGINS / VITE_API_BASE_URL, and the VAPID key pair if you want push notifications. Then:

mkdir -p data
docker compose up -d

Log in at /login with ADMIN_EMAIL and ADMIN_PASSWORD. Only the frontend container publishes a port; put a reverse proxy in front of it for TLS.

Full installation guide — secrets, domain, reverse proxy, image tags, installing it on a phone.

Documentation

InstallationThe complete walkthrough, from download to phone
ConfigurationEvery environment variable
UpgradingVersion-to-version notes, including the v1.x → v2.0.0 Postgres migration
Backup & restoreDumping and restoring the database
TroubleshootingLogs, restarts, common failures
ArchitectureData model, auth flow, offline design, decisions
DevelopmentDev environment, quality gates, and the Claude Code workflow this project is built with

License

MIT © 2026 Cibrán Docampo Piñeiro. Use it, change it, distribute it, self-host it — personally or commercially — as long as the copyright notice survives. No warranty.

Tag summary

Content type

Image

Digest

sha256:df473e2ac

Size

28.1 MB

Last updated

2 days ago

docker pull cibrandocampo/nudge-frontend