joatuapp / joatu-v2

The JoatU application, version 2. Written in Ruby on Rails.
https://alpha.joatu.org
GNU General Public License v3.0
27 stars 5 forks source link

Integrate Event Creation features from Django into Ruby #164

Open joatu opened 5 years ago

joatu commented 5 years ago

The majority of what exists in the Django version of the application for event creation is quite good. We want to transfer over the majority of this feature set.

https://github.com/joatuapp/joatu-django

There are still a good number of issues still required to be fixed. Which ones to focus on will depend on how they are transferred cross-platform.

rsmithlal commented 5 years ago
joatu commented 5 years ago

For Verdun, there are no events that will be available for creation at the beginning until the django elements are integrated.

1) For the events, who can organize one?

Any user can organize an event. We are assuming they have permission at the location/time.

Caveat: In the future, this might change according to some of the following criteria:

2) Does it always have to be linked to a pod or organization?

Events do not need to be linked to organizations or groups or pods or anything beyond a user itself.

3) What is the intended purpose behind allowing people to organize events using the system?

The intended purpose for event creation is so that users can create activities that involve their neighbours. They could ask for volunteers for help in a community project. They could host a fun social gathering or a discussion group. They could offer out a workshop on a subject of interest. It is a means to bring value to their community and to allow the participation of their surrounding neighbours.

In the future, community events/activities will generate CAPS for their creators & volunteers as a means to incentivise the types of activities that are appreciated by those around them.

4) Are these events created by an organization member on behalf of the organization?

In the meantime, there are no organizations that exist, and therefore, these events are created by individuals. In the future, this will be a possibility but not a requirement.

If an organisation is simultaneously a location (e.g. a Community Center), a user requesting to create an activity in this space would require the organisation's approval.

Organisations could have their own pages, rules, and display suggested times for requesting events as well. Eventually, these times could be automated into the event-creation element, so users could see in advantage the likeliest times to host events in specific spaces.

rsmithlal commented 5 years ago

Thanks Jamie, those answers are really helpful to identify the intended behaviour of the feature.

rsmithlal commented 5 years ago

Below is my initial class model proposal for the events feature. I will update it with more details and commentary as I have time. Missing from the diagram at the moment are the categories and comments. These features will be added after the Rails 5 upgrade. I really like your idea of organizations being able to manage their locations including the availability for hosting events there. I will also start drawing up a design spec for this feature.

In the below diagram, event creators can assign 0 to many PersonnelConfiguration. These are where the details of who is required to organize or carry out the events, and in what role. Events can also have zero to one AttendanceConfiguration, which stores the min and max number of attendees that can register.

Scheduling various things in the system will be handled by a ScheduleEntry that binds together the TimeSlot and Location. A Scheduleable class in the system will have 0 to 1 ScheduleEntry, though that can potentially change to 0 to many if required. As per the Django app configuration, a PersonnelConfiguration can have its own time and place specified if required. For example, certain groups of people in a certain role may be required to handle a certain task at a secondary location, such as kitchen volunteers preparing food while other volunteers lead a group on an outing.

What do you think? Are there any requirements that I've missed, other than the aforementioned commenting on and categorization of events? Is there any other implementation detail that you can think of?

event management

joatu commented 5 years ago

It's tough to say for certain what will be required to build in now and what will need to be integrated later. For example, volunteer positions should have specific start & end time, but by default have them set to be the same hours as the event itself. These hours will also need to be logged somewhere, as they will (possibly) require to be verified by the event coordinator that they actually happened so that the person can have the hours attached to their account + receive CAPS for their contributions.

Physical goods will also be incredibly helpful to include as a separate entity from 'volunteer roles', and the users providing them can be rewarded as well (to be determined how that might function). For example, needing to borrow a shovel is one type of physical good. Requesting for a donation of two bags of earth would be another form of physical good (give vs lend).