AIUNITES is local-first. Your data lives on your device, syncs to the cloud when you want it to, and can be exported as plain JSON at any time. No proprietary formats. No vendor lock-in. If you leave, your data leaves with you.
Three layers, all designed for portability.
Every site stores data in the browser's localStorage. It works offline, it's fast, and it's under your control. This is the primary data store โ the cloud is the backup, not the other way around.
The cloud-database.js module is deployed to all 18 sites. It syncs localStorage data to cloud storage via Google Forms and Apps Script. Toggle online/offline anytime. Your local data is always the source of truth.
A shared SQLite database holds user accounts, sessions, and cross-site data. Syncs via GitHub. This is the backbone that makes cross-site identity and data sharing possible.
Your data is never trapped. Every site gives you tools to take it with you.
One click downloads all your data as a JSON file. Human-readable, machine-parseable. Open it in any text editor. Import it into any system that accepts JSON. No special software needed.
Upload a backup file to restore your data on any device. Moving to a new browser? New computer? Upload your JSON and you're back exactly where you left off.
Every site with full middleware includes a cache viewer with three tabs: Summary (what's stored and how much), Items (browse individual records), and Raw (see the exact localStorage contents). Full transparency into what's on your device.
Because all AIUNITES sites share a common database and data format conventions, data can flow between sites without conversion. Your identity is the same everywhere. Your preferences travel with you. Site-specific data uses consistent key naming patterns so tools can find and operate on data across the network.
localStorage key pattern: Every site prefixes its keys with a consistent identifier. User data uses [prefix]_users and [prefix]_currentUser. Site-specific data follows the same convention. This makes it possible to build cross-site tools that know where to find things.
Notation as portable data: MNN strings and VRN strings are plain text stored in standard fields. A workout logged on BodSpas produces an MNN string that InThisWorld could read to pose an avatar, or that a future analytics tool could parse for trend analysis. The notation is the data interchange format.
Most web apps store your data on their servers in their format. If the company shuts down, your data disappears. If you want to leave, you might get a CSV export if you're lucky. More often, you get nothing.
AIUNITES inverts this. Your device is the primary store. The cloud is a convenience layer for sync and backup. Everything is in open formats โ JSON for structured data, plain text for notation, SQLite for the shared database. You can inspect any of it at any time.
This isn't just a technical decision. It's the same philosophy behind the notation systems: your data belongs to you, it should be readable without special software, and it should work across contexts without conversion.
For developers and anyone who wants to look under the hood.
| Component | Technology | Location |
|---|---|---|
| Client Storage | localStorage (browser) | User's device |
| Cloud Sync Module | cloud-database.js (vanilla JS) | js/cloud-database.js on every site |
| Cloud Backend | Google Forms + Apps Script | Google Cloud |
| Shared Database | SQLite (app.db) | AIUNITES-database-sync/data/ |
| Database Sync | GitHub | AIUNITES-database-sync repo |
| Export Format | JSON | User's download folder |
| Notation Data | MNN / VRN (plain text) | Stored in localStorage + CloudDB |
Log into any AIUNITES app, open the user dropdown, and click Backup. That's your data, in JSON, on your device.