LICCB / event-manager

2019-2020 Stevens Senior Design LICCB Event Manager Project
1 stars 0 forks source link

LICCB Event Manager Project 2019-2020

This is the repository for the LICCB Event Manager.

Installing Node

  1. Download and run the LTS installer for your system at https://nodejs.org/en/download/

    Installing the Application

  2. Clone the Git repository onto your machine
  3. Navigate to the root project folder in a terminal
  4. Install the Node modules with:
    npm install

Configuring the Application

  1. Find and download the config.json file from the Google Drive folder
  2. Move this file into the root project folder

Running the Application

  1. Navigate to the root project folder in a terminal
  2. Start the application with:
    1. npm start For production (requires administrator privileges)
    2. npm run dev For development
  3. Access the application at the URL:
    1. localhost For production
    2. localhost:3000 For development

Software Choice

One of the main reasons for picking a NodeJS/Bootstrap stack was because we all have some level of familiarity or experience with this stack. Several of us have taken web development classes that used NodeJS. NodeJS also has one of the biggest sets of existing code with the modules provided by npm. The decision over Flask or Django was mostly due to preference and our group's experience with NodeJS or lack of experience with Flask or Django.

Other more high level web frameworks like Wordpress were not chosen due to their lack of flexibility. We did not want to end up modifying existing code provided by a plugin in order to create the user experience we are trying to achieve. The fact that the previous groups to attempt this project used methods similar to this and did not succeed only bolstered our position. It also seemed to us that we would get more out of the project by applying our knowledge of web development to code it ourselves as opposed to just putting plugins in Wordpress. It is also free.

Theory Of Operation

General idea of how various aspects of the software should work.

Database:

Users:

Participants:

Events:

General Theory:

All IDs will be UUIDs generated by NodeJS.

When an site user authorized to do so creates an event a row will be added to the 'events' table containing the parameters for the event. When this row is created a new UUID will be generated for the 'eventID' by NodeJS. This ID will be used in the 'participants' table to show what event each particular registration is for. In the future if additional data is required from the participants the types of that data will be stored in the 'eventMetadata' column of the 'events' table and the data input by the registrant through the form will be stored in the 'metadata' column of the 'participants' table.

When a participant registers for an event their first and last names, email, and phone number will be cross referenced to the existing participants in the 'participants' table. If a match is found for their information (or a majority of their information) it will be entered into the 'participants' table with the existing 'participantID' their information matched them with. Otherwise a new ID will be generated by NodeJS for them and then their registration information will be entered into the 'participants' table with that ID. Following registration an confirmation will be sent to the provided email containing a link that will trigger the database to update the 'regStatus' of the participant to 'Registered'. If a person registers with a party on the party leader will be sent a confirmation email. In this case the confirmation link will also update the 'regStatus' of all party members to 'Registered'.

When the lottery is drawn all of the registrants with the event's 'eventID' will have their 'regStatus' set accordingly by the selection algorithm. This process may or may not at some point also incorporate some of the previous registration data such as the 'Canceled' and 'Same Day Cancel' registration statuses and the 'No Show' checkinStatus.