The idea
A small tracker or collection should not require an account, a subscription, or a database server. Privatium is an open-source framework for small personal apps, such as a tracker, a collection, a form, or a list. The apps and their data stay on hardware you control.
The launcher of a Privatium space, where each card opens one small app.
How it works
Privatium is one program written in Rust, with Lua and SQLite built in. Every record you save is a line of plain text in an append-only file on your disk, and each device writes only its own file, so nothing is ever overwritten and no two devices can write the same file. SQLite is only a cache that the program rebuilds from those files at any time. To back up, you copy a folder. To restore, you copy it back. If you can open a text file, you can see everything Privatium knows about you.
You choose how much code to write. A few Lua pages are enough for most trackers and lists. If you want your own HTML and JavaScript, or a whole Rust program, the framework gives you the same storage, the same backup, and the same launcher. A linter checks each app against the framework's rules, including its accessibility rules.
Finding other devices
On your home network, each node announces itself over mDNS, so other nodes and paired devices find it without any setup. Two nodes on the same network find each other and sync on their own. Neither one is in charge, and they don't need to choose a primary. To pair a phone, you scan a QR code and then tap four emoji. The emoji are part of a password-authenticated key exchange. It sets up an encrypted connection and remembers the keys for next time. Because of that, the encryption doesn't need a TLS certificate, a domain name, a DNS provider, or port forwarding.
Pairing a device: scan the code or open the address, then type the two words or tap the four emoji.
Syncing without merging databases
Every log is append-only and has one writer. To sync, a node asks its peers for the lines it hasn't seen yet and adds them to its copy. That is a simple set union, so there is no merge algorithm and no conflict resolution step, and no node ever sends a whole database. Each node rebuilds its own SQLite cache from the combined logs. A change made on one device shows up on the other devices the next time they connect.
Remote access
The design also covers remote access without an account, a domain, or a payment. A node publishes its address as signed records on a public distributed hash table, and it connects to its peers directly. When a direct connection fails, it uses a relay that sees only encrypted traffic. Browsers can't use this method, so remote access from a browser still needs a real domain and a certificate. The documentation explains this.
My contribution
I created Privatium and develop it. The first app built on it is Medication Tracker, which helps a family keep track of everyone's prescriptions, refills, insurance, and prior authorizations.
