Overview
Discover what makes Dashy powerful
Dashy is a lightweight, self‑hosted personal dashboard built to aggregate links and services into a single, highly configurable web interface. From a developer’s perspective, the application functions as a **single‑page web portal** that consumes a declarative YAML/JSON configuration to render pages, widgets, and status indicators. The dashboard exposes no external APIs for data ingestion; instead, it pulls information directly from the services you host via HTTP(S) endpoints or local sockets. This design keeps the runtime footprint small while still allowing rich, real‑time monitoring and interaction with a wide variety of self‑hosted tools.
Frontend
Backend
Configuration
Data Sources
Overview
Dashy is a lightweight, self‑hosted personal dashboard built to aggregate links and services into a single, highly configurable web interface. From a developer’s perspective, the application functions as a single‑page web portal that consumes a declarative YAML/JSON configuration to render pages, widgets, and status indicators. The dashboard exposes no external APIs for data ingestion; instead, it pulls information directly from the services you host via HTTP(S) endpoints or local sockets. This design keeps the runtime footprint small while still allowing rich, real‑time monitoring and interaction with a wide variety of self‑hosted tools.
Architecture
- Frontend: A Vue 3 SPA powered by Vite. The UI is rendered client‑side, with the configuration fetched once during bootstrap and then stored in Vuex/Pinia for reactive updates. Styling is handled by Tailwind CSS, with optional custom CSS injection.
- Backend: A minimal Node.js/Express server (or a static file host) that serves the SPA and optional API endpoints for authentication, cloud sync, and status checks. The backend can be replaced with any static file server or CDN because the dashboard is largely self‑contained.
- Configuration: A single
config.yml(or JSON) file describes pages, links, widgets, theming, authentication rules, and more. The file is parsed by the server at startup; changes trigger a hot‑reload if run in development mode. - Data Sources: Status checks are performed by the client via
fetchor WebSocket to arbitrary URLs, enabling integration with health‑check endpoints (/health,/status) of services like Grafana, Traefik, or custom scripts. - Persistence: Optional encrypted cloud backup uses the
axios‑based sync service; otherwise, state is purely in-memory and the config file is the source of truth.
Core Capabilities
- Multi‑page navigation: Declaratively define an arbitrary number of pages, each with its own layout and widgets.
- Real‑time status monitoring: Periodic polling or WebSocket hooks provide live status bars, color coding, and tooltips.
- Widgets: Built‑in widgets include Markdown, iFrame, JSON viewer, and custom HTTP data visualizers. Developers can extend this via a simple plugin interface that registers new widget components.
- Theming & Custom CSS: Tailwind theme overrides, custom color palettes, and raw CSS injection give full control over appearance.
- Authentication & SSO: Supports OAuth2, OpenID Connect, and custom user stores; multi‑user roles and permissions are configurable in the YAML.
- Keyboard shortcuts & search: Global hotkeys, fuzzy search by name/domain/tags, and customizable keybindings.
- Backup & Sync: Encrypted backup to cloud services (e.g., S3, Dropbox) via a REST endpoint; supports restore and versioning.
Deployment & Infrastructure
Dashy is intentionally lightweight (≈ 10 MB for the Node bundle) and can run on any platform that supports Node 14+ or Docker. The recommended deployment model is a Docker container:
docker run -p 80:80 -v /path/to/config.yml:/app/config.yml dashy- Supports environment variables for secrets (e.g., OAuth client IDs) and TLS termination via a reverse proxy.
For large teams, a Kubernetes deployment can be achieved with a simple StatefulSet and ConfigMap to mount the configuration. The stateless nature of the frontend allows horizontal scaling behind a load balancer; only one instance needs to manage authentication sessions unless session persistence is required.
Integration & Extensibility
Dashy’s plugin system lets developers ship new widgets or link handlers as npm packages. The API surface is intentionally minimal: a GET /status/:service endpoint for health checks, an optional /auth/callback, and a WebSocket channel (/ws) for real‑time updates. Custom scripts can expose JSON over HTTP, which Dashy can consume via its “JSON widget.” Webhooks are supported by adding a link with type: webhook and specifying the payload schema.
Developer Experience
- Configuration: YAML is human‑readable; the documentation includes extensive examples for each feature. The
config-editorin the UI offers live validation. - Documentation: Comprehensive docs on GitHub cover every option, with a quick‑start guide and a showcase of real deployments.
- Community: Active issue tracker, frequent releases (semantic versioning), and a Discord channel for real‑time support.
- Licensing: MIT, encouraging commercial use without copyleft obligations.
Use Cases
| Scenario | Why Dashy? |
|---|---|
| Home Lab Operator | Centralize access to VPN, Grafana, Portainer, and personal projects in one UI. |
| DevOps Team | Provide a single portal for internal services with role‑based access and live health dashboards. |
| Remote Workers | A minimal startpage that loads quickly, with custom widgets for weather or GitHub activity. |
| Educational Labs | Share a curated list of learning resources and project dashboards with students. |
Advantages
- Performance: The SPA loads in under 200 ms on a typical home router; all status checks are asynchronous and non‑blocking.
- Flexibility: Declarative config + plugin hooks mean developers can tailor the dashboard to any workflow without touching core code.
- Security: Optional OAuth2/SSO and encrypted backups keep sensitive links hidden from casual observers.
- Cost
Open SourceReady to get started?
Join the community and start self-hosting Dashy today
Related Apps in other
Immich
Self‑hosted photo and video manager
Syncthing
Peer‑to‑peer file sync, no central server
Strapi
Open-source headless CMS for modern developers
reveal.js
Create stunning web‑based presentations with HTML, CSS and JavaScript
Stirling-PDF
Local web PDF editor with split, merge, convert and more
MinIO
Fast, S3-compatible object storage for AI and analytics
Weekly Views
Repository Health
Information
Explore More Apps
Tracks
Web-based GTD™ task manager built with Ruby on Rails
Livebook
Interactive notebooks for Elixir code and data workflows
Mere Medical
Centralize Your Health Records, One Secure Place
DreamFactory
Auto‑generate secure, documented APIs for your data
W-CMS
Spontaneous lightweight CMS for artists and experimental sites
Ampache
Stream your music and videos from any device
