owned this note
owned this note
Published
Linked with GitHub
# OBSOLETE: DevHub/HApps-Store/Launcher : Design Decisions and Flow
###### tags: `hApp` `design doc` `UI` `draft`
This Project is split into three sections
- DevHub : For Developers (People who want to upload their apps)
- HApps Store : For Users (People who want ot install the apps from the store)
- HCAdmin-GUI : For users during the installation & management of their hApps (Install/Uninstall, Run/Stop, Bridge/UnBridge, View hApp Stats)
Launcher: For users during the installation & management of their hApps (Install/Uninstall, Run/Stop, Bridge/UnBridge, View hApp Stats)
---
## DevHub
Was called (HCHC The **H**olo**C**hain of **H**olo**C**hains) the DevHub is a dashboard for developers to upload and manage their distributed apps that run on Holochain.
> Note : This is the developer.console for Holochain devs to upload their HApps
---
## hApp Store
### Data Structures of Entry Types
- App listing: Name, Description, Thumbnail, Author, Default UI (URI), DNA Code (bridged reference to HCHC (devHub?), test data, technical reviews,
> Notes:
> We will be able to be run the HC Admin GUI for installing apps.
> Otherwise should not control your system
### Querying for hApps in hApp Store:
> **Decisions**
> Use the Categories Zome
**How Does it work?**
- Use Categories as different anchors and then use tags as its intended
- Eg: **Categories** : Games ( **Tag**: First_Player | **Tag** : Racing | **Tag** : Brainteasers )
### UI Ideas:

---
## Launcher
### Purpose:
This app is ment to be a way for any Holochain User to install an App on their Local Machine / Box. This was called HC-AdminGUI, now superceed by Launcher.
### Use of HCAdmin-GUI:
This is only used for :
- Installing Holochain Apps.
- Uninstalling Holochain Apps.
- Bridging to Other Holochain Apps.
---
---
## WorkFlow & API Calls:
> [Click Here: Link for UI-Dev](https://hackmd.io/jhHX0OmKRfCIsAKS28Q6dQ)
## Decisions
> [Click Here:Link for Decisions](https://hackmd.io/KZlkS1QfR-us2glCQe0BPg)
### Design Decision:
This is just a short description of our talk on HCHC yesterday
> "Creating Two apps. One for the Developer to Upload apps(HCHC) and the other for Users wanting to install App(HApps-Store).
The Developer App(HCHC) will be a heavy app storing the app(more details) and the DNA_Code for the app.
The User App(HApps-Store) will be a light weight Directory app. This will store only the app general details.
> - This app will have links to other apps or sites to fetch the info required to install and run the app selected be installed. "
For this The Developer app(HCHC) will have to install the App-Store app as well.
But it also means that the User will have to install the Developer app if he want to install an app, because he would need the DNA_Code that is stored in the HCHC app.
Is that a reasonable requirement? or am I missing some part?
- Reply : The lightweight AppStore app should not need to install the HCHC developer app if we (Holo as a centralized site until Holo as a decentralized service is up and running) provide a web gateway to retrieve appcode & files via URL.
- We wait for Holo to be up an running and create Web gateways. Using URL's for get The DNA code from the developer app.
### Zomes / Constructional Details
#### User App (HApps Store)
- [x] Basic App Info: Title, Description, etc.
- [ ] Ratings, Reviews, Tags
- [ ] HoloDex / Search Index for searchability
#### Developer app (HCHC)
- [x] App Code (DNA, description, author (and/or authorized users for updating listing, Turnkey/Complete installations (w/ UI&HC - Qt, Electron?), containers) (Does hcadmin clone or join make sense / default behavior. Relationship to cloned versions? Any publicly listed.)
- [x] UI/Skins options (thumbnails, screenshots, features, integrations with other apps)
- [x] HoloGit to push/launch/deploy code from dev context
- [ ] Bridge to outside code review (Bug Cloud)
- [ ] Operational Information (Bootstrap servers, Public web gateways (via HOLO domain name?), Index servers?, )
- [ ] Holo hosting app bridge info App Config (optional/dev's discretion)? Make flag visible whether app is Holo enabled for hosting.
- [ ] App contextual information (cloned from, based on, forked from, replaced by, replaces) other apps (track app version relationships)
## Use Cases
### Use Case for Uploading an hApp
```mermaid
sequenceDiagram
participant dev as Developer
participant hchc as HCHC
participant astore as HApp-Store
participant usr as User
dev ->> hchc : Create App(details,/dna/,/UI/,dna.json)
hchc ->> hchc : Commit(details)
hchc ->> astore : bridge(sendDetails())
astore ->> astore : Commit(details)
hchc ->> hchc : Link-Commit(/dna/,dna.json)
hchc ->> hchc : Link-Commit(/UI/)
```
### Use Case for Adding Tags
```mermaid
sequenceDiagram
participant dev as Developer
participant hchc as HCHC
participant astore as HApp-Store
participant usr as User
dev ->> hchc : AddTag(tags[])
hchc ->> astore : bridge(sendTags(App_Hash,tags[]))
astore ->> astore : Link-Commit(tag) // link the tags to the apps
usr ->> astore : getTagedApps(tag) // returns app with those tags
```
### Use Case for Downloading App
> Note: Similar workflow for getting UI skins
```mermaid
sequenceDiagram
participant dev as Developer
participant hchc as HCHC
participant astore as HApp-Store
participant usr as User
usr ->> astore : downloadApp()
astore ->> hchc : bridge(getDNAOfApp(app_hash))
hchc ->> astore : returns (/dna/)
astore ->> usr : returns (/dna/) // Creates a copy in an appropriate place
```
---
---
> ### Archive Info About Project:
> - https://hackmd.io/7PVDf1K7SiSVSq3ePLKbPg
> - https://hackmd.io/1whiOxl-TEil9pRd4v6aVQ
>