ulsklyc/yuvomi

Self-hosted family planner - tasks, calendars, shopping, meals, budget. Your data, your server.

JavaScript

1,584

1,306 commits

updated Sep 27, 2026

See the code

README

Yuvomi

One private home for everything that keeps a household running.

Tasks, calendar, budget, groceries, meals, health and more - for a family, a couple, or just you. Twenty modules for one household, usually two to six people, on a server you own, and out of the box the only thing that leaves it is a version check.

Latest release GitHub stars Docker image MIT license

→ Install in minutes  ·  Screenshots & tour  ·  Docs  ·  Changelog

Auf Deutsch lesen



The Yuvomi dashboard: today's tasks, calendar events, meals and the shopping list on one screen

20 modules  ·  24 languages  ·  0 trackers  ·  optional AES‑256 database encryption  ·  MIT

Most households glue their life together from a dozen paid apps, each with its own account, its own subscription and its own copy of your data on someone else's server. Yuvomi puts all of it in one place that belongs to you, running as a container on any home server or NAS. Every module is independent, so you use what fits and switch off what doesn't.


One app instead of a dozen subscriptions

Instead of juggling…Yuvomi gives you
a to-do & task appTasks - Kanban, deadlines, recurring, multi-assignment
a shared calendar subscriptionCalendar - sync, subscriptions, per-event visibility
a cost-splitting appShared expenses - shared costs with debt simplification
a budgeting appBudget - income, expenses, accounts, savings goals
a meal planner & recipe appMeals & Recipes - weekly planner with shopping export
a grocery-list appShopping - shared, aisle-organized lists
a pantry & expiry trackerPantry - stock, storage location, best-before dates
a document managerDocuments - tagged, searchable family files
a home-inventory appInventory - owned belongings, purchase price, warranty, linked receipts
a notes app & contacts syncNotes & Contacts - Markdown notes, CardDAV sync

The modules talk to each other

This is the part a folder full of separate apps cannot do:

  • The week's meal plan writes the shopping list. Plan Thursday, and the ingredients are on the list before anyone walks to the shop.
  • The last jar out of the pantry is already on the list. Tick items off after a shop and they book back into the pantry with their quantity.
  • A ticked-off chore pays out. Points on a task land on the assigned member's account, and the reward catalog spends them.
  • A filed receipt hangs on the booking. Upload it once and it belongs to the transaction, the shared expense and the inventory item at the same time.

The twenty modules

Turn on what your household needs; the rest stays out of the way.

ModuleIn one line
TasksKanban board with deadlines, subtasks, recurring chores, comments and a history of who ticked off what.
ShoppingShared lists sorted by aisle, with swipe gestures and one-tap import from the meal plan.
MealsWeekly drag-and-drop planner with a recipe sidebar and direct export to the shopping list.
RecipesCreate and scale recipes, fill meal slots, or mirror a Mealie or Tandoor instance read-only.
PantryAmounts, storage locations and best-before dates, with a reminder before something expires.
CalendarTwo-way Google and CalDAV sync, Outlook push, subscriptions, holidays and per-event visibility.
DocumentsTagged, searchable family files in folders, stored locally, on WebDAV or in Google Drive.
InventoryWhat you own, with purchase price, warranty, linked receipts, a service log and recurring deadline reminders. Off by default.
BudgetIncome, expenses, accounts, loans, subscriptions and shared expenses with debt simplification.
HousekeepingHousehold staff: schedules, check-in/out, billing, chores and supply requests.
Waste collectionPickup schedules per waste type, even "the last Friday", or a subscribed municipal ICS calendar. Off by default.
RewardsPoints from tasks, a parent-approved catalog and an auditable ledger.
HealthPer-member vitals, medications, preventive care, labs, activity, cycle tracking, a fasting journal and a nutrition log, with trend charts.
ScheduleRotating shifts and fixed weekly timetables, shown as an overlay in the calendar. Off by default.
Notes & ContactsMarkdown sticky notes with tappable checklists, plus contacts with CardDAV sync and vCard import/export.
BirthdaysBirthdays and optional name days, with calendar entries, ages and reminders.
FamilyMember profiles with roles, and invite links where new members pick their own password.
RemindersFor tasks, events, warranties, best-before dates and pickups - in-app, push, Gotify, ntfy, webhook or email.
API TokensBearer tokens with an OpenAPI 3.0 spec and a built-in MCP endpoint for AI agents.
BackupManual and scheduled backups with pre-restore rollback and optional cloud upload.

Two more things you only get on your own server: wall mode turns the kitchen tablet into a readable-from-across-the-room display, and an Immich screensaver rotates your own photos when the screen goes idle. Every module in full detail is in the spec; building your own drop-in module - with its own dashboard widgets, permissions and translations - is covered in the module guide.


Before you commit

What if this project stops? Nothing changes on your machine. It is MIT-licensed and self-hosted, and there is no server of ours anywhere in the path. The container you already pulled keeps running exactly as it does today, with or without us.

What if you want your data somewhere else? Everything lives in one SQLite file on your own disk, and copying it is the whole export, as long as documents are stored in the database. Scheduled backups write a restorable archive on top of that, and the documented API pulls anything out in whatever shape you need.

What does it cost? Nothing. Yuvomi is free and MIT-licensed. You provide the server; there is no subscription, no upsell and no paid tier.


Install

Pick your way in: Docker or Podman for full control, the guided setup wizard in your browser, or your NAS app store without a terminal.

  • Image - ghcr.io/ulsklyc/yuvomi:latest, about 500 MB.
  • Needs - 256 MB RAM and one port, 3000 by default.
  • Browsers - everything as designed from Chrome and Edge 117, Firefox 129 and Safari 17.5. Down to Chrome 87, Firefox 79 and Safari 14.1 (iOS 14.5) it still starts and scrolls, with a plainer look and some features missing (measured 21 September 2026).
  • Writes - four volumes you own: data, backups, modules, documents.
  • Outbound - out of the box, one update check against the GitHub releases API. Block it and nothing breaks, only the hint about a newer version stays away. Everything else reaches out only when you use or switch on a feature that needs it: opening the calendar settings loads the list of holiday countries from openholidaysapi.org, finding a logo for a subscription looks up the service's website, and weather, public holidays, exchange rates, calendar and contact sync, recipe mirrors, Immich, Paperless or Papra, push and notification channels, cloud storage and backup connect once you switch them on.
  • Your LAN - calendar subscriptions, WebDAV storage and recipe mirrors on private or internal addresses stay blocked until you opt in (how).
  • Encryption key - optional, but there is no way back: a lost or changed key never opens the database again, not by you and not by us. The guided setup and Umbrel generate one for you; with Compose, TrueNAS or Unraid you set it yourself, so write it down.
  • Your data - one SQLite file at /data/yuvomi.db, plus the folder, WebDAV or Drive if you moved documents there.

Docker or Podman

On Podman, fetch podman-compose.yml instead of docker-compose.yml and start it with podman compose -f podman-compose.yml up -d; it carries the SELinux :Z volume labels that RHEL, Fedora and CentOS Stream need.

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
openssl rand -hex 32   # SESSION_SECRET
openssl rand -hex 32   # DB_ENCRYPTION_KEY

Now open .env and replace both REPLACE_WITH_… placeholders with the two values you just generated, in that order, and write the second one down: it is the database key, and nothing can recover it. To run without encryption, clear the line instead of filling it.

docker compose up -d

Open http://localhost:3000. The first visit walks you through creating your admin account. If the page does not load, docker compose logs (on Podman, podman compose -f podman-compose.yml logs) usually names the reason, and the troubleshooting guide covers the common ones.

Guided setup

A setup wizard in your browser, in 24 languages. It detects Docker or Podman, configures HTTPS, single sign-on 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. Needs Node.js 22+ on the host; the container ships its own Node 24.

From your NAS app store

TrueNAS SCALE, Umbrel and Unraid all carry Yuvomi: search for it in the app catalog and install, no terminal required. New to containers? The installation guide covers engine setup, HTTPS, backups and troubleshooting step by step.

Before you go live: health data, Google Drive sharing and GDPR

Health is not a medical device. No diagnostic claims are made. Health data is sensitive, so enable database encryption (DB_ENCRYPTION_KEY, SQLCipher).

External document storage needs its own backup. Database backups hold document metadata and links, not binaries stored in a local folder, on WebDAV, or in Google Drive; back up the selected target separately. Yuvomi visibility settings only control access through Yuvomi. Anyone with access to the connected Yuvomi/Documents Google Drive folder can view all files stored there.

Self-hosting in a GDPR context? If you run Yuvomi in the EU/EEA and process other people's data, read privacy for self-hosters before going live. It covers third-country assessments for every external service, data-processing-agreement notes, log-retention guidance and a records-of-processing template.

Coming from Oikos, or seeing oikos in an app store? Same app, renamed.

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 old ghcr.io/ulsklyc/oikos keeps working, so update at your convenience.
  • Existing data and settings are fully preserved on upgrade.
  • Some catalog slugs keep the technical name oikos (e.g. Unraid oikos-…) so existing installations upgrade seamlessly. Search for Yuvomi; an entry still shown as oikos is the same app.

Under the hood

  • No build step - pure ES modules and plain CSS. No bundler, no transpiler, no framework, no runtime CDN.
  • Apple HIG in the Liquid Glass language - the system font stack and Apple's type scale, capsule controls, inset-grouped lists and spring motion, verified for WCAG AA in light and dark.
  • Privacy first - fully self-hosted, optional SQLCipher AES-256 database encryption, zero telemetry.
  • Sign-in that scales to a household - optional two-factor authentication (TOTP with recovery codes, enforceable household-wide), invite links instead of handed-over passwords, and optional self-service password reset by email. Optional single sign-on works with any OIDC provider. One switch decides whether an unknown identity gets an account, so a provider shared beyond your household opens no door, and another makes SSO the only way in.
  • 24 languages with automatic detection. A separate household setting decides the language of entries Yuvomi creates itself, so an exported calendar speaks your household's language instead of English.

Express SQLite / SQLCipher Vanilla JS Plain CSS Node.js 22 or newer Docker Podman PWA


Documentation

User guide (community-maintained): @Kyrodan writes a user documentation site in his own repository. It is not part of this project and can lag behind a release, so where it and the sources above disagree, the ones above are right.



One home for your household. Yours to keep.

Install it once. No account with us, no subscription,
and nothing of ours between your household and its data.

→ Install in minutes  ·  Ask a question


MIT licensed, see LICENSE.
calendar
docker
family
family-planner
household
meal-planning
nodejs
open-source
planner-app
privacy-first
progressive-web-app
pwa
self-hosted
selfhosted
selfhosted-apps
sqlite

Contributors

(top 30 of 32)

ulsklyc

852 commits

keinzufall85-neo

114 commits

rafaelfoster

93 commits

mclgoerg

59 commits

ulsklyc/yuvomi

Self-hosted family planner - tasks, calendars, shopping, meals, budget. Your data, your server.

JavaScript

1,584

1,306 commits

updated Sep 27, 2026

See the code

README

Yuvomi

One private home for everything that keeps a household running.

Tasks, calendar, budget, groceries, meals, health and more - for a family, a couple, or just you. Twenty modules for one household, usually two to six people, on a server you own, and out of the box the only thing that leaves it is a version check.

Latest release GitHub stars Docker image MIT license

→ Install in minutes  ·  Screenshots & tour  ·  Docs  ·  Changelog

Auf Deutsch lesen



The Yuvomi dashboard: today's tasks, calendar events, meals and the shopping list on one screen

20 modules  ·  24 languages  ·  0 trackers  ·  optional AES‑256 database encryption  ·  MIT

Most households glue their life together from a dozen paid apps, each with its own account, its own subscription and its own copy of your data on someone else's server. Yuvomi puts all of it in one place that belongs to you, running as a container on any home server or NAS. Every module is independent, so you use what fits and switch off what doesn't.


One app instead of a dozen subscriptions

Instead of juggling…Yuvomi gives you
a to-do & task appTasks - Kanban, deadlines, recurring, multi-assignment
a shared calendar subscriptionCalendar - sync, subscriptions, per-event visibility
a cost-splitting appShared expenses - shared costs with debt simplification
a budgeting appBudget - income, expenses, accounts, savings goals
a meal planner & recipe appMeals & Recipes - weekly planner with shopping export
a grocery-list appShopping - shared, aisle-organized lists
a pantry & expiry trackerPantry - stock, storage location, best-before dates
a document managerDocuments - tagged, searchable family files
a home-inventory appInventory - owned belongings, purchase price, warranty, linked receipts
a notes app & contacts syncNotes & Contacts - Markdown notes, CardDAV sync

The modules talk to each other

This is the part a folder full of separate apps cannot do:

  • The week's meal plan writes the shopping list. Plan Thursday, and the ingredients are on the list before anyone walks to the shop.
  • The last jar out of the pantry is already on the list. Tick items off after a shop and they book back into the pantry with their quantity.
  • A ticked-off chore pays out. Points on a task land on the assigned member's account, and the reward catalog spends them.
  • A filed receipt hangs on the booking. Upload it once and it belongs to the transaction, the shared expense and the inventory item at the same time.

The twenty modules

Turn on what your household needs; the rest stays out of the way.

ModuleIn one line
TasksKanban board with deadlines, subtasks, recurring chores, comments and a history of who ticked off what.
ShoppingShared lists sorted by aisle, with swipe gestures and one-tap import from the meal plan.
MealsWeekly drag-and-drop planner with a recipe sidebar and direct export to the shopping list.
RecipesCreate and scale recipes, fill meal slots, or mirror a Mealie or Tandoor instance read-only.
PantryAmounts, storage locations and best-before dates, with a reminder before something expires.
CalendarTwo-way Google and CalDAV sync, Outlook push, subscriptions, holidays and per-event visibility.
DocumentsTagged, searchable family files in folders, stored locally, on WebDAV or in Google Drive.
InventoryWhat you own, with purchase price, warranty, linked receipts, a service log and recurring deadline reminders. Off by default.
BudgetIncome, expenses, accounts, loans, subscriptions and shared expenses with debt simplification.
HousekeepingHousehold staff: schedules, check-in/out, billing, chores and supply requests.
Waste collectionPickup schedules per waste type, even "the last Friday", or a subscribed municipal ICS calendar. Off by default.
RewardsPoints from tasks, a parent-approved catalog and an auditable ledger.
HealthPer-member vitals, medications, preventive care, labs, activity, cycle tracking, a fasting journal and a nutrition log, with trend charts.
ScheduleRotating shifts and fixed weekly timetables, shown as an overlay in the calendar. Off by default.
Notes & ContactsMarkdown sticky notes with tappable checklists, plus contacts with CardDAV sync and vCard import/export.
BirthdaysBirthdays and optional name days, with calendar entries, ages and reminders.
FamilyMember profiles with roles, and invite links where new members pick their own password.
RemindersFor tasks, events, warranties, best-before dates and pickups - in-app, push, Gotify, ntfy, webhook or email.
API TokensBearer tokens with an OpenAPI 3.0 spec and a built-in MCP endpoint for AI agents.
BackupManual and scheduled backups with pre-restore rollback and optional cloud upload.

Two more things you only get on your own server: wall mode turns the kitchen tablet into a readable-from-across-the-room display, and an Immich screensaver rotates your own photos when the screen goes idle. Every module in full detail is in the spec; building your own drop-in module - with its own dashboard widgets, permissions and translations - is covered in the module guide.


Before you commit

What if this project stops? Nothing changes on your machine. It is MIT-licensed and self-hosted, and there is no server of ours anywhere in the path. The container you already pulled keeps running exactly as it does today, with or without us.

What if you want your data somewhere else? Everything lives in one SQLite file on your own disk, and copying it is the whole export, as long as documents are stored in the database. Scheduled backups write a restorable archive on top of that, and the documented API pulls anything out in whatever shape you need.

What does it cost? Nothing. Yuvomi is free and MIT-licensed. You provide the server; there is no subscription, no upsell and no paid tier.


Install

Pick your way in: Docker or Podman for full control, the guided setup wizard in your browser, or your NAS app store without a terminal.

  • Image - ghcr.io/ulsklyc/yuvomi:latest, about 500 MB.
  • Needs - 256 MB RAM and one port, 3000 by default.
  • Browsers - everything as designed from Chrome and Edge 117, Firefox 129 and Safari 17.5. Down to Chrome 87, Firefox 79 and Safari 14.1 (iOS 14.5) it still starts and scrolls, with a plainer look and some features missing (measured 21 September 2026).
  • Writes - four volumes you own: data, backups, modules, documents.
  • Outbound - out of the box, one update check against the GitHub releases API. Block it and nothing breaks, only the hint about a newer version stays away. Everything else reaches out only when you use or switch on a feature that needs it: opening the calendar settings loads the list of holiday countries from openholidaysapi.org, finding a logo for a subscription looks up the service's website, and weather, public holidays, exchange rates, calendar and contact sync, recipe mirrors, Immich, Paperless or Papra, push and notification channels, cloud storage and backup connect once you switch them on.
  • Your LAN - calendar subscriptions, WebDAV storage and recipe mirrors on private or internal addresses stay blocked until you opt in (how).
  • Encryption key - optional, but there is no way back: a lost or changed key never opens the database again, not by you and not by us. The guided setup and Umbrel generate one for you; with Compose, TrueNAS or Unraid you set it yourself, so write it down.
  • Your data - one SQLite file at /data/yuvomi.db, plus the folder, WebDAV or Drive if you moved documents there.

Docker or Podman

On Podman, fetch podman-compose.yml instead of docker-compose.yml and start it with podman compose -f podman-compose.yml up -d; it carries the SELinux :Z volume labels that RHEL, Fedora and CentOS Stream need.

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
openssl rand -hex 32   # SESSION_SECRET
openssl rand -hex 32   # DB_ENCRYPTION_KEY

Now open .env and replace both REPLACE_WITH_… placeholders with the two values you just generated, in that order, and write the second one down: it is the database key, and nothing can recover it. To run without encryption, clear the line instead of filling it.

docker compose up -d

Open http://localhost:3000. The first visit walks you through creating your admin account. If the page does not load, docker compose logs (on Podman, podman compose -f podman-compose.yml logs) usually names the reason, and the troubleshooting guide covers the common ones.

Guided setup

A setup wizard in your browser, in 24 languages. It detects Docker or Podman, configures HTTPS, single sign-on 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. Needs Node.js 22+ on the host; the container ships its own Node 24.

From your NAS app store

TrueNAS SCALE, Umbrel and Unraid all carry Yuvomi: search for it in the app catalog and install, no terminal required. New to containers? The installation guide covers engine setup, HTTPS, backups and troubleshooting step by step.

Before you go live: health data, Google Drive sharing and GDPR

Health is not a medical device. No diagnostic claims are made. Health data is sensitive, so enable database encryption (DB_ENCRYPTION_KEY, SQLCipher).

External document storage needs its own backup. Database backups hold document metadata and links, not binaries stored in a local folder, on WebDAV, or in Google Drive; back up the selected target separately. Yuvomi visibility settings only control access through Yuvomi. Anyone with access to the connected Yuvomi/Documents Google Drive folder can view all files stored there.

Self-hosting in a GDPR context? If you run Yuvomi in the EU/EEA and process other people's data, read privacy for self-hosters before going live. It covers third-country assessments for every external service, data-processing-agreement notes, log-retention guidance and a records-of-processing template.

Coming from Oikos, or seeing oikos in an app store? Same app, renamed.

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 old ghcr.io/ulsklyc/oikos keeps working, so update at your convenience.
  • Existing data and settings are fully preserved on upgrade.
  • Some catalog slugs keep the technical name oikos (e.g. Unraid oikos-…) so existing installations upgrade seamlessly. Search for Yuvomi; an entry still shown as oikos is the same app.

Under the hood

  • No build step - pure ES modules and plain CSS. No bundler, no transpiler, no framework, no runtime CDN.
  • Apple HIG in the Liquid Glass language - the system font stack and Apple's type scale, capsule controls, inset-grouped lists and spring motion, verified for WCAG AA in light and dark.
  • Privacy first - fully self-hosted, optional SQLCipher AES-256 database encryption, zero telemetry.
  • Sign-in that scales to a household - optional two-factor authentication (TOTP with recovery codes, enforceable household-wide), invite links instead of handed-over passwords, and optional self-service password reset by email. Optional single sign-on works with any OIDC provider. One switch decides whether an unknown identity gets an account, so a provider shared beyond your household opens no door, and another makes SSO the only way in.
  • 24 languages with automatic detection. A separate household setting decides the language of entries Yuvomi creates itself, so an exported calendar speaks your household's language instead of English.

Express SQLite / SQLCipher Vanilla JS Plain CSS Node.js 22 or newer Docker Podman PWA


Documentation

User guide (community-maintained): @Kyrodan writes a user documentation site in his own repository. It is not part of this project and can lag behind a release, so where it and the sources above disagree, the ones above are right.



One home for your household. Yours to keep.

Install it once. No account with us, no subscription,
and nothing of ours between your household and its data.

→ Install in minutes  ·  Ask a question


MIT licensed, see LICENSE.
calendar
docker
family
family-planner
household
meal-planning
nodejs
open-source
planner-app
privacy-first
progressive-web-app
pwa
self-hosted
selfhosted
selfhosted-apps
sqlite

Contributors

(top 30 of 32)

ulsklyc

852 commits

keinzufall85-neo

114 commits

rafaelfoster

93 commits

mclgoerg

59 commits

Languages

JavaScript

90.6%

CSS

7.7%