on master help sign in
Holium app dev summer (#1643)

* Create ballot.md Adding ballot to app listing * initial holium app dev summer bounties * Apply suggestions from code review Co-authored-by: mikeosborne <mike@mikeosborne.co> * Delete ballot.md * Rename app-abacus.md to abacus.md * Rename app-chronicle.md to chronicle.md * Rename app-lexicon.md to lexicon.md * Rename app-minesweeper.md to minesweeper.md * Rename app-trove.md to trove.md * Update chronicle.md fixing unterminated string * Update trove.md fixing unterminated string issue Co-authored-by: mikeosborne <mike@mikeosborne.co>

commit41061edf78f488359a6e1d2c634a86df7363f602 authorlomder-librun <6413077+drunkplato@users.noreply.github.com> dateThu 21 Jul 2022, 11:52 (4 years ago) parent480dc89
5 files changed+326
content/grants/abacus.md+56 content/grants/chronicle.md+63 content/grants/lexicon.md+69 content/grants/minesweeper.md+48 content/grants/trove.md+90
content/grants/abacus.mdnew file+56
@@ -0,0 +1,56 @@
1++++
2+title = "Abacus: basic calculator"
3+date = "2022-07-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "Abacus: A basic calculator app with the ability to convert units"
12+reward = "1 star ($1k bonus if done by Assembly)"
13+assignee = ""
14+grant_id = "B0160"
15+champion = "Holium"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0160&prefill_Grant+Name=Abacus"
18++++
19+
20+## Rationale
21+
22+Every OS needs a calculator. Abacus will do all calculations in hoon, returning the results to the frontend for display.
23+
24+## Overview
25+
26+`abacus`: a basic calculator with the ability to convert units.
27+
28+## User stories
29+
30+1. As a user, I want to add, subtract, multiply, and divide numbers.
31+2. As a user, I want to be able to use decimals or enter fractions.
32+3. As a user, I want to type in longer formulas that can then calculate results.
33+4. As a user, I want to convert units quickly
34+
35+## Architecture
36+
37+For security, the UI should not send preformed dojo commands to the backend agent, but rather, a series of types that can be deserialized and used to generate hoon expressions that are then calculated.
38+
39+Holium will work with the developer(s) to provide frontend support, but the team working on this bounty will be responsible for frontend implementation.
40+
41+## Milestone 1: 1 star ($1k bonus if done by Assembly)
42+
43+Have a working calculator app that can convert units.
44+
45+For the milestone to be completed, the app must be approved by Holium and it must be hosted for distribution on Holium's app star (as well as your own if desired)
46+
47+## Future work
48+
49+- Hooking into the Realm Oracle for fast access to conversions, and calculations
50+- Ability to convert currencies and crypto currencies with real time price data
51+
52+## Requirements
53+
54+- At least one years of professional programming experience
55+- Experience with full-stack development, including JS and some server-side language
56+- Graduated from Hoon school
content/grants/chronicle.mdnew file+63
@@ -0,0 +1,63 @@
1++++
2+title = "Chronicle: News app"
3+date = "2022-07-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "Chronicle is a news app that links all articles from group channels"
12+reward = "2 stars ($4k bonus if done by Assembly)"
13+assignee = ""
14+grant_id = "B0161"
15+champion = "Holium"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0161&prefill_Grant+Name=Chronicle"
18++++
19+
20+## Rationale
21+
22+Group chat and DMs are a type of database. It is a collection of images, links, news articles, and commentary.
23+Much of this gets lost in the ever growing feed. What if there was a way to surface relevant information in different
24+types of views? This project hopes to enable that sort of functionality by providing a way to view all news links in a
25+new reader layout.
26+
27+Having a news app that aggregates articles based on your interests and the groups you are in would save time from
28+endlessly scrolling back to check for new links in a chat channel. The app would organize the articles by
29+"date posted" in a news feed interface.
30+
31+## Overview
32+
33+`chronicle`: a news app that surfaces all links from your groups channels and organizes them into a timeline that should look similar to a newspaper. Imagine Google News, but for your group.
34+
35+## User stories
36+
37+1. As a user, I want to view all of my group's chronicle data in an aggregated view.
38+2. As a user, I want to be able to save to a link to a reading list.
39+3. As a group member, I want to view only my group's chronicle.
40+4. As a group member, I want to be able to upvote or downvote a link, which would allow for ranking articles.
41+5. As a group admin, I want to be able to "feature" an article that I feel is relevant to my group.
42+
43+## Architecture
44+
45+Considering groups are being refactored, this bounty is contingent on getting looped into the development releases of new groups in order to surface the data effectively. Modeling this on old groups will not achieve the goal of this bounty.
46+
47+Once the new channel format is determined, the goal is to watch for updates of the new group/channel agent and parse out any {link: "<-some link->"} from a post contents and add it into the chronicle store with any metadata necessary (date, posted by, included comments).
48+
49+The backend agent should store chronicles per group (or space) path (i.e. ~lomder-librun/my-group). If the new channel format does not support the same graph-store like path, we would need to generate one in this format.
50+
51+Upvotes and downvotes would also need to be stored per link which can then be used for a scry that would rank links by day, week, month, and all time.
52+
53+## Milestone 1: 2 stars ($4k bonus if done by Assembly)
54+
55+Have a working news app with a UI that accounts for all of the requirements listed.
56+
57+For the milestone to be completed, the app must be approved by Holium and it must be hosted for distribution on Holium's app star (as well as your own if desired)
58+
59+## Worker Requirements
60+
61+- At least one year of professional programming experience
62+- Experience with full-stack development, including JS and some server-side language
63+- Graduated from Hoon school
content/grants/lexicon.mdnew file+69
@@ -0,0 +1,69 @@
1++++
2+title = "Lexicon: simple dictionary app"
3+date = "2022-07-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "A simple dictionary app with ability to add custom definitions for a group."
12+reward = "1 star ($3k bonus if done by Assembly)"
13+assignee = ""
14+grant_id = "B0162"
15+champion = "Holium"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0162&prefill_Grant+Name=Lexicon"
18++++
19+
20+## Rationale
21+
22+Different groups may have different definitions for words. They may make up their own words or give words new meanings within the context of their group. We want to support the ability to manage these group-specific lexicons, while also allowing for displaying standard definitions.
23+
24+## Overview
25+
26+`lexicon`: urban dictionary for communities. Should allow for the user to create custom definitions.
27+
28+## User stories
29+
30+1. As a user, I want to view my group's lexicon.
31+2. As a user, I want to add a new word to my group's lexicon
32+3. As as user, I want to add a definition to a word already added to my group's lexicon
33+4. As as user, I want to add an example sentence to a word already added to my group's lexicon
34+5. As a user, I want to upvote or downvote a word, definition, or example sentence.
35+6. As a user, I want to search for words with a search bar
36+7. As a user, I want to view standard dictionary definitions when a word has been added by my group.
37+
38+## Architecture
39+
40+The backend agent should store words per group (or space) path (i.e. ~lomder-librun/my-group).
41+
42+There should be a map of words that then have an array of definitions that are sorted by the number of upvotes / downvotes. The ability to add words or definitions should be able to be permissioned based on the following:
43+
44+- member
45+- admin
46+- moderator
47+
48+For example, a group may allow members to write definitions, but only admins can add new words. This should be able to be configured by the admins or owner.
49+
50+The agent should also query out to https://dictionaryapi.dev/ if a word is not found in the word map.
51+
52+Holium will work with the developer(s) to provide frontend support, but the team working on this bounty will be responsible for frontend implementation.
53+
54+## Milestone 1: 1 star ($3k bonus if done by Assembly)
55+
56+Have a working dictionary app that fulfills the user stories above.
57+
58+For the milestone to be completed, the app must be approved by Holium and it must be hosted for distribution on Holium's app star (as well as your own if desired).
59+
60+## Future work
61+
62+- Publicly permission words so groups can link their lexicons to each other.
63+- Hooking into the Realm Oracle for quickly searching words
64+
65+## Worker Requirements
66+
67+- At least one year of professional programming experience
68+- Experience with full-stack development, including JS and some server-side language
69+- Graduated from Hoon school
content/grants/minesweeper.mdnew file+48
@@ -0,0 +1,48 @@
1++++
2+title = "Minesweeper"
3+date = "2022-07-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "A redesigned version of minesweeper where all of the game logic is written in hoon"
12+reward = "1 star ($2k if done by assembly)"
13+assignee = ""
14+grant_id = "B0163"
15+champion = "Holium"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0163&prefill_Grant+Name=Minesweeper"
18++++
19+
20+## Rationale
21+
22+In order to make Urbit feel like an actual OS, we need minesweeper.
23+
24+## Overview
25+
26+`minesweeper`: a redesigned version of minesweeper where all of the game logic is written in hoon.
27+
28+## User stories
29+
30+1. As a user, I want to be able to set the game difficulty (see below table)
31+2. As a user, I want to be able to experience the classic minesweeper game interface, but redesigned.
32+3. As a user, I want to be able to see previous scores (personal leaderboard).
33+4. As a group member, I want to be able to see scores of other people in my group.
34+5. As a user, I want to make a custom difficulty level, entering height, width, and # of mines.
35+
36+## Architecture
37+
38+Game state will be kept track of in a backend agent. The UI should only render the current game state and send moves to the agent. There will be a few types in the agent state: game-state, settings, leaderboard.
39+
40+The leaderboard can be shared with others in your group, which would allow a group leaderboard to be generated. A ship can set permission of if it wants to sync its local leaderboard with the group host.
41+
42+Holium will work with the developer(s) to provide frontend support, but the team working on this bounty will be responsible for frontend implementation.
43+
44+## Milestone 1: 1 star ($2k if done by assembly)
45+
46+Have a working minesweeper game with requirements listed.
47+
48+For the milestone to be completed, the app must be approved by Holium and it must be hosted for distribution on Holium's app star (as well as your own if desired)App must be finished.
content/grants/trove.mdnew file+90
@@ -0,0 +1,90 @@
1++++
2+title = "Trove: group file drive"
3+date = "2022-07-18"
4+
5+[taxonomies]
6+grant_type = [ "Bounty" ]
7+grant_category = [ "App Dev" ]
8+
9+[extra]
10+image = ""
11+description = "A shared file drive allowing the upload of files to an S3 bucket or IPFS and the ability to organize the file links in folders."
12+reward = "2 stars ($4k bonus if done by Assembly)"
13+assignee = ""
14+grant_id = "B0164"
15+champion = "Holium"
16+completed = false
17+work_request_link = "https://airtable.com/shr4qt9t9kz7RaOIa?prefill_Grant+ID=B0164&prefill_Grant+Name=Trove"
18++++
19+
20+## Rationale
21+
22+Having the ability to upload files to a personal or shared file drive is foundational to any operating system. Being that Urbit cannot (as of now) store large files, Trove will leverage third party storage solutions. Groups should be able to add files, manage folder hierarchy, view files and folders, and search for files.
23+
24+## Overview
25+
26+`trove`: A shared file drive allowing the upload of files to an S3 bucket or IPFS and the ability to organize the file links in folders.
27+
28+## User stories
29+
30+1. As a user, I want to view my files in my trove.
31+2. As a user, I want to add files to my trove.
32+3. As a user, I want to reorganize files in my trove.
33+4. As a user, I want to delete files from my trove.
34+5. As a user, I want to view previews of common image formats JPG, PNG, WebP, GIF
35+6. As a group member, I want to view my group's trove.
36+7. As a group admin, I want to manage permissions for adding files, adding folders, moving folders, and deleting files and folders.
37+
38+## Architecture
39+
40+The backend agent should store chronicles per group (or space) path (i.e. ~lomder-librun/my-group).
41+
42+The backend agent should work alongside a client library to store metadata associated with a file hosting in S3 or IPFS. There would likely be two maps to manage. One being a map of file-url to metadata. The second being the folder structure and which files are in each folder.
43+
44+The client library will do the uploading to S3 or IPFS and forward the metadata to the backend agent upon success.
45+
46+## Permissions
47+
48+Roles are as follows:
49+
50+- member
51+- admin
52+- moderator
53+
54+A group admin should be able to set roles for the following **actions**:
55+
56+- add-file
57+- edit-file-metadata
58+- move-file
59+- delete-file
60+- add-folder
61+- edit-folder-metadata
62+- move-folder
63+- delete-folder
64+
65+A set of roles will be mapped to each action as below:
66+
67+- add-file: {member, admin}
68+- delete-folder: {admin, moderator}
69+
70+Holium will work with the developer(s) to provide frontend support, but the team working on this bounty will be responsible for frontend implementation.
71+
72+## Milestone 1: 2 stars ($4k bonus if done by Assembly)
73+
74+Have a working file eHave a working file explorer app that can find files, transfer files, and drag and drop.
75+
76+For the milestone to be completed, the app must be approved by Holium and it must be hosted for distribution on Holium's app star (as well as your own if desired).
77+
78+## Future work
79+
80+- File tagging w/ lexicon data
81+- Drag and drop uploading
82+- Publicly permission folders and files to share with others and link file drives between groups.
83+- Hooking into the Realm Oracle for quickly searching for files
84+
85+## Worker Requirements
86+
87+- Prefer two developers
88+- At least one years of professional programming experience
89+- Experience with full-stack development, including JS and some server-side language
90+- Graduated from Hoon school