on master help sign in
Create gather.md
d23a6a4~sarlev-sarsen
content/grants/gather.mdnew file+156
@@ -0,0 +1,156 @@
1++++
2+
3+title = "%gather"
4+date = "2022-08-22"
5+
6+[taxonomies]
7+grant_type = ["Proposal"]
8+grant_category = ["App Dev"]
9+
10+[extra]
11+image = ""
12+description = "An Urbit native meetup tool for subculture gatherings"
13+reward = "3 stars"
14+assignee = "~polrel-witter, ~pontus-fadpun"
15+champion = "~dolweb-donfun, ~dinleb-rambep"
16+grant_id = "P0166"
17+completed = false
18+canceled = false
19+link = ""
20+
21++++
22+
23+# Rationale
24+Meatspace interaction and synchronous, virtual discussions are core values many people on Urbit share. Currently, this need is facilitated through Meetup.com, which is a good intermediate solution, but for those who are in the slow (but increasingly faster) transition to using Urbit full-time, it's clear a native meet up tool is needed. Meetup falls into the typical web2 trap of siloing functions that should integrate seamlessly with other applications. Gather tackles this problem by leveraging Urbit ID for invite and RSVP permissining, Groups to section-off contexts and make it easier for sub-cultures on Urbit to spin up gatherings (something we don't see much of on Meetup right now), and native messaging to reduce context-switching. Future integrations and features could include: connection to the Bitcoin wallet for event payment walling, beaming event pages to the Clearweb to market events outside of Urbit, QR code entrance gating, event-specific attendee profiles, and other, unforseen possibilities as applications continue to percolate from the underground.
25+# User Stories
26+- User is planning a get-together and would like to send an invite out to their friends and members of a group they're a part of.
27+- User is in a foreign city and is curious to know who (ships they interact with regularly or members of a Group they're a part of) is in the area and open to meeting up.
28+- User has a core group of people they meet up with reguarly.
29+- User is curious to know if they have mutual, Urbit acquaintances in their area.
30+# Two Main Features and a Settings Page
31+## Gathering: for organized meet ups
32+- Functionality example: `~sampel-palnet` is hosting a poker night and wants to invite people he regularly interacts with on Urbit, and members of a specific Group. He has 9 seats so will take the first 9 to accept his invite. He writes the details in the invite note, marks the address where the game will take place, and sends the invite to these ships. He can see who has accepted/declined the invite and finalize it (removing any pending invites from the Invitee's pending queue) when 9 have accepted it.
33+- Send and receive invites
34+- Search field for ships
35+- Dropdown menu to select groups user is a part of
36+- Accept/Decline an invite
37+- Write an invite note (dummed down for Hackathon; will eventually be a full page - see below)
38+- Host can view the note they sent for a gathering (dummed down for Hackathon)
39+- If ship accepts an invite they can view the invite list
40+- Host ship can cancel a gathering
41+- Host ship can finalize a gathering (meaning they won't take any more attendees)
42+- Distinguish between Pending and Accepted invites for the Invitee
43+- Invitee can accept, decline, or ignore an invite
44+- Invitee can ghost a host ship
45+- Invitee or Host can click a button to start a Groups message thread between each other
46+- Host can create a group message thread with all attendees
47+- Attendee can RSVP to a public gathering via a button on the Gathering page
48+- Attendee can un-RSVP to a Gathering
49+- Host can establish a Gathering page with a title, link, description, photo, address, venue name, date, and time
50+- Host can toggle a gathering's settings: public or private (if so, select who's invited; no link generated to restrict access to the Gathering page), meatspace (if so, enter address) or virtual, display attendees or not
51+- A potential Attendee can access a Gathering page if they have the link and the gathering is public
52+- Attendee can see who else is attending (if enabled by host)
53+- Host can see list of gatherings they're hosting in a dashboard
54+- Attendee can see list of gatherings they're attending in a dashboard
55+- Host can archive or delete gatherings that have passed
56+## Status: for chance encounters and finding nearby friends
57+- Functionality example:
58+ - Among other select ships, the user (e.g. `~sampel-palnet`) has specified that `~polrel-witter` is a part of their Gang (i.e. someone they would be willing to share their location with when they turn the Status feature on). `~polrel-witter` has also added `~sampel-palnet` to their Gang. Given this mutual affinity, a small tile with each ship's @p, the brief status note, and distance between them will appear on each others' dashboard if the following extra two conditions are met:
59+ - Both ships have Status turned on
60+ - Both ship's radiuses overlap
61+ - A non-Gang ship can add sampel-palnet to their Gang, but because it's not mutual, when both ships have the Status feature turned on sampel-palnet will receive the non-Gang member's status note and city/country and can decide to add them to their Gang (making it mutual), message them, ignore their note, or ghost them (banning future notes from that ship).
62+ - Additionally, the user can choose to share their status with members of one or more Groups they're a part of. The user's status will appear in the members' Foreign Ships queue where they'll then have the same options listed in the bullet point above.
63+- Toggle on and off
64+- Edit and set status note
65+- Send and receive statuses
66+- See list of Gang and Foreign ship statuses
67+- Auto-calculate distance between mutual Gang members and display distance
68+- DM button
69+- Share status with members of a group or attendess of a gathering the user is attending
70+- Ignore Status tiles
71+- Ghost Foreign ships
72+- Add Foreign ships to Gang
73+- Display city, state, and country of Foreign ships
74+- Can see list of ships (with status notes and distance) within radius that are mutual Gang members and also have the Status feature turned on
75+- Can see list of Foreign ships (with status notes and their city, state, and country)
76+## Settings
77+Set "My Location": enter an address
78+Set a radius within which they're willing to receive status notes
79+Add any ship to Gang
80+Remove ships from Gang
81+See list of Ghosted ships
82+Unghost ships
83+Toggle how user wants to receive Gathering Invites: from anyone or only from Gang
84+Toggle how user wants to receive Statuses: from anyone, only from Gang, only from ships within radius
85+Toggle notification for new status notes and invites received
86+# Milestones
87+## Milestone 1
88+Expected Completion: August 28, 2022
89+Compensation: 1 star
90+### Gathering
91+- Can send and receive invites
92+- Can search for ships
93+- Can accept/decline/ignore invites
94+- Can edit and set an invite note
95+- Host can view note sent
96+- Invitee can distinguish Pending and Accepted invites
97+- Invitee can ghost a ship from Pending queue
98+- Invitee can unaccept an invite
99+- Host can see who accepted/declined their invite
100+### Status
101+- Can toggle this feature on and off
102+- Can edit and set status note
103+- Can send and receive statuses
104+- Can ignore status notes
105+- Can see list of Gang and Foreign Ship statuses
106+- Can ghost Foreign Ships
107+- Can add Foreign Ships to Gang
108+### Settings
109+- Can add any ship to Gang
110+- Can remove ships from Gang
111+- Can see list of Ghosted Ships
112+- Can unghost ships
113+- Can toggle notification for new status notes and invites received
114+## Milestone 2
115+Expected Completion: September 16, 2022
116+Compensation: 1 star
117+- Connect to an open source map API so the app can retreive Longitude and Latitude and calculate the distance between two ships (the address input is left up to the user for privacy control)
118+- The map API query would work as follows:
119+- Ship obtains latitude and longitude coordinates from a free, open source map API such as Nominatim address search
120+- Since Nominatim has a strict use policy, ship obtains the Lat and Lon once, each time the address field is updated, and stores it locally
121+- Whenever two ships are trying to find the distance between each other, the locally stored coordinates are passed to each other and calculated on-ship.
122+### Gathering
123+- Host can select one or more Groups the user is a part of from a dropdown menu
124+- Invitee can view invite list
125+- Host can cancel and finalize a gathering
126+- Host or Invitee can create a message thread (in Groups) between each other
127+### Status
128+- Auto-calculate distance between mutual Gang members and display distance on each others' tiles
129+- Message button on tiles to open up message thread in Groups
130+- Can see city, state, and country of Foreign Ships
131+### Settings
132+- Can set street, city, state, country, and zip to determine coordinates
133+- Can set radius
134+- Can toggle how user wants to receive Gathering Invites: from anyone or only from Gang
135+- Can toggle how user wants to receive Statuses: from anyone, only from Gang, only from ships within radius
136+## Milestone 3
137+Expected Completion: November 2022
138+Compensation: 1 star
139+### Gathering
140+- Host can establish a Gathering page with a title, link, description, photo, address, venue name, date, and time
141+- Host can toggle a gathering's settings: public or private (if so, select who's invited; no link generated to restrict access to the Gathering page), meatspace (if so, enter address) or virtual, display attendees or not
142+- Anyone with a ship can access a Gathering page if they have the link and the gathering is public
143+- Attendee can see who else is attending (if enabled by host)
144+- Attendee can RSVP to a public gathering via a button on the Gathering page
145+- Host can see list of gatherings they're hosting in a dashboard
146+- Attendee can see list of gatherings they're attending in a dashboard
147+- Host and Attendee can archive or delete gatherings that have passed
148+- Host can create a group message thread with all attendees
149+### Status
150+- User can easily select a group and/or attendees of a gathering they're attending to which to share their status
151+
152+# About Us
153+`~polrel-witter`
154+Over the past few years, I've worked in various operation roles at a film festival in Austin. My most relevant development experience includes designing and managing (though not coding) the festival's reader software rebuild, which is used to manage a team of 400 readers. Additionally, I served as the general IT support person for festival staff and have been around Urbit, managing a star and experimenting with optimal ways to host ships, for nearly a year now. I completed Hoon School Live back in May, have reviewed the Gall Guide and Walkthrough, and am participating in App School Live July through August.
155+`~pontus-fadpun`
156+In the last three year I've worked as a software engineer, developing frontend and backend solutions for various clients. My area of expertise was Hyperledger Fabric, where I've created software that generates smart contracts from bpmn/workflow diagrams. I've learned Hoon recently and worked on the eth-provider grant to enable urbit ships to customize their ethereum connection.