All projects / My SPACE

My SPACE

Shipped · v0.1.3

Private, offline-first vault for notes, secrets, passwords, and subscriptions. No servers. No analytics. Your data stays on your device.

Chrome Web Store ↗ GitHub ↗
Stack TypeScriptReactPGlite (WASM)Web Crypto APIChrome MV3KotlinJetpack ComposeRoomAndroid KeystoreGoogle Drive API
Features

Notes

Write in Markdown with live preview. Tag, search, and keep your thoughts organised.

Secret Vault

AES-GCM encrypted credentials — unlocked with your master password. Keys never leave your device.

Password Generator

Cryptographically strong passwords with configurable length, charset, and one-click copy.

Subscriptions

Track recurring costs and billing cycles with multi-currency conversion across all your services.

To-Do Lists

Organise tasks with colour coding, priority levels, due dates, and recurrence options.

Map Pins

Save and categorise locations from any map platform with ratings, notes, and custom tags.

Google Drive Sync

End-to-end encrypted push/pull via Drive appDataFolder — private, invisible in your Drive UI.

Import

Migrate from 1Password, Bitwarden, and other password managers via CSV or JSON.

Architecture

Chrome Extension

Chrome MV3 side panel extension. React UI communicates via message passing through a service worker that handles OAuth and Drive sync. All crypto runs in an offscreen document.

Message flow
01
Side Panel (React)
Views + components
02
Service Worker
OAuth · Drive sync · Router
03
Offscreen Document
PGlite WASM · Web Crypto
Quick start
cd chrome-extension
npm install
npm run dev     # watch mode
npm run build   # production dist/

Android App

Kotlin + Jetpack Compose. Uses Android Keystore for AES-GCM encryption and syncs through the same Drive appDataFolder as the Chrome extension.

Tech stack
UI Jetpack Compose + Material3
Database Room (SQLite)
Crypto Android Keystore AES-GCM
Sync Drive REST API + Retrofit
Navigation Navigation Compose
Cross-platform sync

Chrome and Android share the same Drive file (keyvault-backup.json). Data is re-encrypted with the local platform key on import — Android Keystore on mobile, Web Crypto on Chrome.

Privacy
No servers
All data stored locally — IndexedDB on Chrome, Room on Android.
No analytics
No tracking, no telemetry, no crash reporting, no ads.
Encrypted at rest
AES-GCM with your master passphrase. Keys never leave your device.
Private Drive folder
Sync uses appDataFolder — invisible in your Drive UI, inaccessible to other apps.
Privacy Policy
Terms of Service