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 18+ (recommended 20.x)
- pnpm (or npm/yarn)
- 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 venv && pip install -r requirements.txt) - 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 appTX-220 — Concept, design, direction. Claude (Anthropic) — Implementation. Claude Code — Development.
MIT — See LICENSE file for details.
Built with ⚡ Claude Code