All apps · 0 apps
Yuvomi
Docker app from yuvomi's Repository
Overview
Yuvomi is a private, self-hosted family planner — one calm home for everything your household needs to stay organized. No cloud accounts, no subscriptions, no tracking: your data lives on your server and nowhere else.
Independent modules — turn on what fits, ignore the rest:
- Dashboard — today's tasks, events, meals and reminders at a glance
- Tasks — shared to-dos with priorities, due dates and assignees
- Shopping — collaborative grocery lists, auto-sorted by category
- Meals & Recipes — weekly meal planner with a built-in recipe book
- Calendar — family calendar with recurring events and reminders
- Budget — shared expenses, split costs and a spending overview
- Housekeeping — chores, supplies and staff/session tracking
- Documents — store and find important household files
- Notes, Contacts & Birthdays — everything else in one tidy place
Why Yuvomi:
- Mobile-first PWA — install it on any phone, works offline
- Light & dark mode, fast and polished (no bloated frameworks, no build step)
- Optional sync — CalDAV / CardDAV, Apple and Google Calendar
- OIDC single sign-on for households that already run an identity provider
- Encrypted-at-rest storage (SQLCipher) with automated, scheduled backups
- Multi-language, fully self-contained and MIT-licensed
— Setup —
REQUIRED: Set a long random SESSION_SECRET.
RECOMMENDED: Set a strong DB_ENCRYPTION_KEY to encrypt the database at rest — without it the database and any synced calendar/contact credentials are stored unencrypted.
Generate either secret with: openssl rand -base64 48
After the container starts, open the WebUI — the first visit guides you through creating your admin account. (Headless setups can alternatively run node setup.js in the container console.) Then log in — pick the modules you want and invite your family.
Readme
View on GitHub| 16 modules |
· | 23 languages |
· | 0 trackers |
· | AES-256 optional DB encryption |
· | MIT license |
|
Mobile PWA |
Yuvomi keeps your household organized — tasks, groceries, meals, calendar, budget, and more — in one private place, without cloud accounts or subscriptions. Runs as a Docker or Podman container on any home server or NAS, including rootless Podman on SELinux-enabled RHEL/Fedora/CentOS Stream systems. A polished, mobile-first PWA makes it feel native on every device.
Each module is independent. Use what fits, skip what doesn't.
Coming from Oikos? This project was renamed — nothing about the app changes.
Yuvomi was renamed from Oikos to avoid a trademark conflict with an unrelated product. Same code, same data, same maintainer.
- Old links (
github.com/ulsklyc/oikos) redirect here automatically. - The Docker image moved to
ghcr.io/ulsklyc/yuvomi; the oldghcr.io/ulsklyc/oikoskeeps working — please update at your convenience. - Existing data and settings are fully preserved on upgrade.
New home: https://yuvomi.cloud/ · Questions? Open a discussion.
App screenshots
Tasks — Kanban board, recurring schedules, multi-assignment |
Calendar — Google OAuth, iCloud, CalDAV, ICS subscriptions |
Budget — Income, expenses, split costs, CSV export |
Meals — Weekly planner, recipes, one-click shopping export |
Shopping — Shared lists, aisle groups, swipe gestures |
Contacts — Family directory, CardDAV sync |
Modules
| Module | What it does | |
|---|---|---|
| Tasks | Deadlines, priorities, subtasks, recurring schedules, multi-member assignment, and a Kanban board. Optional CalDAV import of Apple Reminders. | |
| Shopping | Collaborative lists grouped by aisle, with swipe gestures, per-item notes, and one-tap import from the meal plan. | |
| Meals | Weekly drag-and-drop planner with multiple items per slot, weekly repeats, and direct export to the shopping list. | |
| Recipes | Create, duplicate, and scale recipes; pre-fill meal slots or save any planned meal as a recipe. | |
| Calendar | Google (OAuth) and CalDAV sync (iCloud, Nextcloud, Radicale), ICS subscriptions, recurring events, attachments, holiday overlays, and a read-only webcal:// export feed. |
|
| Documents | Upload, tag, preview, and organize family files with per-document visibility. Optional WebDAV storage plus Paperless-ngx and Papra (DMS) linking. | |
| Budget | Income, expenses, recurring entries, trend charts, a statistics tab, CSV export, loans, split expenses, and subscription tracking with renewals and currencies. | |
| Housekeeping | Manage household staff — schedules, check-in/out, daily or hourly billing, chores, and supply requests. | |
| Rewards | Point values on tasks credit assigned members; a reward catalog with parent-approved redemptions, per-member opt-in, and an auditable ledger. | |
| Health | Per-member vitals, medications with refill alerts, lab results, and activity logs — with trend charts, CSV export, and per-entry visibility. | |
| Notes & Contacts | Colored Markdown sticky notes plus a contact directory with CardDAV sync. | |
| Birthdays | Birthday tracker with automatic calendar events, age display, and custom reminders. | |
| Family | Member profiles with roles, photos, and contact details — synced to Contacts and Birthdays. | |
| Reminders | Task and calendar reminders via in-app badges, opt-in Web Push (HTTPS), and household Gotify/ntfy channels. | |
| API Tokens | Bearer / X-API-Key tokens with an OpenAPI 3.0 spec and a built-in MCP endpoint (/mcp) for AI agents like Claude Desktop. |
|
| Backup | Manual and scheduled database backup/restore with pre-restore rollback. Optional WebDAV upload (Nextcloud, ownCloud, etc.). |
Full data model and per-module details in the Spec.
Health is not a medical device — no diagnostic claims. Health data is sensitive; enable database encryption (
DB_ENCRYPTION_KEY, SQLCipher).
WebDAV document storage needs its own backup. Database backups hold document metadata and links, not the binaries on WebDAV — back up that target separately. Admin-UI WebDAV targets must resolve to public addresses; for a trusted LAN or loopback target, set
DOCUMENT_STORAGE_WEBDAV_URLvia the deployment environment.
Design & technology
- Disciplined Liquid Glass UI — readable work surfaces, subtle translucent navigation, spring animations, and module-tinted overlays — built in pure CSS, no framework
- PWA — installable on any device, works offline (read-only access to your last-seen calendar, tasks, shopping, contacts, and dashboard), and stays responsive from phone to desktop with a persistent mobile bar, configurable favorites, and tuned touch targets
- Privacy first — fully self-hosted, optional SQLCipher AES-256 database encryption (enabled in the recommended Docker setup), zero telemetry
- SSO / OpenID Connect — optional single sign-on via any OIDC provider (Authentik, Keycloak, Google, Microsoft Entra) configured with four env vars; Authorization Code + PKCE flow
- Self-service password reset — optional SMTP email lets users reset a forgotten password themselves via a time-limited emailed link; anti-enumeration by design
- Zero build step — pure ES modules, no bundler, no transpiler, no framework
- Multilingual — 23 languages with automatic locale detection (de, en, es, fr, it, sv, el, ru, tr, zh, ja, ar, hi, pt, uk, pl, nl, cs, vi, hu, ko, id, fa)
Install anywhere
Web installer (recommended)
A localized setup wizard — 23 languages — that runs in your browser. Auto-detects Docker or Podman, configures HTTPS, SSO, and scheduled backups, then starts the container and creates your admin account.
git clone https://github.com/ulsklyc/yuvomi.git && cd yuvomi
node tools/installer/install-server.js
Open http://localhost:8090. Requires Node.js 18+ on the host to run the installer — the app container ships its own Node 22.
Docker / Podman
Pre-built image:
curl -O https://raw.githubusercontent.com/ulsklyc/yuvomi/main/docker-compose.yml
curl -O https://raw.githubusercontent.com/ulsklyc/yuvomi/main/.env.example
cp .env.example .env # set SESSION_SECRET and DB_ENCRYPTION_KEY
docker compose up -d
Build from source:
git clone https://github.com/ulsklyc/yuvomi.git && cd yuvomi
cp .env.example .env
docker compose up -d --build
Open http://localhost:3000. The first visit walks you through creating your admin account.
Podman (RHEL / Fedora / CentOS Stream): Both installers auto-detect Podman and use
podman-compose.ymlwith SELinux:Zlabels. For a manual start:podman compose -f podman-compose.yml up -d. Rootless systemd autostart:tools/quadlet/oikos.container.
NAS & home servers
| TrueNAS SCALE | Apps → Discover Apps → search Yuvomi → Install | No terminal required. Community Apps Catalog. Version updates via Renovate. |
| Umbrel | App Store → search Yuvomi → Install | One-click install. Everything stays on your Umbrel. |
| Unraid | Apps → search Yuvomi → Apply | Community Applications template. Set SESSION_SECRET during install. |
Catalog listings are still registered under the legacy name
oikos(TrueNASoikos_community, Unraidoikos-…). The app shows and installs as Yuvomi — the technical slug is kept so existing installations (database paths and container names) upgrade seamlessly rather than breaking. Search for Yuvomi; if a store still surfaces the entry as oikos, it's the same app.
New to Docker or Podman? The Installation Guide covers engine setup, HTTPS/reverse proxy, backups, and troubleshooting step by step.
Tech stack
Documentation
Installation · Spec & data model · Modules · Contributing · Security · Privacy for self-hosters · Changelog · Backlog
If you self-host Yuvomi in a GDPR context (EU/EEA, processing other people's data), read docs/PRIVACY-FOR-SELFHOSTERS.md before going live: it covers third-country assessments for every external service (weather, CalDAV/CardDAV, OIDC, WebDAV backup and document storage), data-processing-agreement notes, log-retention guidance, and a records-of-processing template.
License
MIT — see LICENSE.
Built with care for families who value privacy and simplicity.
Media gallery
1 / 5Install Yuvomi on Unraid in a few clicks.
Find Yuvomi in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Related apps
Explore more like this
Explore allDetails
ghcr.io/ulsklyc/yuvomi:latestRuntime arguments
- Web UI
http://[IP]:[PORT:3000]- Network
bridge- Shell
sh- Privileged
- false
Template configuration
Host port for the Yuvomi web interface.
- Target
- 3000
- Default
- 3000
- Value
- 3000
Database and stored app data (uploads, documents).
- Target
- /data
- Default
- /mnt/user/appdata/yuvomi/data
- Value
- /mnt/user/appdata/yuvomi/data
Destination folder for scheduled and manual database backups.
- Target
- /backups
- Default
- /mnt/user/appdata/yuvomi/backups
- Value
- /mnt/user/appdata/yuvomi/backups
Optional: drop-in folder for additional Yuvomi modules. Leave default if unused.
- Target
- /app/modules
- Default
- /mnt/user/appdata/yuvomi/modules
- Value
- /mnt/user/appdata/yuvomi/modules
REQUIRED. A long random string used to sign sessions. Generate with: openssl rand -base64 48
RECOMMENDED. Strong key to encrypt the database at rest (SQLCipher). Leave empty for unencrypted SQLite. Cannot be changed later without re-encrypting. Generate with: openssl rand -base64 48
Container timezone, e.g. Europe/Berlin. Affects scheduled backups and reminders.
- Target
- TZ
- Default
- Europe/Berlin
- Value
- Europe/Berlin
Set to true only when serving Yuvomi over HTTPS behind a reverse proxy. Keep false for direct HTTP access on the LAN.
- Default
- false
- Value
- false
Use 1 behind one reverse proxy (Caddy/nginx/Traefik), or 'loopback' for direct (no proxy) access.
- Default
- loopback
- Value
- loopback
Path to the SQLite database inside the container. Keep default unless you know what you are doing. Legacy /data/oikos.db is auto-migrated on boot.
- Default
- /data/yuvomi.db
- Value
- /data/yuvomi.db
Optional. Latitude for the Open-Meteo weather widget (no API key required). Find coordinates on openstreetmap.org or Google Maps, e.g. 52.52.
Optional. Longitude for the Open-Meteo weather widget, e.g. 13.41.
Optional. Display name shown on the weather widget, e.g. Berlin.
Optional. Unit system for temperatures: metric (°C) or imperial (°F).
- Default
- metric
- Value
- metric
Optional (legacy). OpenWeatherMap API key to enable the weather widget. Prefer the keyless Open-Meteo variables above.
Optional (legacy). City for the OpenWeatherMap weather widget, e.g. Berlin.
Optional (legacy). Unit system for temperatures: metric (°C) or imperial (°F).
- Default
- metric
- Value
- metric
Optional (legacy). Language code for OpenWeatherMap descriptions, e.g. en, de, fr.
- Default
- en
- Value
- en
Optional. Google OAuth 2.0 client ID for Google Calendar sync.
Optional. Google OAuth 2.0 client secret for Google Calendar sync.
Optional. OAuth callback URL, e.g. https://your-domain.com/api/v1/calendar/google/callback
Optional. OIDC issuer URL, e.g. https://authentik.example.com/application/o/yuvomi/
Optional. OIDC client ID from your identity provider.
Optional. OIDC client secret from your identity provider.
Optional. OIDC callback URL, e.g. https://your-domain.com/api/v1/auth/oidc/callback
Optional. Set to true to allow account linking when your IdP omits the email_verified claim. Only enable if your IdP fully controls email verification and never issues unverified addresses (e.g. older Authentik without an explicit email_verified mapping).
Optional. Apple CalDAV server URL (default: iCloud). Change only if using a custom CalDAV server.
- Default
- https://caldav.icloud.com
- Value
- https://caldav.icloud.com
Optional. Apple ID (email) for iCloud Calendar sync.
Optional. Apple app-specific password for iCloud Calendar sync (generate at appleid.apple.com).
Interval in minutes for calendar sync (Google, Apple, CalDAV). Default: 15.
- Default
- 15
- Value
- 15
Optional. Enable automated database backups (default: true).
- Default
- true
- Value
- true
Optional. Cron schedule for automated backups (default: 2 AM daily).
- Default
- 0 2 * * *
- Value
- 0 2 * * *
Optional. Number of backups to retain (default: 7).
- Default
- 7
- Value
- 7
Optional. Set to true to enable automatic upload of backups to a WebDAV server after each local backup.
Optional. WebDAV server URL, e.g. https://cloud.example.com/remote.php/dav/files/username/
Optional. WebDAV username for authentication.
Optional. WebDAV password for authentication.
Optional. Remote directory path where backup files are stored (default: /yuvomi/backups/).
- Default
- /yuvomi/backups/
- Value
- /yuvomi/backups/
Optional. Number of remote backup files to keep (default: 7).
- Default
- 7
- Value
- 7
Optional. Store newly uploaded document files on WebDAV. Existing files are not migrated.
- Default
- false
- Value
- false
Optional. WebDAV server URL for document storage, e.g. https://cloud.example.com/remote.php/dav/files/username/
Optional. WebDAV username for document storage.
Optional. WebDAV password for document storage.
Optional. Remote base folder for document files (default: yuvomi-documents).
- Default
- yuvomi-documents
- Value
- yuvomi-documents
Optional. Set to true to allow WebDAV document storage on local/private network addresses (e.g. Nextcloud in the same Docker network). Only enable in controlled environments.
- Default
- false
- Value
- false
Optional. SMTP server hostname for outgoing email (password-reset links).
Optional. SMTP server port (default: 587).
- Default
- 587
- Value
- 587
Optional. SMTP connection security: ssl, starttls, or none (default: starttls).
- Default
- starttls
- Value
- starttls
Optional. SMTP authentication username.
Optional. SMTP authentication password.
Optional. Sender email address for outgoing mail, e.g. yuvomi@example.com.
Optional. Sender display name for outgoing mail (default: Yuvomi).
- Default
- Yuvomi
- Value
- Yuvomi
Optional but required for password-reset emails to be sent. Absolute origin used to build reset links, e.g. https://yuvomi.example.com. The request Host header is never trusted as a fallback, to prevent reset-link poisoning.
Optional. Fixer API key for live currency conversion in Budget → Subscriptions. Rates are cached for 12 hours; works without this key using the cached/manual rate.