@@ -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