From f425af390f7518221ec0d6fc1374a928a4a2a706 Mon Sep 17 00:00:00 2001 From: Ulas Date: Thu, 2 Apr 2026 15:34:02 +0200 Subject: [PATCH] docs: add project landing page for GitHub Pages Static bilingual (EN/DE) landing page with dark/light theme support, responsive design, scroll animations, theme-aware screenshot gallery, and Open Graph images for social sharing. Co-Authored-By: Claude Opus 4.6 --- docs/index.html | 959 +++++++++++++++++++++++++++++++++++++++++ docs/og-image.png | Bin 0 -> 19221 bytes docs/twitter-image.png | Bin 0 -> 19386 bytes 3 files changed, 959 insertions(+) create mode 100644 docs/index.html create mode 100644 docs/og-image.png create mode 100644 docs/twitter-image.png diff --git a/docs/index.html b/docs/index.html new file mode 100644 index 0000000..b2e0a2e --- /dev/null +++ b/docs/index.html @@ -0,0 +1,959 @@ + + + + + + Oikos — The Self-Hosted Family Planner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +

Oikos

+

The self-hosted family planner

+

Manage your household together. Tasks, shopping, meals, calendar, budget — all in one place. Self-hosted, private, yours.

+ + + View on GitHub + +
+ MIT License + Docker Ready + PWA + No Cloud Required +
+
+ + +
+
+
+ +

Everything your household needs

+

A complete set of tools designed for families, built to work together seamlessly.

+
+
+
+ +

Task Management

+

Shared tasks with deadlines, priorities, subtasks, recurring schedules, and a Kanban board view.

+
+
+ +

Shopping Lists

+

Collaborative lists with aisle categories and one-click import from your meal plans.

+
+
+ +

Meal Planning

+

Weekly drag-and-drop planner with ingredient lists and automatic shopping list export.

+
+
+ +

Calendar Sync

+

Two-way sync with Google Calendar (OAuth) and Apple iCloud (CalDAV). All events in one place.

+
+
+ +

Budget Tracking

+

Track income and expenses, manage recurring entries, view monthly trends, and export to CSV.

+
+
+ +

Notes

+

Colored sticky notes with Markdown support. Perfect for family memos, recipes, and quick reminders.

+
+
+ +

Contacts

+

Shared family contact directory with vCard import and export.

+
+
+ +

Works Everywhere

+

Installable as a PWA on any device. Works offline, supports dark mode, responsive from phone to desktop.

+
+
+
+
+ + +
+
+
+ +

See it in action

+

A clean, intuitive interface that adapts to your device and preferred theme.

+
+
+
+
+ Oikos Dashboard +

Dashboard

+
+
+ Task Management +

Tasks

+
+
+ Meal Planning +

Meals

+
+
+ Shopping Lists +

Shopping

+
+
+ Calendar +

Calendar

+
+
+ Budget Tracking +

Budget

+
+
+ Notes +

Notes

+
+
+ Contacts +

Contacts

+
+
+
+ + +
+
+
+ +

Built different, on purpose

+

No subscriptions, no vendor lock-in, no data leaving your home.

+
+
+
+ +
+

Privacy First

+

AES-256 encrypted database with SQLCipher. Zero telemetry. Your data never leaves your server.

+
+
+
+ +
+

Fully Self-Hosted

+

Runs on a Raspberry Pi, a NAS, or any server. Docker makes setup a one-liner.

+
+
+
+ +
+

Zero Build Step

+

Pure ES modules, vanilla JS, plain CSS. No bundler, no transpiler, no framework. Ships what you write.

+
+
+
+ +
+

Open Source

+

MIT licensed. Inspect, modify, extend, contribute. Built in the open for families who care about transparency.

+
+
+
+
+
+ + +
+
+
+ +

Up and running in minutes

+
+
+
+# Clone and configure +git clone https://github.com/ulsklyc/oikos.git && cd oikos +cp .env.example .env # set SESSION_SECRET and DB_ENCRYPTION_KEY + +# Start with Docker +docker compose up -d --build +docker compose exec oikos node setup.js +
+

Then open http://localhost:3000 and log in. Need help? The Installation Guide covers everything from installing Docker to HTTPS, backups, and troubleshooting.

+
+
+
+ + + + + + + diff --git a/docs/og-image.png b/docs/og-image.png new file mode 100644 index 0000000000000000000000000000000000000000..caa8218aa279f665827d922238ebdcad95bd787a GIT binary patch literal 19221 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

)2Kxg)!`>h*h6bDGB!PqOUTM2Hqr`F)hyNdG28 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 literal 0 HcmV?d00001 diff --git a/docs/twitter-image.png b/docs/twitter-image.png new file mode 100644 index 0000000000000000000000000000000000000000..0b0078131aec3d6babba49cb8cf3da0d7fd3b7ea GIT binary patch literal 19386 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 literal 0 HcmV?d00001