{"id":33288492,"url":"https://github.com/tendry-lab/device-ui","last_synced_at":"2026-05-12T20:40:49.603Z","repository":{"id":315020714,"uuid":"1048247054","full_name":"tendry-lab/device-ui","owner":"tendry-lab","description":"Web UI foundation for device monitoring and control. Preact components, TypeScript, tested core logic. Complete interfaces under 50KB gzipped.","archived":false,"fork":false,"pushed_at":"2025-12-26T15:56:33.000Z","size":366,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-12-28T03:42:31.830Z","etag":null,"topics":["embedded-ui","monitoring","preact","typescript","webgui"],"latest_commit_sha":null,"homepage":"https://tendry-lab.com/developers/","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tendry-lab.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-09-01T06:46:19.000Z","updated_at":"2025-12-26T15:56:35.000Z","dependencies_parsed_at":"2025-10-16T08:31:01.956Z","dependency_job_id":"ee4f651b-f77d-4b6d-909e-4b49dff84fd1","html_url":"https://github.com/tendry-lab/device-ui","commit_stats":null,"previous_names":["tendry-lab/device-ui"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tendry-lab/device-ui","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendry-lab%2Fdevice-ui","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendry-lab%2Fdevice-ui/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendry-lab%2Fdevice-ui/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendry-lab%2Fdevice-ui/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tendry-lab","download_url":"https://codeload.github.com/tendry-lab/device-ui/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tendry-lab%2Fdevice-ui/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32956818,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-12T09:19:52.626Z","status":"ssl_error","status_checked_at":"2026-05-12T09:17:33.438Z","response_time":102,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6: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":["embedded-ui","monitoring","preact","typescript","webgui"],"created_at":"2025-11-17T20:01:13.069Z","updated_at":"2026-05-12T20:40:49.588Z","avatar_url":"https://github.com/tendry-lab.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"## Introduction\n\n[![Build Web-GUI](https://github.com/tendry-lab/bonsai-zero-a-1-k-web-gui/actions/workflows/build.yml/badge.svg)](https://github.com/tendry-lab/bonsai-zero-a-1-k-web-gui/actions/workflows/build.yml)\n\nWeb UI foundation for device monitoring and control. Preact components, TypeScript, tested core logic. Complete interfaces under 50KB gzipped.\n\n## Features\n\n- Preact + TypeScript\n- System and network configuration\n- Sensor monitoring components\n- OTA firmware update\n- Notification system\n- Offline device documentation\n- Responsive design\n\n## Preview\n\n![](docs/images/device_ui_mockup.png)\n\n## Development\n\n**Install dependencies**\n\nAll dependencies should be installed locally, use `npm install --save-dev`.\n\n```sh\nnpm install\n```\n\n**Build Web GUI**\n\nBefore writing Web GUI to the device, make sure it's been built.\n\n```sh\nnpm run build\n```\n\n**Run tests**\n\nCover your code with unit test, both logic and UI components. We use [vitest](https://vitest.dev/).\n\n```\nnpm run test\nnpm run test:coverage\nnpm run test:watch\n```\n\n**Format code**\n\nMake sure your code is properly formatted. We use [eslint](https://eslint.org/).\n\n```sh\nnpm run fmt\n```\n\n**Compress assets**\n\n- By default everything that is inside HTML, CSS, JS are compressed during the build process, see vite.config.js for more details.\n- SVG files should be pre-compressed with [SVGO](https://github.com/svg/svgo) as `npx svgo example.svg -o example.compressed.svg`, `SVGO` is available after running `npm install`. After SVG is pre-compressed it should be inlined in the source code directly or as JSX component.\n\n## Contribution\n\n- [Preact JS Framework](https://preactjs.com/) is used for development, please refer to its official documentation for more details.\n- `master` - stable and ready-to-use branch. [Semver](https://semver.org/) is used for versioning.\n- Try to keep PR small.\n- New code should be similar to existing code. Use the [Google TypeScript Style Guide](https://google.github.io/styleguide/tsguide.html).\n\n## License\n\nThis project is licensed under the Apache 2.0 License - see the LICENSE file for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftendry-lab%2Fdevice-ui","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftendry-lab%2Fdevice-ui","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftendry-lab%2Fdevice-ui/lists"}