{"id":48596179,"url":"https://github.com/emminix/flowforge-timetrack","last_synced_at":"2026-04-08T21:02:04.123Z","repository":{"id":333572155,"uuid":"1136032255","full_name":"EmminiX/FlowForge-Timetrack","owner":"EmminiX","description":"Simple, privacy-focused desktop app for time tracking and invoicing. All data    stays local. Built with Tauri 2, React 19, and SQLite. Features floating       timer widget, Pomodoro, global shortcuts, and offline PDF invoicing. Free for    personal use, non-commercial license.","archived":false,"fork":false,"pushed_at":"2026-03-09T08:25:50.000Z","size":9283,"stargazers_count":1,"open_issues_count":13,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-09T12:40:43.619Z","etag":null,"topics":["desktop-app","freelance","invoicing","linux","macos","offline-first","pomodoro","privacy-first","productivity","react","rust","sqlite","tauri","tauri-app","time-tracking","typescript","windows"],"latest_commit_sha":null,"homepage":"https://FlowForge.Emmi.Zone","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/EmminiX.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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-01-17T00:24:55.000Z","updated_at":"2026-03-02T10:58:28.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/EmminiX/FlowForge-Timetrack","commit_stats":null,"previous_names":["emminix/flowforge-timetrack"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/EmminiX/FlowForge-Timetrack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmminiX%2FFlowForge-Timetrack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmminiX%2FFlowForge-Timetrack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmminiX%2FFlowForge-Timetrack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmminiX%2FFlowForge-Timetrack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/EmminiX","download_url":"https://codeload.github.com/EmminiX/FlowForge-Timetrack/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/EmminiX%2FFlowForge-Timetrack/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31573788,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-08T14:31:17.711Z","status":"ssl_error","status_checked_at":"2026-04-08T14:31:17.202Z","response_time":54,"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":["desktop-app","freelance","invoicing","linux","macos","offline-first","pomodoro","privacy-first","productivity","react","rust","sqlite","tauri","tauri-app","time-tracking","typescript","windows"],"created_at":"2026-04-08T21:01:15.802Z","updated_at":"2026-04-08T21:02:04.113Z","avatar_url":"https://github.com/EmminiX.png","language":"TypeScript","readme":"\u003cdiv align=\"center\"\u003e\n  \u003cimg src=\"public/EmmiLogo-noBG.png\" alt=\"Emmi Logo\" width=\"100%\" /\u003e\n\u003c/div\u003e\n\n# FlowForge-Track\n\nA simple, focused desktop app for tracking your work time and creating invoices. Built with privacy in mind — all your data stays on your computer.\n\nDesigned to be easy to use, especially for people who prefer clear interfaces and minimal distractions.\n\n![FlowForge-Track Screenshot](docs/screenshot.png)\n\n## 📖 User Guide\n\nFor a complete walkthrough of features and settings, read the **[FlowForge-Track User Guide](https://flowforge.emmi.zone/guide)**.\n\n## 📥 Download\n\n| Platform | Download | Notes |\n|----------|----------|-------|\n| **macOS** | [Download .dmg](https://github.com/EmminiX/FlowForge-Timetrack/releases/latest) | macOS 10.15+ |\n| **Windows** | [Download .exe](https://github.com/EmminiX/FlowForge-Timetrack/releases/latest) | Windows 10+ |\n| **Linux** | [Download .AppImage](https://github.com/EmminiX/FlowForge-Timetrack/releases/latest) | Most distros |\n\n\u003e **Note:** The app is not code-signed yet. See [Installation Guide](#-installation-guide) below for how to open it.\n\n## 🌟 Key Features\n\n- **Floating Timer Widget** — A small always-on-top window so you always see your timer, positioned at the corner of your app\n- **Client \u0026 Project Management** — Organize your work with clients and projects\n- **Product Catalog** — Manage reusable products/services with descriptions, prices, and SKUs\n- **Offline Invoicing** — Create professional PDF invoices with multi-page support\n- **Down Payment Support** — Record deposits on invoices, subtracted from total on PDF and preview\n- **CSV Export** — Export invoice data to CSV for spreadsheets and accounting tools\n- **Global Keyboard Shortcuts** — Control the timer from anywhere:\n  - `Cmd+Shift+S` (Mac) / `Ctrl+Shift+S` (Win/Linux) — Start/Resume\n  - `Cmd+Shift+P` (Mac) / `Ctrl+Shift+P` (Win/Linux) — Pause\n  - `Cmd+Shift+X` (Mac) / `Ctrl+Shift+X` (Win/Linux) — Stop \u0026 Save\n  - `Cmd+Shift+W` (Mac) / `Ctrl+Shift+W` (Win/Linux) — Toggle Widget\n  - `Cmd+Shift+M` (Mac) / `Ctrl+Shift+M` (Win/Linux) — Toggle Sound\n- **Global Search** — Quick-find clients, projects, and invoices from the header (`Cmd+K` / `Ctrl+K`)\n- **Pomodoro Timer** — Built-in work/break intervals (25/5 min default, customizable)\n- **Dashboard Analytics** — Daily, weekly, and monthly breakdowns with 30-day chart view and per-client/project stats\n- **Smart Idle Detection** — Automatically pauses the timer when you step away\n- **Customizable UI** — Light/Dark theme, Lexend font, adjustable font size and density\n- **App Update System** — Checks for updates automatically and notifies you of new releases\n- **Time Editing** — Manually adjust time logs to correct mistakes or add missed time\n- **High Contrast Theme** — Improved visibility for low-vision users\n- **Disable Animations** — Option to turn off UI animations for a calmer experience\n- **Multi-Currency Support** — Set currency per client (EUR, USD, GBP) with correct symbols throughout\n- **Backup \u0026 Restore** — Export your data for safe-keeping or move it to another device\n- **Undo Actions** — Toast-based undo system for destructive actions (delete with undo)\n- **Keyboard Navigation** — Full keyboard shortcuts dialog (`?` key) and keyboard-friendly UI\n- **Error Boundaries** — Graceful error handling prevents full-app crashes\n\n## 🛡️ Data Protection\n\nFlowForge-Track includes built-in protection against accidental data loss:\n\n- **Cascading Delete Protection** — You cannot delete a client that has projects, or a project that has time entries\n- **Delete Order** — To remove a client completely, you must first delete their time entries, then projects, then the client\n- **No Undo Needed** — This deliberate friction prevents accidental deletion of important billing data\n\n## 📁 Data Storage \u0026 Privacy\n\n**How and where is data stored?**\nData is stored locally in a SQLite database file named `flowforge.db` within your operating system's application data directory.\n\n- **macOS**: `~/Library/Application Support/com.emmi.flowforge/flowforge.db`\n- **Windows**: `C:\\Users\\{username}\\AppData\\Local\\com.emmi.flowforge\\flowforge.db`\n- **Linux**: `~/.local/share/com.emmi.flowforge/flowforge.db` *(Standard XDG data path)*\n\n**What are the storage limits?**\nThere are no artificial limits imposed by the application. Storage is only limited by the available disk space on your computer.\n\n**How is data storage controlled?**\n- **Control**: You have full ownership of the local database file.\n- **Access**: The app manages data internally, but you can manually back up, copy, or delete the `flowforge.db` file if needed.\n- **Security**: Access is controlled by your operating system's user permissions.\n\n## 📦 Installation Guide\n\n### macOS\n\nSince the app isn't code-signed yet, macOS will show a security warning:\n\n1. Download the `.dmg` file\n2. Open it and drag FlowForge-Track to Applications\n3. **First launch:** Right-click the app → Select \"Open\" → Click \"Open\" in the dialog\n4. Grant Accessibility permissions for keyboard shortcuts:\n   - System Settings → Privacy \u0026 Security → Accessibility\n   - Click `+` and add FlowForge-Track\n\n### Windows\n\nWindows SmartScreen may show a warning:\n\n1. Download the `.exe` installer\n2. If you see \"Windows protected your PC\", click \"More info\"\n3. Click \"Run anyway\"\n4. Follow the installation wizard\n\n### Linux\n\n1. Download the `.AppImage` file\n2. Make it executable: `chmod +x FlowForge-Track.AppImage`\n3. Run it: `./FlowForge-Track.AppImage`\n\n## 🚀 Quick Start\n\n1. **Add a Client** — Go to Clients → New Client\n2. **Create a Project** — Go to Projects → New Project (link it to your client)\n3. **Start Tracking** — Go to Timer → Select project → Click Start\n4. **Create Invoice** — Go to Invoices → New Invoice → Select client and time entries\n\n## 🛠 For Developers\n\n### Tech Stack\n\n- **Frontend:** React 19, TypeScript, Tailwind CSS 4, Zustand\n- **Backend:** Tauri 2 (Rust)\n- **Database:** SQLite (local)\n- **Build:** Vite 7\n\n### Requirements\n\n- [Rust](https://www.rust-lang.org/) (latest stable)\n- [Node.js](https://nodejs.org/) (v20+)\n- [pnpm](https://pnpm.io/)\n\n### Development\n\n```bash\n# Install dependencies\npnpm install\n\n# Start development mode\npnpm tauri dev\n\n# Run tests\npnpm test\n\n# Type check\npnpm exec tsc --noEmit\n```\n\n### Build\n\n```bash\n# Build for current platform\npnpm tauri build\n```\n\nOutputs are in `src-tauri/target/release/bundle/`\n\n### Project Structure\n\n```\nsrc/                    # React frontend\n├── components/         # Shared UI components\n├── features/          # Feature modules (timer, clients, invoices, etc.)\n├── services/          # Database service layer\n├── stores/            # Zustand state stores\n└── types/             # TypeScript types\n\nsrc-tauri/             # Rust backend\n├── src/lib.rs         # Main Tauri setup, commands, migrations\n└── tauri.conf.json    # App configuration\n```\n\n## 📄 License\n\n**AGPL-3.0** — Free and open source.\n\nThis software is licensed under the [GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0.html). You are free to use, modify, and distribute it under the terms of the AGPL-3.0.\n\n**What this means:**\n- Use it freely for any purpose (personal, educational, commercial)\n- Modify and share it — but derivatives must also be AGPL-3.0\n- If you run a modified version as a network service, you must share the source\n\n**Commercial licensing** (proprietary use without AGPL obligations) is available — contact security@emmi.zone.\n\nSee [LICENSE](LICENSE) for full legal details.\n\n## 🤝 Contributing\n\nContributions are welcome! Please feel free to submit a Pull Request. By contributing, you agree that your contributions will be licensed under the AGPL-3.0.\n\n---\n\n## 👨‍💻 About\n\n**Made with ❤️ by [Emmi](https://emmi.zone)** — for freelancers and small teams who value simplicity and privacy.\n\nFlowForge-Track was born from the need for a simple, privacy-focused time tracking tool that doesn't require subscriptions, cloud accounts, or complex setup. It's built to respect your data and your workflow.\n\n**Connect:**\n- 🌐 Website: [emmi.zone](https://emmi.zone)\n- 📝 Blog: [blog.emmi.zone](https://blog.emmi.zone)\n- 💼 LinkedIn: [linkedin.com/in/emmic](https://www.linkedin.com/in/emmic/)\n\n---\n\n*This project is open source under AGPL-3.0. If you find it valuable, consider sharing it with others who might benefit from it.*\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femminix%2Fflowforge-timetrack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Femminix%2Fflowforge-timetrack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Femminix%2Fflowforge-timetrack/lists"}