An open-source, ultra-lightweight web application and CLI daemon designed to track and instantly rewind a corrupted or modified SQLite database file back to any previous state (e.g. 3 minutes ago) during local development — just like scrubbing a video.
🇹🇷
Türkçe Dokümantasyon:Türkçe rehber için lütfen README.tr.md dosyasına bakın.
- ⚡ Zero Dependencies:Built with pure PHP 8+ and Vanilla JS. Requires no heavy frameworks or npm packages.
- 🌐 Full i18n / Multi-Language:Translation files are completely decoupled in-
lang/. Switch languages dynamically from the UI (e.g., 🇹🇷 Turkish, 🇬🇧 English). Easily contribute by adding or updating-lang/xx.jsonfiles. - 💾 SQLite WAL Mode Aware:Seamlessly backs up and restores-
.sqlite-waland-.sqlite-shmfiles for databases running-PRAGMA journal_mode=WAL;. - 🔍 Visual Data & Table Diff Viewer:Compare row counts and table changes (-
+3 rows in live) between any historic snapshot and your current live database before restoring. - 📌 Snapshot Pinning & Tagging:Pin important snapshots with one click to protect them from auto-cleanup.
- 📥 One-Click Snapshot Export:Download any historic database state directly as a-
.sqlitefile. - ⌨️ Keyboard Navigation Shortcuts:Navigate through the timeline smoothly using- Left Arrow (⬅️)and- Right Arrow (➡️)keys.
- 🔄 Automatic Instant Snapshots (Watcher Daemon):Background CLI script (-
watcher.php) listens for modifications in-database.sqliteand automatically creates timestamped snapshots (-backups/1715000000_database.sqlite). - 🧹 Automatic Cleanup:Maintains up to- 50 backups, purging older unpinned snapshots to prevent disk clutter.
time-travel/
├── index.html # Chrono Console UI (Tailwind CSS + Vanilla JS + i18n Engine)
├── api.php # Snapshot listing, restoration, diff, export, and i18n API
├── watcher.php # CLI background listener daemon script (WAL & signal aware)
├── lang.php # Multi-language (i18n) helper class
├── lang/ # JSON language files directory
│ ├── tr.json # Turkish language file
│ └── en.json # English language file
├── database.sqlite # Target SQLite database file (created automatically)
├── backups/ # Timestamped backups directory (created automatically)
├── README.md # Primary English documentation
└── README.tr.md # Turkish documentation & guide
Create a JSON file inside lang/ matching the ISO code (e.g., lang/es.json, lang/de.json):
{
"code": "es",
"name": "Español",
"flag": "🇪🇸",
"cli": { ... },
"api": { ... },
"ui": { ... }
}
Open any file in lang/*.json and edit strings. Changes reflect immediately on the Web UI and CLI without restarting the server.
php watcher.phpTo specify custom language or database file:
php watcher.php database.sqlite en``php -S 127.0.0.1:8000Open your browser and navigate to: http://127.0.0.1:8000
- Open the web interface.
- Click "✍️ Add Test Data (DB Write)".
- Observe terminal output from
watcher.php:[+] Created snapshot: 1715000000_database.sqlite - Drag the timeline slider or use ⬅️ / ➡️arrow keys.
- Click "🔍 Compare Diff"to inspect table row changes.
- Click "⚡ Restore To This State"to rewind your database!
chmod -R 775 .This project is open-source under the MIT license.