Skip to content

bradenn/udap

Repository files navigation

UDAP v2.18.6

Go Go CodeQL Typescript

Universal Device Aggregation Platform

Udap aims to efficiently link and aggregate many unlike interfaces into a heuristic model that can be manipulated and supplemented from add-on plugins called modules. These modules are written in go and compile during Udap's runtime. Modules can be configured to control computer settings, lights, music, air conditioners, phone systems, access points, media, or even spaceships.

Local Domain Configurations

Udap uses a certificate signed by its own certificate authority. New devices need to install a CA root certificate in order to access the UDAP platform.

Routing & Network Details

Entities & Attributes

Any state within udap is stored within an attribute. These attributes belong to a parent entity.

An example:

You have a smart light bulb. It has two settings through it's api (which you've linked via a module), brightness and color hue. Each of these settings becomes its own attribute. The smart bulb is represented as an entity who's 'id' is linked to the aforementioned attributes.

Another examples:

You want to connect spotify to udap. Spotify's API has a lot of options, but we can just focus two attributes: isPlaying and currentSong. First you create an entity to represent the api, then you create and provide channels for resolving each attribute's status.

Glossary

Phrase Description
UDAP Universal Device Aggregation Platform (encompasses all below terms)
Core The primary UDAP program instance, though there can be multiple core instances.
Terminal An authoritative udap interface instance (Used for configuration, management, and primary use)
Mobile The general purpose mobile app used for interacting with the UDAP platform.

Terminal Screenshots

This is not an exhaustive list of UDAP's applications and configurations. There are more than sixty views in total.

A screenshot of the terminal unlocked screen as of v2.15.1. (With the background blur setting enabled) HomeScreen

Terminal Settings

Module page

This page allows an authenticated user to manage and monitor the runtime of UDAP's modules. SettingsModules

Terminal App Examples

The sentry app controls a ceiling-mounted laser used for entertaining cats. The interface provides realtime positioning on of the beam, and allows for manual targeting and attenuation. (With BG blur setting disabled) SentryApp

Exogeology App

The exogeology app uses data from NOAA to display near-live images of the Earth and the Sol (the sun).

Earth Page

ExoGeoEarth

Sol Page

ExoGeoSol

Basic Utility Apps

Calculator App

Calculator

Front-end elements

Element

An element is a super class of a Plot, Pane, or other ui element that has a blurred background.

Plots

A Plot is a grid-like element that contains a fixed number of cells defined by a number of rows and columns. Plots can be configured to have a title and alt button. Plots are usually used to hold buttons or other contextual elements.

Plot Selection (from Settings->Preferences page)

Plot Buttons

Plot Module (from Settings->Modules page)

Plots can contain custom dom to serve whatever purpose is needed: Plot Buttons

Plot Buttons (from Global context Menu)

Plots are best used for providing many buttons for easy selection.

Plot Buttons

Utilities

Line Count

git ls-files ./**/*.go ./**/*.vue ./client/src/**/*.ts ./embeded/**/*.cpp ./embeded/**/*.h ./embeded/**/*.c ./pkg/**/*.py ./client/**/*.scss | xargs wc -l

> 46603

Copyright © 2019-2022 Braden Nicholson