{"id":48505223,"url":"https://github.com/kalloslaszlo/winmachine","last_synced_at":"2026-04-11T15:13:04.160Z","repository":{"id":349760466,"uuid":"1203036530","full_name":"KallosLaszlo/winmachine","owner":"KallosLaszlo","description":"Windows Time Machine — open-source backup utility with NTFS hard-link snapshots, 3D time browser UI, SMB support, and system tray integration. Built with Go + Wails + React.","archived":false,"fork":false,"pushed_at":"2026-04-07T13:07:01.000Z","size":522,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2026-04-07T13:27:01.088Z","etag":null,"topics":["backup","desktop-app","file-recovery","golang","hard-link","incremental-backup","ntfs","react","smb","snapshot","system-tray","time-machine","wails","windows"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/KallosLaszlo.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-04-06T16:53:29.000Z","updated_at":"2026-04-07T13:06:59.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/KallosLaszlo/winmachine","commit_stats":null,"previous_names":["kalloslaszlo/winmachine"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/KallosLaszlo/winmachine","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KallosLaszlo%2Fwinmachine","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KallosLaszlo%2Fwinmachine/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KallosLaszlo%2Fwinmachine/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KallosLaszlo%2Fwinmachine/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/KallosLaszlo","download_url":"https://codeload.github.com/KallosLaszlo/winmachine/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/KallosLaszlo%2Fwinmachine/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31518643,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-07T03:10:19.677Z","status":"ssl_error","status_checked_at":"2026-04-07T03:10:13.982Z","response_time":105,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["backup","desktop-app","file-recovery","golang","hard-link","incremental-backup","ntfs","react","smb","snapshot","system-tray","time-machine","wails","windows"],"created_at":"2026-04-07T16:01:40.476Z","updated_at":"2026-04-11T15:13:04.143Z","avatar_url":"https://github.com/KallosLaszlo.png","language":"Go","funding_links":["https://ko-fi.com/laszlokallos"],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# WinMachine\n\n**Windows Time Machine — open-source backup utility with NTFS hard-link snapshots, 3D time browser UI, SMB support, and system tray integration.**\n\nBuilt with [Go](https://go.dev/) + [Wails](https://wails.io/) + [React](https://react.dev())\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](LICENSE)\n[![CodeQL](https://github.com/KallosLaszlo/winmachine/actions/workflows/codeql.yml/badge.svg)](https://github.com/KallosLaszlo/winmachine/actions/workflows/codeql.yml)\n[![Support me on Ko-fi](https://img.shields.io/badge/Support%20me%20on-Ko--fi-F16061?logo=ko-fi\u0026logoColor=white)](https://ko-fi.com/laszlokallos)\n\n\u003c/div\u003e\n\n---\n\n\u003e **⚠️ This project is under active development but already usable.** If you find any bugs or have suggestions, feel free to [open an issue](https://github.com/KallosLaszlo/winmachine/issues) or submit a pull request — contributions are welcome!\n\n---\n\n![WinMachine Screenshot](assets/screenshot1v011.png)\n\n## Features\n\n- **Incremental snapshots** — Only changed files are copied; unchanged files are NTFS hard-linked from the previous snapshot (zero extra disk space)\n- **Time Browser** — 3D card-stack UI to browse and restore files from any point in time, with mouse wheel navigation and draggable timeline\n- **Windows Explorer integration** — Mount any snapshot as a virtual drive letter via `subst`\n- **SMB network share support** — Back up to NAS/network drives with saved credentials\n- **Scheduled backups** — Configurable interval via cron (every 5 min to daily)\n- **Per-machine snapshots** — Identified by hostname + Windows MachineGuid, safe for multi-PC backups to the same target\n- **NTFS protection** — Snapshot directories are marked Hidden+System with NTFS ACLs (SYSTEM + Administrators only)\n- **Retention policy** — Automatic pruning: keep hourly/daily/weekly/monthly snapshots\n- **System tray** — Runs in background with tray icon, quick access to backup/pause/open\n- **Auto-start** — Optional Windows startup registration via registry\n- **Single .exe** — No installer needed, portable\n\n## Tech Stack\n\n| Component | Technology |\n|-----------|-----------|\n| Backend | Go 1.25+, [Wails v2](https://wails.io/) |\n| Frontend | React 18 + TypeScript + Vite |\n| Tray | [energye/systray](https://github.com/energye/systray) |\n| Scheduler | [robfig/cron](https://github.com/robfig/cron) |\n| Platform | Windows 10/11 (NTFS required) |\n\n## Installation\n\nDownload the latest `WinMachine.exe` from the [Releases](https://github.com/KallosLaszlo/winmachine/releases) page and run it — no installer or dependencies required. It's a single portable executable.\n\n\u003e **Note:** Requires Windows 10/11 with an NTFS-formatted backup target drive.\n\n## Building from Source\n\n### Prerequisites\n\n- **Go** 1.25+ — [download](https://go.dev/dl/)\n- **Node.js** 18+ — [download](https://nodejs.org/)\n- **Wails CLI** v2 — installed automatically by `buildme.bat`, or manually: `go install github.com/wailsapp/wails/v2/cmd/wails@latest`\n\n### Quick Start\n\n```bat\ngit clone https://github.com/KallosLaszlo/winmachine.git\ncd WinMachine\nbuildme.bat\n```\n\nThe script checks for Go, Node.js and Wails CLI, installs missing dependencies, and builds `build\\bin\\WinMachine.exe`.\n\n## Development\n\n```bat\nwails dev\n```\n\nRuns a live-reload dev server with hot module replacement for the frontend.\n\n## Project Structure\n\n```\nWinMachine/\n├── main.go                    # Entry point, embeds frontend + icon\n├── app.go                     # Wails bindings (all frontend-exposed methods)\n├── internal/\n│   ├── backup/\n│   │   ├── engine.go          # Core backup logic with hard link dedup\n│   │   ├── snapshot.go        # Snapshot listing, metadata, paths\n│   │   ├── restore.go         # File/folder restore + snapshot browsing\n│   │   └── retention.go       # Time-bucket pruning\n│   ├── config/\n│   │   └── config.go          # JSON config (source dirs, target, schedule, SMB)\n│   ├── fsutil/\n│   │   ├── hardlink.go        # NTFS hard link with copy fallback\n│   │   ├── walker.go          # Directory walker with excludes\n│   │   ├── volume.go          # NTFS detection, disk space\n│   │   ├── machineid.go       # Hostname + MachineGuid identifier\n│   │   └── protect.go         # Hidden+System attrs + NTFS ACL\n│   ├── scheduler/\n│   │   └── scheduler.go       # Cron-based scheduled backups\n│   ├── smb/\n│   │   └── smb.go             # Persistent SMB mount manager\n│   └── tray/\n│       └── tray.go            # System tray icon + menu\n├── frontend/\n│   └── src/\n│       ├── App.tsx             # Main layout with sidebar navigation\n│       ├── App.css             # All styles including Time Machine 3D UI\n│       └── pages/\n│           ├── Dashboard.tsx   # Status, stats, quick actions\n│           ├── TimeBrowser.tsx # 3D snapshot browser\n│           └── Settings.tsx    # Config: sources, target, SMB, schedule\n├── build/\n│   └── windows/\n│       └── icon.ico           # Application icon\n├── buildme.bat                # One-click build script\n└── wails.json                 # Wails project config\n```\n\n## Configuration\n\nConfig is stored at `%APPDATA%\\WinMachine\\config.json`:\n\n| Setting | Description |\n|---------|------------|\n| `sourceDirs` | Folders to back up |\n| `targetDir` | Local or SMB backup destination |\n| `targetType` | `\"local\"` or `\"smb\"` |\n| `smbTarget` | SMB share path, drive letter, credentials |\n| `scheduleInterval` | Cron expression (e.g. `@every 15m`) |\n| `retention` | Keep N hourly/daily/weekly/monthly snapshots |\n| `autoStart` | Register in Windows startup |\n| `excludePatterns` | Glob patterns to skip |\n\n## Known Issues\n\n- **Auto-start depends on exe location** — The auto-start feature saves the current exe path to the Windows Registry. If you move the exe to a different folder, auto-start will fail. To fix, toggle the auto-start option off and on again in Settings.\n\n## License\n\nMIT\n\n## Author\n\nKallos László — laszlo@kallos.dev\n\n## Tooling\nAI-assisted development was used (Claude Opus 4.6) for debugging, refactoring, and optimization.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalloslaszlo%2Fwinmachine","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkalloslaszlo%2Fwinmachine","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkalloslaszlo%2Fwinmachine/lists"}