├── README.md ├── happ-resources ├── acorn │ └── bundle.toml ├── basic-chat │ └── bundle.toml ├── communities │ └── bundle.toml ├── holotxt │ └── bundle.toml └── passthrough-dna │ └── bundle.toml └── index.json /README.md: -------------------------------------------------------------------------------- 1 | # Holochain App Index 2 | This repository serves as a central point for listing and referencing existing hApps that are ready to be installed through [Holoscape](https://github.com/holochain/holoscape). 3 | It is meant to function as a short term interim solution until the decentralized hApp store - which is a Holochain app itself - is up and running. 4 | 5 | ## hApp Store in Holoscape 6 | [Holoscape](https://github.com/holochain/holoscape) downloads the file [index.json](index.json) to acquire the full list of hApps and renders a card with description and screenshot for each. 7 | Chooses the user to install a hApp, Holoscape also downloads the `bundle.toml` file from the hApp's resources directory in this repository which has links to all the hApp's assets (i.e. DNA files and zipped UIs). 8 | 9 | ## A note on versions 10 | 11 | We tag commits in this repo that are compatible for particular version of holochain like this: `hc-v0.0.47-alpha1` and, in the short term attempt to make sure that hApps in the index work with the given version of holochain (and the holoscape version that includes that holochain version), but please note that we can't guarantee that all the hApps work perfectly with the given version. 12 | 13 | ## Publishing a hApp 14 | If you want to make your hApp available to the public during this alpha phase for testing, you can do so by creating a pull-request to this repository. 15 | Once it's merged it will appear in the list of hApps inside Holoscape. 16 | 17 | The main ingredient you will need for this is a [hApp bundle file](https://github.com/holochain/holoscape/tree/master/example-bundles). 18 | This file is like a manifest for your hApp. It describes what DNA(s) and UI(s) your hApp consists of, and what their internal relationships (i.e. bridges and references/handles) are. 19 | 20 | You can test your hApp bundles with Holoscape by installing it manually ("from file") inside Holoscape before adding them to this repository. 21 | hApp bundles can reference DNA and UI files either locally via `file://` or any remote resource via `http://`. 22 | In order to keep this repository small, please host those binary assets either on your own server or publish them as a release in your Github repository, and then link to those files from your bundle. 23 | Holoscape will download the DNA and UI directly from there during install. 24 | 25 | 26 | 27 | ### What should go in your PR? 28 | 29 | 1. Add an element to the array in [index.json](index.json) like so: 30 | ``` 31 | { 32 | "name": "Peer Chat", 33 | "directory": "peer-chat", 34 | "github": "https://github.com/holochain/peer-chat", 35 | "icon": null, 36 | "screenshot": "https://raw.githubusercontent.com/holochain/peer-chat/develop/doc/screen.png", 37 | "description": "A simple chat app designed to get new users up, running and developing on Holochain" 38 | } 39 | ``` 40 | `name`, `screenshot` and `description` get displayed inside Holoscape. 41 | `directory` is the name of the sub-directory that you add in step 2. 42 | 2. Add a directory under [happ-resources](happ-resources) with the name of your happ. 43 | Inside that sub-directory, add your hApp bundle file with the file name `bundle.toml` 44 | 45 | That's it! Once your PR gets approved and merged, your hApp can be installed with just a few clicks and used by others for testing purposes. 46 | -------------------------------------------------------------------------------- /happ-resources/acorn/bundle.toml: -------------------------------------------------------------------------------- 1 | bridges = [] 2 | 3 | # A declaration of an instance that this hApp needs to have installed. 4 | # `name` here is just an internal name to reference the given DNA inside the rest of this bundle. 5 | [[instances]] 6 | name = "acorn-profiles-instance" 7 | id = "__acorn" 8 | dna_hash = "QmeRu5hx5pmn8kuHLPpxFkTv9Ew1HUr5c1cvDqHJuiBMxv" 9 | # Optional, might also be retrieved from hchc via hash long-term 10 | uri = "https://github.com/h-be/acorn-hc/releases/download/v0.3.2/profiles.dna.json" 11 | 12 | [[instances]] 13 | name = "Acorn-projects-template" 14 | id = "__acorn_projects_template" 15 | dna_hash = "QmSBCuE94MdSXXpMrvn8UA1CpNsXqfh37YhMU3SsiKMh46" 16 | # Optional, might also be retrieved from hchc via hash long-term 17 | uri = "https://github.com/h-be/acorn-hc/releases/download/v0.3.2/projects.dna.json" 18 | 19 | [[UIs]] 20 | name = "Acorn" 21 | id = "acorn-ui" 22 | ui_bundle_hash = "Qm34abcde" 23 | # Optional, might also be retrieved from hchc via hash long-term 24 | uri = "https://github.com/h-be/acorn-ui/releases/download/v0.3.4/acorn-ui.zip" 25 | 26 | [[UIs.instance_references]] 27 | ui_handle = "acorn-profiles-instance" # sets an alias but just match it to instance:name property 28 | instance_id = "__acorn" 29 | -------------------------------------------------------------------------------- /happ-resources/basic-chat/bundle.toml: -------------------------------------------------------------------------------- 1 | bridges = [] 2 | 3 | [[instances]] 4 | name = "Basic Chat Public" 5 | id = "__basic-chat-public" 6 | dna_hash = "Qma5ncMshmqxrmAWTVg5Yc65rsvv52TFj7PZpyhC8r6xd1" 7 | uri = "https://github.com/holochain/basic-chat/releases/download/v0.1.4/basic-chat.dna.json" 8 | 9 | [[UIs]] 10 | name = "Basic Chat" 11 | id = "basic-chat-ui" 12 | ui_bundle_hash = "Qm34abcde" 13 | uri = "https://github.com/holochain/basic-chat/releases/download/v0.1.4/ui.zip" 14 | 15 | [[UIs.instance_references]] 16 | ui_handle = "basic-chat" 17 | instance_id = "__basic-chat-public" 18 | -------------------------------------------------------------------------------- /happ-resources/communities/bundle.toml: -------------------------------------------------------------------------------- 1 | bridges = [] 2 | 3 | [[instances]] 4 | name = "Communities" 5 | id = "__communities" 6 | dna_hash = "QmfAi6wBzvRzMwU343L1YWR9f1uPGmFuzHUJYdJyNKtQFs" 7 | uri = "https://github.com/Holo-Host/holo-communities/releases/download/0.0.6/holo-communities-dna.dna.json" 8 | 9 | [[UIs]] 10 | name = "Communities" 11 | uri = "https://github.com/Holo-Host/holo-communities/releases/download/0.0.6/holo-communities.zip" 12 | 13 | [[UIs.instance_references]] 14 | ui_handle = "__communities" 15 | instance_id = "__communities" 16 | -------------------------------------------------------------------------------- /happ-resources/holotxt/bundle.toml: -------------------------------------------------------------------------------- 1 | bridges = [] 2 | 3 | [[instances]] 4 | name = "holotxt" 5 | id = "holotxt_instance" 6 | dna_hash = "QmPAJK4YugqgrnCnQ2Y6CS3R2HyYU1ADVABQUBq9NcWN5y" 7 | uri = "https://github.com/kristoferlund/holotxt/releases/download/v0.0.3/holotxt_dna.dna.json" 8 | 9 | [[UIs]] 10 | name = "holotxt" 11 | id = "holotxt_id" 12 | ui_bundle_hash = "Qm34abcde" 13 | uri = "https://github.com/kristoferlund/holotxt/releases/download/v0.0.3/ui.zip" 14 | 15 | [[UIs.instance_references]] 16 | ui_handle = "holotxt" 17 | instance_id = "holotxt_instance" -------------------------------------------------------------------------------- /happ-resources/passthrough-dna/bundle.toml: -------------------------------------------------------------------------------- 1 | # A declaration of an instance that this hApp needs to have installed. 2 | # `name` here is just an internal name to reference the given DNA inside the rest of this bundle. 3 | 4 | bridges = [] 5 | 6 | [[instances]] 7 | name = "Passthrough" 8 | id = "instance" 9 | dna_hash = "QmcjoGNWszyb9pbZEXkj9Ujk8vpycRL47VqTSjfvrU4JVs" 10 | uri = "https://github.com/holochain/passthrough-dna/releases/download/v0.0.8/passthrough-dna.dna.json" 11 | 12 | 13 | [[UIs]] 14 | name = "Passthrough Test hApp" 15 | id = "passthrough" 16 | uri = "https://github.com/holochain/passthrough-dna/releases/download/v0.0.8/ui.zip" 17 | 18 | [[UIs.instance_references]] 19 | ui_handle = "test-instance" 20 | instance_id = "instance" 21 | 22 | 23 | -------------------------------------------------------------------------------- /index.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "Basic Chat", 4 | "directory": "basic-chat", 5 | "github": "https://github.com/willemolding/basic-chat", 6 | "icon": null, 7 | "screenshot": "https://raw.githubusercontent.com/holochain/peer-chat/develop/doc/screen.png", 8 | "description": "A fork of peer-chat that aims to keep everything as basic as possible. Removes the identity management and private channels features to help with debugging." 9 | }, 10 | { 11 | "name": "__holo.txt", 12 | "directory": "holotxt", 13 | "github": "https://github.com/kristoferlund/holotxt", 14 | "icon": null, 15 | "screenshot": "https://user-images.githubusercontent.com/9698363/71314686-61cb0c00-244d-11ea-9429-2dd0e7c7d701.png", 16 | "description": "Proof of concept Holochain app showcasing simple collaborative notes editing." 17 | }, 18 | { 19 | "name": "Passthrough DNA", 20 | "directory": "passthrough-dna", 21 | "github": "https://github.com/holochain/passthrough-dna", 22 | "icon": null, 23 | "screenshot": "https://github.com/holochain/passthrough-dna/releases/download/v0.0.6/Passthrough.png", 24 | "description": "This is the simplest hApp possible - and it is meant for testing Holochain itself, interactively. The DNA passes-through the HDK's API functions as zome functions so that hdk::commit_entry and hdk::get_links can be called directly from the UI. If installed with an admin interface it also renders all the internal redux actions that the Holochain instance processes." 25 | }, 26 | { 27 | "name": "Acorn (Use Admin!)", 28 | "directory": "acorn", 29 | "github": "https://github.com/h-be/acorn-docs", 30 | "icon": "https://github.com/h-be/acorn-ui/blob/master/dist/logo/acorn-logo-desktop-512px%402x.png", 31 | "screenshot": "https://i.imgur.com/2LreFT4.png", 32 | "description": "STOP! Don't click INSTALL! First, click 'Show Bundle Contents', then check 'Install with admin interface?'. THEN click 'INSTALL'. Acorn is a way of organizing intended Goals and Outcomes in tree-like structures. You can think of it as a virtual whiteboard for collaborative planning." 33 | } 34 | ] 35 | --------------------------------------------------------------------------------