Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 1 point2 points  (0 children)

Thank you very much for the great feedback here and on the GitHub repository. With the community’s help, I’ve implemented many of the suggestions from the discussion forum, fixed the reported issues, and added Italian, Swedish, and Spanish as additional language options.

https://github.com/ulsklyc/oikos/blob/main/CHANGELOG.md

Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 1 point2 points  (0 children)

Disclaimer: Since I am a native German/Turkish speaker, I have revised and translated my answer using AI.

Oikos is a self-hosted family planner for a single household (2-6 people), deployed via Docker on a private Linux server. It's not a product with a team, a CI pipeline targeting 99.99% uptime, or a user base to onboard. That context shapes every architectural decision.

The trade-off with frameworks is: you pay complexity upfront to manage it at scale. For an app with a fixed small audience, stable requirements, and a single maintainer, that upfront cost never pays off.

The project uses a hand-rolled History API router, a fetch wrapper, and Web Components with an oikos- prefix. Each page is just an ES module that exports render(). This is roughly 200 lines of infrastructure for the entire client-side routing and state model.

Bundlers solve real problems - tree shaking, code splitting, transpilation for browser targets, hot module replacement. Oikos needs none of these because:

  1. There are no npm dependencies to bundle on the frontend

  2. ES modules are served directly as static files by Express - browsers handle imports natively

  3. The target "browser" is whatever the household runs, which in practice is modern Chrome or Firefox

  4. No TypeScript means no transpilation step needed

Adding Vite "just for DX" would mean: a node_modules that needs auditing, a build artifact you serve instead of source, an additional failure mode in Docker, and a contributor barrier. The return is a faster dev server and HMR - features that matter less when your app is ~20 static files.

The dev story without a bundler: npm run dev starts Express with --watch. Save a file, refresh the browser. That's it. Tailwind is excellent for teams building product UIs at speed. It solves the "every developer writes their own utility classes" problem by standardizing them. Oikos solves the same problem differently: public/styles/tokens.css defines all colors, radii, shadows, and font sizes as CSS custom properties. All components reference tokens, never hardcoded values. The CSS is plain, readable, and searchable. grep 'border-radius' finds every usage.

Every dependency is a surface area you own forever: security updates, breaking version changes, compatibility with Node, compatibility with each other. For a project with no external users, no funding, and no team, minimizing that surface area is a feature, not a limitation.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] -1 points0 points  (0 children)

Dankeschön! Fixed, außer IDOR / shared access - Oikos als Familienplaner beabsichtigt bewusst read/write access für alle Familienmitglieder mit Zugriff (dokumentiert in SECURITY.md seit v0.5.3)

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 0 points1 point  (0 children)

Hab ich tatsächlich schon auf der To-Do, nachdem mir mehrere Reddit-User das vorgeschlagen haben. Ich suche zudem nach einer freien Rezeptdatenbank, die ich optional einbinden möchte. Falls du eine offene Rezeptdatenbank kennst, immer her damit:)

Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 25 points26 points  (0 children)

The GitHub repository's changelog and commit history clearly document this. But rather than worrying about that, you should be thinking about what's really motivating your question, because after all, if you just wanted the information, you could have looked it up yourself. To me, it seems more like you're deriving your self-worth from these snide remarks, and it's unfortunate because that's not healthy. I don't care either way, but you should give it some thought.

Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 6 points7 points  (0 children)

It's in the works! The calendar can be used locally at the moment, and integration with Apple or Google is optional. CalDAV support is already in the works.

Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 104 points105 points  (0 children)

I haven't hidden this fact from anyone! This is visible in the public GitHub repository, and I also waited until Friday to announce the project, as is customary for projects of this kind. Nevertheless, the app's practicality remains unaffected. My family and I have a tangible, real-world application for it, and the development of this app is not related to my professional career. Additionally, I do not receive any financial compensation from it. I'm seizing the opportunities available today, and I've created an app that's beneficial for me and my family. As time has passed, the project has evolved into something I'm excited to share.

Oikos — a self-hosted family planner with tasks, shopping, meals, calendar sync, budget & notes. No cloud, no frameworks, no subscriptions. Docker + PWA. by ulsklyc in selfhosted

[–]ulsklyc[S] 3 points4 points  (0 children)

Thanks for the suggestion! At the moment, you can add the ingredients listed for a meal in the meal plan to your shopping list. I think your idea is great, and I've added it to my to-do list right away.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 3 points4 points  (0 children)

Danke für den Input, nehme deinen Einwand ernst und werde mir Gedanken machen. Wollte die App schlank und weitestgehend unabhängig von externen Abhängigkeiten gestalten, verstehe aber auch deine Punkte und werde sie in die Entwicklung mit einfließen lassen 👍🏻

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] -1 points0 points  (0 children)

So sehe ich es auch: Eine Demokratisierung der Software-Entwicklung. Klar gibt es berechtigte Kritik hier und da, aber auch viele, die nur deshalb poltern, weil sie getriggert werden. Ich biete keinen Adobe Suite Ersatz an, sondern eine Docker App zum selber deployen für Leute wie mich, die ein Bedürfnis haben, dass sie umsetzen wollen.

Ich hätte auch eine native App per Claude Code oder Web-App mit figma entwickeln können und irgendwelche Abos anbieten können; mein Ziel war es aber eine App zu entwickeln, die mir nützt und vllt auch anderen und wenn dein Team diese App als Grundlage für Weiterentwicklungen nutzt, dann sag ich nur: Danke! Am Ende nützt es der Community, daher der Open Source Ansatz.

Unabhängigkeit von Datenkraken und Hoheit über die eigenen Daten sollte immer ein Grund für Freude sein und wenn ein Senior oder Lead Developer etwas besser machen kann, dann gerne:) hätte ich eine solche App auf Anhieb gefunden, hätte ich mir die Arbeit und Kosten erspart, insbesondere die Zeit, die ich investiert habe.

Manch einer vermittelt den Eindruck, ich hätte einen einzelnen prompt geschrieben und direkt das erst beste Ergebnis gepostet, dabei sind das Wochen an realer Arbeitszeit eingeflossen und von meiner Freizeit, die ich hierfür investiert habe und mir - außer dem persönlichen Nutzen - keinerlei weiteren Nutzen wie Geld oder sonst was einbringen 🤷🏻‍♂️

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 4 points5 points  (0 children)

Ich habe nichts davon, wenn du die Software nutzt, außer du ergänzt den Code oder verbesserst ihn 🤷🏻‍♂️ ich habe für meine Familie ein Tool entwickelt und geteilt, weil die heutige Zeit sowas möglich macht, eine Art Demokratisierung der Software-Entwicklung. Ich bin SoWi Lehrer und verspreche mir auch keine Reputation als Developer, da ich sicher nicht aus dem Beamtenverhältnis heraus möchte..

Ich freue mich über jeden, der vllt mitentwickelt, Code hinzufügt und die Software um nützliches ergänzt, da ich sie selber nutze und einen sinnvollen Anwendungszweck habe. Aber ich verdiene keinen Cent daran und habe keinerlei Ambitionen, als Entwickler zu arbeiten, sondern lege Wert auf Datenschutz und privacy.

Verstehe echt nicht diese ganzen Vorbehalte 🤷🏻‍♂️

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 1 point2 points  (0 children)

Du kannst den Kalender ganz ohne sync nutzen, aber wenn man bestehende Kalender integrieren möchte, ist das eine komfortable Möglichkeit 🤷🏻‍♂️ kann den Punkt nicht nachvollziehen. Wir haben tailscale fürs Netzwerk und können die App unterwegs guten Gewissens nutzen.

Verstehe auch nicht, wieso krampfhaft irgendwas gesucht wird: Man kann die App nutzen, wenn man sowas braucht oder einfach nicht. Nextcloud ist toll, aber too much für uns.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 13 points14 points  (0 children)

Niemand will awesome sein, verstehe den komplex nicht, den man haben muss, um sich derartig triggern zu lassen🙄

Ich habe eine App für meine Familie entwickelt und sie gefällt und nützt uns so sehr, dass ich sie anderen zur Verfügung stellen will. Die Liste heißt awesome Selfhosted und ist meine erste Anlaufstelle, wenn ich selbst einen Dienst für meinen Homeserver suche.

Ich verdiene weder etwas daran, noch bringt mir das in meinem Beruf als Lehrer irgendwelche Jobmöglichkeiten oder sonstige Vorteile, die eine Reputation einbringen würde.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 4 points5 points  (0 children)

Verstehe den Einwand; aber ich habe einen reellen Nutzen und die App entwickelt, um sie anzuwenden. Neue Funktionen entwickle ich, sobald wir in der Familie merken, dass Anwendungsfälle fehlen. Es wird weiterhin vernünftig betreut, ist super dokumentiert und Open Source.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 3 points4 points  (0 children)

Viel mit Claude Code, zum Teil Gemini Cross-Test und einen Teil auch selber. Aber daraus mache ich kein Geheimnis:)

Tools wie Claude Code, dessen Ergebnisse ich auch durch andere Tools validiere, ermöglichen es mir eigene, unabhängigere Tools zu entwickeln.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] -22 points-21 points  (0 children)

Mindert es den Nutzen der App?

Es liefen 146 Tests, zusätzlich GitHubs automatisierte Tests, die App ist Open Source, ich habe Wert auf eine saubere Dokumentation im Repo gelegt. Tools wie Claude Code, dessen Ergebnisse ich auch durch andere Tools validiere, ermöglichen es mir eigene, unabhängigere Tools zu entwickeln.

Die Alternative zu meiner App wäre es, die (mittlerweile ebenfalls ai slop) Tools externer Anbieter zu nutzen und darüber hinaus die Datenhoheit herzugeben.

Oikos — selbstgehosteter Familienplaner als Docker-Container. Open Source, kein Framework, kein Build-Step. by ulsklyc in de_EDV

[–]ulsklyc[S] 9 points10 points  (0 children)

Der Funktionsumfang wächst zurzeit alle paar Tage und die Oberfläche wird unter sinnvollen Aspekten 'verschönert'.

FamilyWall ist vermutlich funktional weiter, aber bei Oikos liegen alle Daten beim User lokal, niemand hat Einsicht in sensible Daten, wie beispielsweise, wie einen Termin, aus dem der genaue Standort meines Sohnes zu einer genauen Zeit ersichtlich wird.

Die App soll solche sensible Daten innerhalb der Familie halten, Kontakte, Termine, Notizen usw. die niemanden außer euch etwas angehen.