{"id":47600042,"url":"https://github.com/mathieudubart/homelab","last_synced_at":"2026-04-24T23:00:55.461Z","repository":{"id":345384743,"uuid":"1185606438","full_name":"MathieuDubart/homelab","owner":"MathieuDubart","description":"Homelab iOS is a high-performance, native dashboard for self-hosted infrastructure. Built with a focus on Zero Trust security and multi-process synchronization.","archived":false,"fork":false,"pushed_at":"2026-04-24T21:34:27.000Z","size":999,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-04-24T21:35:25.454Z","etag":null,"topics":["coolify","glances-api","monitoring","monitoring-tool","self-hosted","swift","swiftui"],"latest_commit_sha":null,"homepage":"","language":"Swift","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/MathieuDubart.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-03-18T19:00:05.000Z","updated_at":"2026-04-24T21:33:45.000Z","dependencies_parsed_at":null,"dependency_job_id":"7dd341bf-a385-4da5-a883-2d37bb8bdd20","html_url":"https://github.com/MathieuDubart/homelab","commit_stats":null,"previous_names":["mathieudubart/homelab"],"tags_count":12,"template":false,"template_full_name":null,"purl":"pkg:github/MathieuDubart/homelab","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathieuDubart%2Fhomelab","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathieuDubart%2Fhomelab/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathieuDubart%2Fhomelab/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathieuDubart%2Fhomelab/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/MathieuDubart","download_url":"https://codeload.github.com/MathieuDubart/homelab/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/MathieuDubart%2Fhomelab/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32243803,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-24T13:21:15.438Z","status":"ssl_error","status_checked_at":"2026-04-24T13:21:15.005Z","response_time":64,"last_error":"SSL_read: 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":["coolify","glances-api","monitoring","monitoring-tool","self-hosted","swift","swiftui"],"created_at":"2026-04-01T18:45:46.781Z","updated_at":"2026-04-24T23:00:55.450Z","avatar_url":"https://github.com/MathieuDubart.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n# Homelab 🏠\n\n**A high-performance, native iOS dashboard for your self-hosted infrastructure.**\nZero Trust security · multi-process sync · a juicy UI powered by Metal shaders and neon gauges.\n\n[![Platform](https://img.shields.io/badge/platform-iOS%2018%2B-black.svg?logo=apple)](https://www.apple.com/ios/)\n[![Swift](https://img.shields.io/badge/Swift-5-orange.svg?logo=swift\u0026logoColor=white)](https://swift.org)\n[![Release](https://img.shields.io/github/v/release/MathieuDubart/homelab?sort=semver\u0026label=release)](https://github.com/MathieuDubart/homelab/releases)\n[![License: GPL v3](https://img.shields.io/badge/License-GPLv3-blue.svg)](LICENSE.md)\n[![TestFlight](https://img.shields.io/badge/TestFlight-join%20beta-0A84FF.svg?logo=apple)](https://testflight.apple.com/join/1ENGpuwn)\n[![Made with SwiftUI](https://img.shields.io/badge/made%20with-SwiftUI-5E5CE6.svg?logo=swift\u0026logoColor=white)](https://developer.apple.com/xcode/swiftui/)\n\n\u003c/div\u003e\n\n---\n\n## ✨ Features\n\n- 🧭 **Full-Stack Monitoring** — real-time CPU / RAM / Docker stats via Glances \u0026 Coolify\n- ⚡ **Interactive Control** — start / stop / restart services straight from native swipe actions\n- 🗃 **TorBox Integration** — track and manage downloads with juicy, interactive rows\n- 📱 **Smart Widgets** — multi-size widgets with interactive AppIntents for instant health checks from the Home Screen\n- 🔐 **Secure by Design** — native support for Cloudflare Zero Trust (Service Tokens / mTLS)\n- 🎨 **Juicy DA** — custom design system with Metal shaders, animated mesh backdrops, neon gauges, and tuned haptics\n\n## 🧱 Architecture\n\n- **Unified Storage** — centralized `StorageService` backed by App Groups, ensuring seamless data flow between the main app and widget extensions.\n- **Network Resilience** — custom `URLRequest` builders with automatic header injection for Cloudflare-protected endpoints.\n- **UX-First Logic** — a dedicated `DeletedTorrentsManager` handles asynchronous API deletions and prevents \"ghost\" data from surfacing.\n\n## 🛠 Tech Stack\n\n| Layer        | Stack                                                                   |\n| ------------ | ----------------------------------------------------------------------- |\n| UI           | SwiftUI · Metal shaders · custom design system (palette, typography, motion) |\n| Concurrency  | Swift Concurrency (`async/await`, `Task`, actors)                       |\n| Widgets      | WidgetKit + AppIntents (interactive widgets)                            |\n| Persistence  | `UserDefaults` via App Groups                                           |\n| Networking   | `URLSession` with Cloudflare Zero Trust (Service Tokens)                |\n| Haptics      | Centralized `Haptics` helper around `sensoryFeedback` / `CHHapticEngine` |\n\n## 🚀 Installation\n\n### Requirements\n\n- iOS **18.0** or later (iPhone XS / XR / 11-series and newer)\n- A recent Xcode shipping an iOS 18+ SDK\n- At least one of: **Glances**, **Coolify**, **TorBox** reachable from your device\n\n### Option A — TestFlight *(easiest)*\n\n→ Join the public beta: **\u003chttps://testflight.apple.com/join/1ENGpuwn\u003e**\n\n### Option B — Grab a release\n\n→ Head to the [**Releases page**](https://github.com/MathieuDubart/homelab/releases) and pick the latest version.\n\n### Option C — Build from source\n\n```bash\ngit clone https://github.com/MathieuDubart/homelab.git\ncd homelab\nopen Homelab.xcodeproj\n```\n\n→ Pick your signing team under **Signing \u0026 Capabilities**\n→ Connect your iPhone or select a simulator\n→ Press **⌘R**\n\n## ⚙️ Configuration\n\nOnce launched, open **Settings** and fill in:\n\n| Field                                   | Purpose                                                             |\n| --------------------------------------- | ------------------------------------------------------------------- |\n| Glances URL                             | Base URL of your Glances instance (CPU / RAM / Docker stats)        |\n| Coolify URL + API Token                 | Endpoint and token for managing Coolify services                    |\n| TorBox API Token                        | Authenticates the TorBox integration                                |\n| Cloudflare Client ID \u0026 Secret *(opt.)*  | Service Token pair for Cloudflare Access–protected endpoints        |\n\nThe dashboard starts polling automatically once the URLs are saved.\n\n## 🧠 Engineering Highlights\n\n- **Zero Trust Architecture** — Cloudflare Access (mTLS / Service Tokens) secures internal APIs without compromising the mobile UX.\n- **Multi-Process State Sync** — App Groups + custom `StorageService` keep a single source of truth between the main app and interactive widgets.\n- **Optimistic UI \u0026 Ghost Data Handling** — custom logic masks API latency and phantom items for a zero-friction experience even with slow backends.\n\n## 📜 License\n\nCopyright © 2026 Mathieu Dubart\n\nHomelab is free software, released under the **GNU General Public License, version 3 or (at your option) any later version** (`SPDX-License-Identifier: GPL-3.0-or-later`). You may use, study, share, and modify it under the terms of the GPL; derivative works must be released under the same license. See [`LICENSE.md`](LICENSE.md) for the full text.\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\nBuilt with ❤️ for the self-hosting community.\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieudubart%2Fhomelab","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmathieudubart%2Fhomelab","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmathieudubart%2Fhomelab/lists"}