full stack·active·jul 2026 – present
life os
a self-hosted personal operating system: passwords, money, jobs, habits, notes, tasks, calendar and workouts in one backend, with web, phone and desktop clients.
javaspring bootpostgresqlreactreact nativetauridockernginx
life-os — modules
vault/v1/vaultpasswords
finance/v1/financebudgets, transactions
jobs/v1/jobssearch and interviews
habits/v1/habitsstreaks, reminders
notes/v1/notesfolders, attachments
tasks/v1/tasksprojects and goals
calendar/v1/calendarevents, recurrence
workouts/v1/workoutssessions, records
one process · one gateway · one schema per module
explain this project
role
architect and sole developer
impact
replaces a stack of separate apps with one system i own, run and back up myself.
challenge
many separate services would have been simpler to draw and far harder to run. the goal was clean module boundaries without paying the cost of microservices.
approach
- built each domain as its own library jar with its own migrations and schema, then assembled them into a single spring boot app.
- used in-process events and caches instead of a message broker.
- put nginx in front as the one gateway and wrote an installer so a fresh machine needs one command.
outcome
- eleven modules behind one process and one database.
- web, phone and desktop clients over the same api.
- ci that tests every module and builds the web and mobile apps.
lessons
- module boundaries matter more than process boundaries.
- a project you use daily finds its own bugs faster than any test plan.
next steps
- automate deploys and image publishing.
- add more automation rules in the core module.
- harden backups and restore drills.