{"id":46576747,"url":"https://github.com/tschuegy/linkboard-nextcloud","last_synced_at":"2026-04-01T21:26:52.706Z","repository":{"id":342105857,"uuid":"1172444575","full_name":"tschuegy/linkboard-nextcloud","owner":"tschuegy","description":"Personal service dashboard for Nextcloud — organize, monitor and widget-ify your self-hosted services","archived":false,"fork":false,"pushed_at":"2026-03-29T11:33:25.000Z","size":13867,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-03-29T14:21:35.321Z","etag":null,"topics":["dashboard","homelab","nextcloud","nextcloud-app","php","self-hosted","vuejs","widgets"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tschuegy.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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},"funding":{"custom":["https://paypal.me/linkboard"]}},"created_at":"2026-03-04T10:12:42.000Z","updated_at":"2026-03-29T11:33:27.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/tschuegy/linkboard-nextcloud","commit_stats":null,"previous_names":["tschuegy/linkboard-nextcloud"],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/tschuegy/linkboard-nextcloud","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschuegy%2Flinkboard-nextcloud","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschuegy%2Flinkboard-nextcloud/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschuegy%2Flinkboard-nextcloud/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschuegy%2Flinkboard-nextcloud/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tschuegy","download_url":"https://codeload.github.com/tschuegy/linkboard-nextcloud/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tschuegy%2Flinkboard-nextcloud/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292249,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-01T21:15:39.731Z","status":"ssl_error","status_checked_at":"2026-04-01T21:15:34.046Z","response_time":53,"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":["dashboard","homelab","nextcloud","nextcloud-app","php","self-hosted","vuejs","widgets"],"created_at":"2026-03-07T10:05:38.967Z","updated_at":"2026-04-01T21:26:52.681Z","avatar_url":"https://github.com/tschuegy.png","language":"JavaScript","funding_links":["https://paypal.me/linkboard","https://github.com/sponsors/tschuegy"],"categories":[],"sub_categories":[],"readme":"# LinkBoard\n\nA beautiful, customizable service dashboard for Nextcloud.\n\n![Nextcloud](https://img.shields.io/badge/Nextcloud-30--33-blue)\n![PHP](https://img.shields.io/badge/PHP-8.1+-purple)\n![License](https://img.shields.io/badge/License-AGPL--3.0-green)\n[![GitHub Sponsors](https://img.shields.io/github/sponsors/tschuegy)](https://github.com/sponsors/tschuegy)\n\n---\n\n## About\n\nLinkBoard turns your Nextcloud into a personal homelab dashboard.\nOrganize all your self-hosted services in one place — with live status checks,\nreal-time widgets, custom icons, and a fully configurable layout.\nInspired by [Gethomepage](https://gethomepage.dev), but deeply integrated into Nextcloud.\n\n## Screenshots\n\n| | | |\n|---|---|---|\n| ![Dashboard](img/screenshots/screenshot_GUI.png) | ![Status Single](img/screenshots/screenshot_StatusSingle.png) | ![Status Overview](img/screenshots/screenshot_StatusOverview.png) |\n| ![Settings](img/screenshots/screenshot_Settings.png) | ![Settings](img/screenshots/screenshot_Settings2.png) | |\n\n## Features\n\n- **Service Dashboard** – Organize services in categories with drag \u0026 drop sorting\n- **Grid Layout** – Grafana-style grid layout with free drag, resize, and placement of cards within categories\n- **Configurable Grid** – Set grid granularity per category (6, 12, or 24 columns) with auto-arrange and row-height options\n- **Edit Mode** – Lock/unlock edit mode toggle to prevent accidental changes\n- **Status Checks** – Live health checks with dot or border indicators\n- **Status History** – Response time charts, uptime tracking, and a dedicated status overview page\n- **Offline Notifications** – Nextcloud notifications when services go down, with configurable threshold and recovery alerts\n- **External Notification Channels** – 19 providers: Discord, Slack, Telegram, Matrix, Teams, Ntfy, Gotify, Pushover, E-Mail (SMTP), and more, with per-service overrides\n- **136 Built-in Widgets** – Real-time data from Proxmox, Patchman, Immich, Uptime Kuma, and 130+ more; plus an inline-editable Table widget ([full list](WIDGETS.md))\n- **System Resources** – Monitor CPU, memory, disk usage, uptime, and CPU temperature with progress bars\n- **Category Spacers** – Decorative separator categories with multiple styles (solid, dashed, dotted, dots, stars, and more)\n- **Flexible Icons** – Upload custom images (PNG, SVG, WebP…), use Material Design Icons (inline SVG), or any URL\n- **Theming** – Dark, light, or auto mode with custom background images and blur effects\n- **Card Styles** – Glass, Solid, Flat, or Transparent card backgrounds\n- **Configurable Layout** – Adjust columns, card styles, search bar, and more\n- **Import / Export** – YAML \u0026 JSON support, compatible with Gethomepage services.yaml\n- **Keyboard Shortcuts** – Quick access via `/`, `E`, `R`, `Esc` ([see below](#keyboard-shortcuts))\n- **Multi-Language** – Full i18n support with 57 languages\n- **Per-User** – Each Nextcloud user gets their own private dashboard\n\n## Keyboard Shortcuts\n\n| Key | Action |\n|-----|--------|\n| `/` | Focus search bar |\n| `E` | Toggle edit mode |\n| `R` | Refresh all (status checks, widgets, resources) |\n| `Escape` | Close editor / exit edit mode / clear search |\n\n\u003e Shortcuts are disabled while typing in input fields. `E` and `R` are ignored when Ctrl/Cmd is held.\n\n## Requirements\n\n- Nextcloud 32 or 33\n- PHP 8.2 – 8.4\n\n## Installation\n\nDownload the latest release tarball and extract it into your Nextcloud `apps/` directory:\n\n```bash\ncd /path/to/nextcloud/apps\ntar xzf linkboard.tar.gz\n```\n\nThen enable the app:\n\n```bash\ncd /path/to/nextcloud/\nphp occ app:enable linkboard\n```\n\n## Development Setup\n\n### Prerequisites\n\n- Node.js 20+\n- npm\n- PHP 8.2+\n- Composer\n- A Nextcloud development instance\n\n### Getting Started\n\n```bash\ncd /path/to/nextcloud/apps/\ngit clone https://github.com/tschuegy/linkboard-nextcloud.git linkboard\ncd linkboard\n\ncomposer install\nnpm install\nnpm run build\n\ncd /path/to/nextcloud/\nphp occ app:enable linkboard\n```\n\n### Development Commands\n\n```bash\nnpm run watch    # Auto-rebuild on changes\nnpm run build    # Production build\nnpm run lint     # Lint check\nnpm run lint:fix # Auto-fix lint issues\n```\n\n## Project Structure\n\n```\nlinkboard/\n├── appinfo/           # App metadata \u0026 routes\n├── lib/               # PHP backend\n│   ├── Controller/    # REST API controllers\n│   ├── Db/            # Entity \u0026 mapper classes\n│   ├── Service/       # Business logic\n│   ├── Widget/        # 136 widget definitions\n│   └── Migration/     # Database migrations\n├── src/               # Vue.js frontend\n│   ├── components/    # Vue components\n│   ├── store/         # Pinia state management\n│   └── services/      # API client\n├── css/               # Global styles\n├── img/               # App icon \u0026 screenshots\n├── l10n/              # Translation files (57 languages)\n└── templates/         # PHP templates\n```\n\n## API Overview\n\nAll endpoints under `/apps/linkboard/api/v1/`:\n\n| Endpoint | Methods | Description |\n|----------|---------|-------------|\n| `/dashboard` | GET | Full dashboard (categories + services + settings) |\n| `/categories` | GET, POST | List / create categories |\n| `/categories/{id}` | GET, PUT, DELETE | Single category CRUD |\n| `/categories/reorder` | PUT | Reorder categories |\n| `/services` | GET, POST | List / create services |\n| `/services/{id}` | GET, PUT, DELETE | Single service CRUD |\n| `/services/reorder` | PUT | Reorder services |\n| `/services/{id}/move/{catId}` | PUT | Move service to category |\n| `/settings` | GET, PUT | User settings |\n| `/icons` | GET, POST | List / upload icons |\n| `/icons/{filename}` | GET, DELETE | Serve / delete icon |\n| `/widgets/catalog` | GET | Available widget types |\n| `/widgets/data` | POST | Fetch widget data |\n| `/status/{id}/history` | GET | Status history for a service |\n| `/status/history` | GET | Status history for all services |\n| `/resources/{categoryId}` | GET | System resources (CPU, memory, disk) |\n\n## License\n\nAGPL-3.0-or-later\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftschuegy%2Flinkboard-nextcloud","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftschuegy%2Flinkboard-nextcloud","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftschuegy%2Flinkboard-nextcloud/lists"}