@@ -10,7 +10,7 @@ grant_category = ["App Dev"]
1010[extra]
1111image = ""
1212description = "An Urbit native meetup tool for subculture gatherings"
13−reward = "3 stars"
13+reward = "4 stars"
1414assignee = ["~polrel-witter", "~pontus-fadpun"]
1515champion = ["~dolweb-donfun", "~dinleb-rambep"]
1616grant_id = "P0166"
@@ -27,127 +27,56 @@ Meatspace interaction and synchronous, virtual discussions are core values many
2727- 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.
2828- User has a core group of people they meet up with reguarly.
2929- 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
30+
8631# Milestones
8732## 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
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
9944- 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
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
11468## Milestone 2
11569Expected 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
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
15180
15281# About Us
15382`~polrel-witter`