{"id":35159912,"url":"https://github.com/mp-se/ha-dashboard","last_synced_at":"2026-04-01T23:24:04.897Z","repository":{"id":327469721,"uuid":"1106717866","full_name":"mp-se/ha-dashboard","owner":"mp-se","description":"Home assistant dashboard as a standalone app (PWA)","archived":false,"fork":false,"pushed_at":"2026-03-21T21:37:51.000Z","size":21683,"stargazers_count":4,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2026-03-22T06:04:59.575Z","etag":null,"topics":["dashboard","ha","home-assistant","pwa","vibe-coding","webapp"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mp-se.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":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":"2025-11-29T19:56:52.000Z","updated_at":"2026-03-21T16:44:50.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/mp-se/ha-dashboard","commit_stats":null,"previous_names":["mp-se/ha-dashboard"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/mp-se/ha-dashboard","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mp-se%2Fha-dashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mp-se%2Fha-dashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mp-se%2Fha-dashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mp-se%2Fha-dashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mp-se","download_url":"https://codeload.github.com/mp-se/ha-dashboard/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mp-se%2Fha-dashboard/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31292891,"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","ha","home-assistant","pwa","vibe-coding","webapp"],"created_at":"2025-12-28T17:59:49.047Z","updated_at":"2026-04-01T23:24:04.888Z","avatar_url":"https://github.com/mp-se.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"![release](https://img.shields.io/github/v/release/mp-se/ha-dashboard?label=latest%20release)\n![issues](https://img.shields.io/github/issues/mp-se/ha-dashboard)\n![GitHub Stars](https://img.shields.io/github/stars/mp-se/ha-dashboard)\n![Docker Pulls](https://img.shields.io/docker/pulls/mpse2/ha-dashboard)\n![Docker Image Size](https://img.shields.io/docker/image-size/mpse2/ha-dashboard/latest)\n![GitHub Actions](https://img.shields.io/github/actions/workflow/status/mp-se/ha-dashboard/publish.yml)\n![License](https://img.shields.io/github/license/mp-se/ha-dashboard)\n![Last Commit](https://img.shields.io/github/last-commit/mp-se/ha-dashboard)\n\n# Home Assistant Dashboard\n\nA Vue.js dashboard app built with Vite that displays real-time sensor data from your local Home Assistant instance. Configure everything via a simple JSON file with support for multiple entity specification methods, dynamic filtering, and flexible card components.\n\n## Examples\n\n| Light Control                     | Switch Control                      | Sensor Display                          |\n| --------------------------------- | ----------------------------------- | --------------------------------------- |\n| ![Light](./images/halight-on.png) | ![Switch](./images/haswitch-on.png) | ![Sensor](./images/hasensor-single.png) |\n\n| Binary Sensor                                    | Gauge                                 | Weather                            |\n| ------------------------------------------------ | ------------------------------------- | ---------------------------------- |\n| ![Binary Sensor](./images/habinarysensor-on.png) | ![Gauge](./images/hagauge-medium.png) | ![Weather](./images/haweather.png) |\n\n| Energy Chart                     | Sun Info                   | Person Location                       |\n| -------------------------------- | -------------------------- | ------------------------------------- |\n| ![Energy](./images/haenergy.png) | ![Sun](./images/hasun.png) | ![Person](./images/haperson-home.png) |\n\nThis whole project has been an experiment to see what i could create using Github Copilot and let that do most of the coding and documenation.\n\nDemo is available here: https://mp-se.github.io/ha-dashboard/\n\n## ✨ Features\n\n- **Real-time Updates**: WebSocket connection with automatic reconnection and exponential backoff\n- **Area Organization**: View devices and entities grouped by Home Assistant areas with virtual area entities\n- **JSON Configuration**: Entire dashboard driven by a single configuration file—no code changes needed\n- **Flexible Entity Specification**: Direct references, wildcard patterns, or custom getter functions\n- **Device \u0026 Area Support**: Browse devices organized by area, filter entities by area, view area entity mappings\n- **Room Cards**: Advanced HaRoom component with temperature/humidity display, multi-entity controls (up to 3), and domain-specific colors\n- **Responsive Design**: Dark mode support with mobile-optimized layout\n- **PWA Support**: Install as a native app on any device\n- **Offline Fallback**: Service worker enables offline access with cached data\n- **Security**: Self-signed SSL certificate support for local LAN deployment\n- **Extensible**: Component-based architecture for easy customization\n- **Error Resilience**: Network failures don't break the UI; connection status always visible\n- **Robust Configuration**: Detailed JSON error reporting with line/column context for malformed configs\n\n## 🎨 Card Types\n\nThe dashboard includes 26+ pre-built card components:\n\n**Entity Controls**: Lights, Switches, Buttons, Select, Media Player\n**Displays**: Sensors, Binary Sensors, Gauges, Chips, Text, Links, Images\n**Information**: Weather, Sun, Person, Energy, Alarms, Printers\n**Layout**: Spacers, Headers, Rows\n**Advanced**: Sensor graphs, Entity lists, Custom getters\n\n## 🚀 Quick Start\n\n### 1. Prerequisites\n\n- Docker and Docker Compose (or Node.js 18+ for development)\n- Home Assistant instance with a long-lived access token\n\n### 2. Configure the Dashboard\n\nEdit `public/data/dashboard-config.json`:\n\n```json\n{\n  \"app\": {\n    \"title\": \"My Dashboard\",\n    \"developerMode\": false,\n    \"localMode\": false\n  },\n  \"haConfig\": {\n    \"haUrl\": \"https://your-ha-instance:8123\",\n    \"accessToken\": \"your-long-lived-token-here\"\n  },\n  \"views\": [\n    {\n      \"name\": \"overview\",\n      \"label\": \"Overview\",\n      \"icon\": \"mdi mdi-view-dashboard\",\n      \"entities\": [\n        { \"entity\": \"light.living_room\" },\n        { \"entity\": \"sensor.temperature_*\" }\n      ]\n    }\n  ]\n}\n```\n\n### 3. Deploy with Docker\n\n```bash\ndocker-compose up -d\n```\n\nAccess at `https://localhost:8443` (or your configured domain).\n\n## 📖 Documentation\n\n- **[Installation \u0026 Deployment](./INSTALL.md)** — Docker setup, certificate generation, Portainer configuration\n- **[Configuration Guide](./CONFIGURATION.md)** — JSON schema, all card types, entity specification methods, areas \u0026 devices, examples\n\n## 🔒 Security Notes\n\n- Credentials can be stored in the JSON config file or entered via the UI\n- Stored credentials persist in browser localStorage\n- Self-signed certificates require installation on client devices for PWA access\n- Home Assistant token should be long-lived; rotate periodically in HA\n\n## 🛠️ Development\n\n```bash\nnpm install\nnpm run dev\n```\n\nApp runs at `http://localhost:5173` with hot reload enabled.\n\n## 📦 Project Structure\n\n```\n.\n├── public/data/dashboard-config.json    # Main configuration file\n├── src/\n│   ├── components/                      # Card components\n│   ├── stores/haStore.js                # State management\n│   └── App.vue                          # Root component\n├── docker/\n│   ├── Dockerfile\n│   ├── nginx.conf\n│   └── ssl/                             # Certificates \u0026 generation script\n└── package.json\n```\n\n## 🐛 Troubleshooting\n\nSee [INSTALL.md](./INSTALL.md) for deployment issues and [CONFIGURATION.md](./CONFIGURATION.md) for configuration problems.\n\n## 📝 License\n\nSee LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmp-se%2Fha-dashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmp-se%2Fha-dashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmp-se%2Fha-dashboard/lists"}