- Replace all 13 native confirm() calls with confirmModal() across 7 page modules - Add confirmModal() to modal.js (Promise-based, danger variant, focus management) - Fix double-confirm bug in contacts.js and budget.js (modal + deleteContact/deleteEntry) - Extend showToast() with onUndo callback and max-3-toast limit - Implement optimistic undo-toast (4s window) for shopping item and bulk-checked delete - Add prefers-reduced-motion guard to btnSuccess() and btnError() in modal.js - Add btn--error-static CSS class as motion-reduced fallback for btnError() - Add toast__undo button styles to layout.css - Add common.confirm and common.undo i18n keys (de, en, it, sv) - Add shopping.itemDeletedToast i18n key (de, en, it, sv)
Oikos
Self-hosted family planner for small households
Tasks · Shopping Lists · Meal Planning · Calendar Sync · Budget · Notes · Contacts
|
|
|
Toggle GitHub light/dark mode to see both themes.
Highlights
Task Management: Shared tasks with deadlines, priorities, subtasks, recurring schedules, and Kanban view
Shopping Lists: Collaborative lists with aisle categories and one-click import from meal plans
Meal Planning: Weekly drag-and-drop planner with ingredient lists and shopping export
Calendar Sync: Two-way sync with Google Calendar (OAuth) and Apple iCloud (CalDAV)
Budget Tracking: Income and expenses, recurring entries, monthly trends, CSV export
Notes & Contacts: Colored sticky notes with Markdown, contact directory with vCard import/export
Zero Build Step: Pure ES modules, no bundler, no transpiler, no framework. Ships what you write.
Privacy First: SQLCipher AES-256 encrypted database, fully self-hosted, zero telemetry
PWA Native Feel: Installable on any device, works offline, dark mode, responsive from phone to desktop
Multilingual: German, English, Italian, and Swedish UI with automatic locale detection
Quick Start
git clone https://github.com/ulsklyc/oikos.git && cd oikos
cp .env.example .env # then edit .env - set SESSION_SECRET and DB_ENCRYPTION_KEY
docker compose up -d --build
docker compose exec oikos node setup.js
Then open http://localhost:3000 and log in with the admin credentials you set in the previous step. Add family members from Settings.
New to Docker? The Installation Guide walks you through every step: From installing Docker to HTTPS setup, backups, and troubleshooting.
Tech Stack
Documentation
| Installation | Spec & Data Model | Contributing | Security | Changelog | Backlog |
|---|


