@@ -0,0 +1,99 @@
1++++
2+title = "Filesharer"
3+date = "2022-02-16"
4+
5+[taxonomies]
6+grant_type = ["Proposal"]
7+grant_category = ["App Dev"]
8+
9+[extra]
10+image = ""
11+description = "Simple file sharing on Urbit"
12+reward = "$15,000 in WSTR"
13+assignee = "~tinden-pontev"
14+id = ""
15+completed = false
16+link = ""
17++++
18+
19+## Overview
20+
21+Filesharer will allow peers to upload files to managed storage, either on or off
22+Urbit, and share files with each other. It will also allow the user to control
23+access to his files using a whitelist of users and/or groups combined with user
24+defined tags for each file. Integration with the %pals app will allow easy
25+sharing with friends (mutuals).
26+
27+## Implementation details
28+
29+The app will handle:
30+
31+- File metadata and sharing of file URLs: Web, IPFS, clay, and is extensible to
32+ other formats.
33+
34+- Permissions by users and (subscribed) groups, tags.
35+
36+- Adding/removing files to be shared, system save dialog of saved files from
37+ 'server' ship, management of file tags
38+
39+## User Stories
40+
41+As a user, I can:
42+
43+- Upload files to online storage using Urbit, S3, IPFS.
44+
45+- Designate access to files by user or by group.
46+
47+- Organize and fine tune access by file with user defined tags.
48+
49+## Background
50+
51+I started the Filesharer apprenticeship grant early last year with
52+~timluc-miptev as my advisor. I implemented a basic functionality in the
53+back-end to share links between peers using a whitelist of users and/or groups.
54+The ability to create user defined tags was included, but does not affect access
55+rules.
56+
57+The following areas need to be added:
58+
59+- Adding the ability to differentiate white listing by tag. This will add quite
60+ a bit of complexity, but the value should be well worth it.
61+
62+- Adding a black-list of users and/or groups
63+
64+- Integration with the `%pals` app
65+
66+- Adding scrys that will be usefull to the front end. There are scrys
67+ implemented in the current state, but the exact form of scrys needed in the
68+ final project may be different.
69+
70+## Milestones
71+
72+### Milestone 1: Add functional web app front end for current filesharer.
73+
74+Expected completion: 8 weeks
75+
76+Payment: $7500 in WSTR
77+
78+- Rework state and clean up code for implementation of planned features and
79+ improving readability.
80+- Create web interface to allow upload and download of files with %clay and S3
81+ with current (simple) access control.
82+
83+- Add scrys to allow browsing files by tag, by user (ship), and by file type.
84+
85+- Finished state should allow some testing with "real world" use.
86+
87+### Milestone 2: Expand features and app integration
88+
89+Expected completion: 8 weeks
90+
91+Payment: $7500 in WSTR
92+
93+- Add ability to restrict whitelist by tag.
94+
95+- Add blacklist of users.
96+
97+- Include IPFS file links. And any other appropriate formats.
98+
99+- Add integration with %pals app