# Gather - an event module ## Synopsis A simple event management module for a community. Barebone module that allows anyone to create an event, anyone else to choose attending. Creators should also be able to cancel events. ## Qustion to clarify What are the differences with doing this on HOlochain, how is it different from regular centralized tech, why is that important? ## User stories - A person should be able to create an event, either open (public) or invite only (private) **(25 Nov)** - Events could be marked as having a ticket cost, but purchasing is not handled in MVP - People should be able to mark as attending **(25 Nov)** - People should be able to see who else is attending an event **(25 Nov)** - See peoples history, how likely is it that people will actually attend - Doodle possibility, these are the times I am available to play frizbee, or who is green for frizbee in this membrane? - Hey, do we want to do this, assemble integration, who would be in this group? (tentative events?) - When I say something is going to happen, how often does it actually happen? (risk of hindering new people - favoring past) - Who would be excited to do whatever with me (I just want to spend time with you) - Here is a list of things I am into, what are we excited about? dotvoting etc. - Weighting of peoples responses in a group, who do I think carries most weight for keeping this group together (what things get weighted?: ) - I want to follow a relational pattern of doing more of what this person is doing - How commited am I to this event - Possibility of using as reflective tool for how often do I actually do things, follow up, follow through. - Who is bringing the freezbee, variable for dependancy on task/tool/equipment and free form event. Someone who is emergent leaning might be stressful at planned events and vice versa. Can we set levels for commitments. Fiddle with these around what type of event is this. - Is this hosted by someone, is it a professional thing, religious thing, ## Entries - Event (*Event_image: file, Location: adress, Duration: timespan, Description: string, Cost: string*) - Attending (link type) ### Event creation and management flow ```mermaid flowchart TD A[Alice creates an event, is now event manager] --> B[Public - Event becomes visible to all in group] --> C[Bob chooses attending] A[Alice creates an event, is now event manager] --> D[Private - Event is created] --> E[Alice invites Steve] --> F[Steve chooses attending] G[Alice cancels event] --> H[Notifications go out to all attending] ``` ### Connecting out It would be very useful to have a Holohosted Service which you can federate events too if you want to so that people outside of a community can also participate. ## Gather zome ```rust= struct EventEvent { title: String, description: String, image: EntryHash, location: String, start_time: Timestamp, end_time: Timestamp, private: bool, cost: Option<String> } // link from calendar event -> invitee (I'm attending with this likelyhood) // link from invitee -> calendar event (created by host in case of private, or by the invitee themselves if not) struct AttendeesAttestation { attendees: Vec<AgentPubKey>, calendar_event: ActionHash } // link from event to attestation // link from attendee to attestation ``` ``` get_agent_history(agent_pub_key) -> (AttestedEventsTheySaidTheyWouldAttend, AttestedEvents they actually attended) // these are just hashes ```