Business & Finance
A zero-dependency, ultra-lightweight database time machine for SQLite
Key Points
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.
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 updatinglang/xx.json
files. - 💾 SQLite WAL Mode Aware: Seamlessly backs up and restores
.sqlite-wal
and.sqlite-shm
files for databases runningPRAGMA 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
.sqlite
file. - ⌨️ 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 indatabase.sqlite
and 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.php
To specify custom language or database file:
php watcher.php database.sqlite en
php -S 127.0.0.1:8000
Open 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.