Structa Where ideas find structure "Your Notes, Your Structure, Your Way."
Keep track of your notes and tasks, and keep your freedom
There are a lot of other things out there, but all of them have drawbacks, here are a few I've tried
- Todoist -- everything is slowly becoming paid and they own all your data?
- Notion -- man that privacy policy is scary
- Oblivion -- another propetairy thing? paid sync?
why are these all almost usable but they all have at least one major flaw, and why do the only tend to get worse over time? I was kind of fed up
I realized that there are a couple of things I want out of an appplication like this, and there are a couple of non-negotiables
- non-proprietary -- this is my data, fuck your terms of service
- mobile and desktop
- offline first -- I need my notes, even if I'm in the woods
- collaborative editing
- sharing by link is a must
- no single point of failure
- I need all this stuff to sync between my devices too
Realizing that this didn't exist, and all of the times in my past that I have needed this application, I realized I was done waiting for someone else to buid it.
So, how do I hope to achieve all of this?
- non-proprietary -- easy -- AGPL 3 tried and true
- mobile and desktop -- a pwa seems like common sense
- offline first -- service workers and indexedDb with eager caching
- collaborative editing - yjs and webrtc
- sharing - a user model with invite links
- no single point of failure - (plans to implement ActivityPub)
- sync - currently pocketbase subscriptions and eager caching
An assortment of desktop and mobile screenshots from the res folder
- to run the main app you need to setup pocketbase locally
docker compose up
-
navigate to http://localhost:8090 and setup your admin account
-
import the schema
- go to settings > import collections and load the file at ./src/lib/collection.json
-
you then need make your env file
cp .env.defaults .env
# install dependencies and start the app
pnpm install
pnpm dev
-
navigate to http://localhost:5173 and create your account
-
get hacking!
this is a very basic server that just handles signaling for document collaboration and normally shouldn't need to be run, and the app is currently hardcoded to point to the production one
cd ./yjs-signaling-server
pnpm install
pnpm dev