Perfect file replication. Incremental backup with zero dialogs.
A minimal, elegant desktop backup application that uses rsync for reliable incremental file synchronization. Configure once, backup forever.
β¨ Core Features
- Incremental Sync: Only transfers changed files using rsync's algorithm
- Real-Time Progress: Live file transfer status, speed, ETA
- Backup History: Complete audit trail of all backups with timestamps and file counts
- Scheduled Backups: Daily, weekly, monthly, or custom cron schedules
- Zero Dialogs: Set it once, it just works
- Smart Exclusions: Automatically excludes node_modules, .git, .next, logs, and build artifacts
- Dark Mode: Native dark/light theme toggle
π Technical Highlights
- Built with Electron + Next.js 14 for desktop + web capabilities
- TypeScript for type safety across main and renderer processes
- IPC Bridge for secure process communication
- Zustand for lightweight state management
- Tailwind CSS for responsive UI
- node-cron for reliable scheduling
- Node.js 22.12+ (required by Electron 41)
- pnpm (recommended; CI uses pnpm)
- rsync (included on macOS/Linux; Windows bundled with app)
# Clone repository
git clone https://github.com/TX-220/replicant.git
cd replicant
# Install dependencies
pnpm install
# Development: Run in dev mode
pnpm dev
# Production: Build and package
pnpm distAfter installation, launch the app with a single command:
replicantThat's it. The Electron desktop window opens with the full backup interface ready to use.
- Open Configure tab
- Set backup name, source directory, destination directory
- Review default exclusions (node_modules, .git, .cache, .env.local, etc.)
- Add custom exclusions if needed (comma-separated)
- Click Save Configuration
- Click Execute Backup Now to start immediately
- Watch real-time progress: files transferred, speed, ETA
- Backup completes and is logged to history
- Open History tab
- See all past backups with timestamps, file counts, durations
- Status indicators show success/error for each backup
- Open Configure tab
- Enable Scheduled Backup
- Choose frequency: Daily, Weekly, Monthly, or Custom cron
- Set time and day (if applicable)
- Click Save Configuration
- View all active schedules in Schedules tab
replicant/
βββ src/
β βββ main/ # Electron main process
β β βββ main.ts # Entry point
β β βββ ipc.ts # IPC handlers (backup execution)
β β βββ scheduler.ts # Schedule management
β β βββ preload.ts # Context bridge
β βββ renderer/ # Next.js frontend
β β βββ pages/ # Page routes
β β βββ components/ # React components
β β βββ lib/ # Utilities, store, types
β βββ utils/ # Shared utilities
β β βββ rsync.ts # Rsync wrapper, path validation
β βββ shared/ # Shared constants
β βββ constants.ts # Default exclusions
βββ public/ # Static assets
βββ package.json
βββ tsconfig.json # Renderer TypeScript config
βββ tsconfig.electron.json # Main process TypeScript config
βββ next.config.js # Next.js configuration
Replicant automatically excludes patterns that shouldn't be backed up:
- Node.js:
node_modules/(reinstall withnpm install) - Python:
venv/,.venv/,env/,__pycache__/,*.pyc(reinstall withpython -m venv) - Build output:
.next/,dist/,build/ - System files:
.git/,.DS_Store,.env.local,*.log,.cache/
Note: Python virtual environments are excluded by default. They regenerate automatically after backup restore β just reinstall dependencies with pip install -r requirements.txt.
pnpm devnpx tsc --noEmit # Renderer
npx tsc -p tsconfig.electron.json --noEmit # Main processpnpm build # Compile TS + build Next.js
pnpm dist # Package Electron app2026-07-05 β Debug and improvements with support from the Grok team.
- Restored scheduled backups after app restart
- Strengthened path validation (same path, directory checks, overlap guards)
- Added config persistence (
~/.backup-app/config.json) and atomic history writes - Wired scheduled-backup completion events to the UI
- Fixed CI (Node 22, pnpm lockfile, security-check job)
- Improved Linux dev launch (
electron --no-sandbox, polling file watcher)
TX-220 β Concept, design, direction. Claude (Anthropic) β Implementation. Claude Code & Grok β Development and debug.
MIT β See LICENSE file for details.
Built with β‘ Claude Code
This was an experimental project developed with Claude (Haiku). Later improved significantly with Grok.