{"id":40468662,"url":"https://github.com/bradenn/udap","last_synced_at":"2026-01-20T18:14:22.409Z","repository":{"id":37244069,"uuid":"230687617","full_name":"bradenn/udap","owner":"bradenn","description":"UDAP (Universal Device Aggregation Platform) provides a unified interface for aggregating various disjoint components.","archived":false,"fork":false,"pushed_at":"2024-04-23T03:28:06.000Z","size":40937,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-04-23T06:48:31.175Z","etag":null,"topics":["aggregation","control","devices","golang","home","modular","modules","smarthome","udap"],"latest_commit_sha":null,"homepage":"","language":"Vue","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/bradenn.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null}},"created_at":"2019-12-29T01:21:25.000Z","updated_at":"2024-04-23T03:22:21.000Z","dependencies_parsed_at":"2024-04-23T05:09:55.272Z","dependency_job_id":null,"html_url":"https://github.com/bradenn/udap","commit_stats":null,"previous_names":[],"tags_count":19,"template":false,"template_full_name":null,"purl":"pkg:github/bradenn/udap","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenn%2Fudap","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenn%2Fudap/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenn%2Fudap/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenn%2Fudap/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bradenn","download_url":"https://codeload.github.com/bradenn/udap/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bradenn%2Fudap/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28608446,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-20T16:10:39.856Z","status":"ssl_error","status_checked_at":"2026-01-20T16:10:39.493Z","response_time":117,"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":["aggregation","control","devices","golang","home","modular","modules","smarthome","udap"],"created_at":"2026-01-20T18:14:21.501Z","updated_at":"2026-01-20T18:14:22.385Z","avatar_url":"https://github.com/bradenn.png","language":"Vue","funding_links":[],"categories":[],"sub_categories":[],"readme":"# UDAP v2.18.6\n\n[![Go](https://github.com/bradenn/udap/actions/workflows/go.yml/badge.svg?branch=main)](https://github.com/bradenn/udap/actions/workflows/go.yml)\n[![Go CodeQL](https://github.com/bradenn/udap/actions/workflows/codeql-analysis.yml/badge.svg?branch=main)](https://github.com/bradenn/udap/actions/workflows/codeql-analysis.yml)\n[![Typescript](https://github.com/bradenn/udap/actions/workflows/ts.yml/badge.svg)](https://github.com/bradenn/udap/actions/workflows/ts.yml)\n\n## Universal Device Aggregation Platform\n\nUdap aims to efficiently link and aggregate many unlike interfaces into a heuristic model that can be manipulated and\nsupplemented from add-on plugins called modules. These modules are written in go and compile during Udap's runtime.\nModules can be configured to control computer settings, lights, music, air conditioners, phone systems, access points,\nmedia, or even spaceships.\n\n## Local Domain Configurations\n\nUdap uses a certificate signed by its own certificate authority. New devices need to install a CA root certificate in\norder to access the UDAP platform.\n\n**Routing \u0026 Network Details**\n\n## Entities \u0026 Attributes\n\nAny state within udap is stored within an attribute. These attributes belong to a parent entity.\n\nAn example:\n\nYou have a smart light bulb. It has two settings through it's api (which you've linked via a module), brightness and\ncolor hue. Each of these settings becomes its own attribute. The smart bulb is represented as an entity who's 'id' is\nlinked to the aforementioned attributes.\n\nAnother examples:\n\nYou want to connect spotify to udap. Spotify's API has a lot of options, but we can just focus two attributes:\nisPlaying and currentSong. First you create an entity to represent the api, then you create and provide channels for\nresolving each attribute's status.\n\n## Glossary\n\n| Phrase   | Description                                                                                    |\n|----------|------------------------------------------------------------------------------------------------|\n| UDAP     | Universal Device Aggregation Platform (encompasses all below terms)                            |\n| Core     | The primary UDAP program instance, though there can be multiple core instances.                |\n| Terminal | An authoritative udap interface instance (Used for configuration, management, and primary use) |\n| Mobile   | The general purpose mobile app used for interacting with the UDAP platform.                    |\n\n### Terminal Screenshots\n\nThis is not an exhaustive list of UDAP's applications and configurations. There are more than sixty views in total.\n\nA screenshot of the terminal unlocked screen as of v2.15.1. (With the background blur setting enabled)\n![HomeScreen](./docs/images/home_2.15.1.png)\n\n### Terminal Settings\n\n#### Module page\n\nThis page allows an authenticated user to manage and monitor the runtime of UDAP's modules.\n![SettingsModules](./docs/images/settings_modules.png)\n\n#### Terminal App Examples\n\nThe sentry app controls a ceiling-mounted laser used for entertaining cats. The interface provides realtime positioning\non of the beam, and allows for manual targeting and attenuation.   (With BG blur setting disabled)\n![SentryApp](./docs/images/app_sentry.png)\n\n#### Exogeology App\n\nThe exogeology app uses data from NOAA to display near-live images of the Earth and the Sol (the sun).\n\n##### Earth Page\n\n![ExoGeoEarth](./docs/images/app_exogeo_earth.png)\n\n##### Sol Page\n\n![ExoGeoSol](./docs/images/app_exogeo_sol.png)\n\n#### Basic Utility Apps\n\n##### Calculator App\n\n![Calculator](./docs/images/app_calculator.png)\n\n## Front-end elements\n\n#### Element\n\nAn element is a super class of a Plot, Pane, or other ui element that has a blurred background.\n\n### Plots\n\nA Plot is a grid-like element that contains a fixed number of cells defined by a number of rows and columns.\nPlots can be configured to have a title and alt button. Plots are usually used to hold buttons or other contextual\nelements.\n\n##### Plot Selection (from Settings-\u003ePreferences page)\n\n![Plot Buttons](./docs/images/plot_buttons.png)\n\n##### Plot Module (from Settings-\u003eModules page)\n\nPlots can contain custom dom to serve whatever purpose is needed:\n![Plot Buttons](./docs/images/plot_module.png)\n\n##### Plot Buttons (from Global context Menu)\n\nPlots are best used for providing many buttons for easy selection.\n\n![Plot Buttons](./docs/images/plot_multi.png)\n\n#### Utilities\n\nLine Count\n\n```git ls-files ./**/*.go ./**/*.vue ./client/src/**/*.ts ./embeded/**/*.cpp ./embeded/**/*.h ./embeded/**/*.c ./pkg/**/*.py ./client/**/*.scss | xargs wc -l```\n\n`\u003e 46603`\n\n#### Copyright \u0026copy; 2019-2022 Braden Nicholson\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradenn%2Fudap","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbradenn%2Fudap","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbradenn%2Fudap/lists"}