DEV Community

Cover image for Edi Life OS v1.2: accounts, a one-command Docker install, and my first outside contributors
Edris
Edris

Posted on

Edi Life OS v1.2: accounts, a one-command Docker install, and my first outside contributors

Edi Life OS: tick a habit, ask Claude to log an expense, see it in Finance

Less than two weeks after launching Edi Life OS, my self-hosted life dashboard (habits, goals, focus timer, Kanban, finances, plus an MCP server for AI assistants), here is v1.2. More than twenty pull requests have landed since the last release, and most of them came from people I had never met.

What's new

Multiple accounts with private workspaces

Each account signs in on its own and has its own Finance, Focus, Goals, Growth, Kanban, habits, notes, attachments, theme and currency. Everything in the app and the API is filtered to the signed-in account, so one account cannot read another's data by guessing an ID.

Two things to know before you use it:

  • Every account is an administrator. Administrators can reset each other's passwords, which means they can sign in as that person. There is no public sign-up; only add people you trust.
  • Back up your database before upgrading. Version 1.2 migrates the schema (version 3), and older versions of the app must not run against it, because their queries would show every account's rows. The details are in docs/accounts.md.

A prebuilt Docker image

No clone, no build. The image is published for amd64 and arm64, so it also runs on a Raspberry Pi:

curl -fsSLO https://raw.githubusercontent.com/edrisranjbar/lifeos/main/docker-compose.image.yml
curl -fsSL https://raw.githubusercontent.com/edrisranjbar/lifeos/main/.env.example -o .env   # then set your sign-in and passwords
docker compose -f docker-compose.image.yml up -d
Enter fullscreen mode Exit fullscreen mode

Open http://localhost:8080. Upgrade later with docker compose -f docker-compose.image.yml pull && docker compose -f docker-compose.image.yml up -d; your data lives in named volumes. Pin a version with LIFEOS_VERSION=1.2.0 in .env.

And more

  • 18 more display currencies (SEK, NOK, DKK, PLN, CZK, BRL, MXN, ARS, CLP, COP, SAR, QAR, KWD, EGP, ZAR, NGN, PKR, BDT). They only change the label; nothing is converted.
  • Inline editing of goal checklist tasks, and redesigned Notes, Notepad and Personal Growth views.
  • Hardening: logout is a POST with a CSRF check, schema changes run once per version under a lock, and static assets are cached with versioned URLs.

The community part

This is the part I did not expect. A set of small, well-explained issues (an accessibility fix, a few currencies, backup commands, reverse-proxy examples, a troubleshooting guide, a Spanish README) turned into pull requests from three people who had never contributed here before. Their work is in the release notes with their handles. If you want a first open-source contribution, the good first issues are real and there are more.

A bug I caught after publishing

Right after I published the image I looked at the registry's tag list instead of assuming it was fine. The compose file asked for the latest tag, and latest did not exist yet, because that tag is only created when you push a release. The one-line install would have failed for the first person who tried it.

I fixed the default, tagged the release, and then added a CI job that runs the README's exact steps on a clean machine (download the compose file, set a password, start the published image, sign in) on every change. If you publish an artifact, test the artifact, not just the code that builds it.

Links

What do you check before trusting a self-hosted project with your data? I'd like to hear it in the comments.

Top comments (0)