Hey, I'm Marco.
mytile is a one-person side project. I got tired of checking ten different apps every morning, creating accounts everywhere, and trusting random services with my personal data. I couldn't find a single dashboard that just showed me everything I cared about without requiring a login — so I built one. It started as a thing for myself and kept growing until it felt worth sharing.
I have a full-time job, so development happens on evenings and weekends. I read every bug report and feature request, but it might take a while before I get to it. Thanks for your patience.
Discussions happen on GitHub — no account needed to browse, but you'll need one to post.
System Overview
Your Browser / PWA
↓
Cloudflare Worker
Stateless CORS proxy
↓
KV Store
Encrypted sync
External APIs
Weather, stocks, ...
localStorage
All your data stays here
Your Data & localStorage
localStorage
All your settings, tiles, and data — stored in your browser
↓
JSON Export
Download a backup file from settings
↑
JSON Import
Restore from a backup file in settings
No account, no server database. Everything you configure — tiles, stocks, teams, health data, todos — is saved in your browser's localStorage. Your data never leaves your device unless you opt in to cloud sync.
Cloud Sync (optional)
Push
You edit data
Saved to localStorage instantly
↓
Debounce & throttle
Batches rapid edits, max 1 push / 2 min
↓
Browser encrypts
AES-256-GCM + PBKDF2
↓
Stored in KV
Only ciphertext, no metadata
Pull
App starts or refreshes
Automatic on every load
↓
Fetch encrypted backup
↓
Browser decrypts
AES-256-GCM
↓
Version compare
Newer side wins, then reload
Restore
Enter sync code
↓
Worker fetches ciphertext
↓
Browser decrypts
AES-256-GCM
↓
Dashboard restored
Zero-knowledge: your sync code never leaves your device. The server only sees encrypted data. If you close the app with unsynced changes, an emergency push fires automatically.