@@ -0,0 +1,85 @@
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 = "4 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+
31+# Milestones
32+## Milestone 1
33+Expected Completion: September 16, 2022
34+Compensation: 2 stars
35+**Gathering**
36+- User can create, send, and receive gathering invites
37+- User can ban ships to stop sending and receiving invites to/from selected ships
38+- User can see a list of gatherings they're hosting, been invited to, and RSVP'd to in a dashboard
39+- User can delete gatherings from their dashboard that have passed
40+- Host can search for ships to which to send an invite
41+- Host can set a maximum number of RSVPs they will accept
42+- Host can cancel, finalize (meaning no more RSVPs will be accepted), or mark a gathering as completed
43+- Host can edit an invite that has already been sent out, and unfinalize it to make changes, if needed
44+- Host can see who accepted/declined their invite
45+- Host can restrict an invite to deliver only within a specific radius; meaning an invite will only appear in a ship's dashboard if their settings location is within the host's specified radius of the venue address
46+- Host can include a venue location in the invite
47+- Host can select one or more groups the user is a part of from a dropdown menu to invite members
48+- Invitee can distinguish Pending, Accepted, and Completed gatherings
49+- Invitee can unaccept an invite if they decide they can no longer attend
50+- Invitee can see invite and RSVP list
51+- Invitee can click a button on the invite to DM the host
52+- Invitee can accept or decline invites
53+- Invitee can see distance from their address to venue included in invite
54+- Invitee can restrict receiving invites to only those with venue addresses in their radius
55+- Connect to an open source map API so the app can retreive Longitude and Latitude and calculate the distance between two addresses (the address input is left up to the user for privacy control)
56+ - The map API query would work as follows:
57+ - Ship obtains latitude and longitude coordinates from a free, open source map API such as [Nominatim address search](https://nominatim.org/release-docs/develop/api/Search/)
58+ - 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
59+ - Whenever a ship receives a location-based invite, their ship will auto-calculate the distance from their location (address in their settings) to the venue (received in the invite).
60+**Settings**
61+- User can toggle whether they want to receive invites from anyone or only within a set radius from their location to the gathering venue included in the invite
62+- User can set a radius within which they'll receive invites, if they're not receiving invites from anyone
63+- User can set "My Location": street, city, state, country, and zip to determine coordinates
64+- User can ban/unban ships
65+- User can see list of banned ships
66+- User can create a collection to store a subset of ships or groups to easily send future invites to select groups of ships
67+- User can toggle notification for new invites received
68+## Milestone 2
69+Expected Completion: September 16, 2022
70+Compensation: 2 stars
71+**Gathering**
72+- Implement feedback from Hackathon/Assembly
73+- Host can establish an event page with a title, link, description, photo, address, venue name, date, and time
74+- Host can toggle a gathering's settings: public or private (if so, select who's invited; no link generated to restrict access to the event page), meatspace (if so, enter address) or virtual (if so, enter an access link), allow those who RSVP'd to see other ships who are attending, restrict message thread access to anyone (with an invite, if private) or only those who RSVP'd
75+- Attendee can see who else has RSVP'd (if enabled by host)
76+- Anyone with a ship can access a event page and RSVP, if they have the link and the gathering is public
77+- Attendee can set a reminder on gathering's they've RSVP'd to
78+- Native messaging on event page for pre, during, and post-event chat/networking
79+- Beam event page to clearweb
80+
81+# About Us
82+`~polrel-witter`
83+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.
84+`~pontus-fadpun`
85+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.