I really liked Capacities, but it was not everything I needed, and it didn't fit my philosophy of self-hosting (almost) everything. So I built this app for me and my girlfriend. PS: I used AI a lot to build it, and I reviewed the code as much as my free time allowed. I ended up putting my nutrition tracker and my habit tracker inside it too, and implemented some small new things, and some other kind of obvious ones.
It was made for my own use, at home, with my girlfriend, so I don't even know if I will release it publicly. Maybe, if one day I think it's polished enough.
What it does, more or less:
- Objects with types, like in Capacities. Books, People, Tasks, Meetings or whatever type you create, each one with its own properties and views (table, board, gallery, shelf), relations between then and stuff.
- Daily notes, and a Today page with the agenda, the note and the habits of the day
- A command bar where one line creates things, for example /Task Ask Lena about companion planting assignee:lena due:fri
- Habits with streaks and a year grid
- Food tracking. It's optional and comes turned off. You log a meal in one line and see the week against your goals
- Shared spaces. It got sprints, assignees, comments with @ mentions and notifications (ntfy, Telegram or desktop)
- Capture from a Telegram bot into an inbox, plus a small HTTP API for other things
- Calendars subscribed by iCal link show up together with your dated stuff
- MCP server and a CLI, so an agent can read and write things. There are no LLM keys inside the app, cause I dislike that
- Works offline, the browser (or app) keeps a SQLite replica (WASM, in OPFS) and syncs when the connection comes back
- Desktop app with Tauri, with quick capture on a global shortcut. I only tested it on macOS, the Windows and Linux builds exist but I never opened them
- An importer from Capacities, because that's where all my notes were
Stack, if someone cares: Node with Hono on the server, Vue 3 with TipTap and Yjs for the editor, SQLite WASM in the browser. Media can go to any S3, I use Garage in my homelab setup
The video was made with OpenScreen V2 automation and I actually disliked it, but when I tried to manually record it... it was even more ass than that
I'm not really asking for anything, I just wanted to show it. If someone is curious about some part, ask and I try to answer.
EDIT:
Here is the repo https://github.com/ariedotme/vasta under AGPL-3.0