Skip to content

The official codebase for college-based (event managing) organizations. FOUR-LEVEL Authorization system and scalable.

License

Notifications You must be signed in to change notification settings

LastComrade/Event-Management-System

Repository files navigation

Events-based-organizational-website

Contributors Forks Stargazers Issues MIT License LinkedIn

The official codebase for college-based (event managing) organizations. FOUR-LEVEL Authorization system and scalable. All the necessary commands and software required for the installation of this project locally are listed below.

Demo Link - Click Here (Opens a link of Heroku deployment in the new tab)

Table of Contents
  1. Installation
  2. Usage
  3. Project
  4. Contributing
  5. License
  6. Contact

Installation

1. Cloning the repository

Run the git clone command to clone this repository locally in your machine. You can run this command in CMD, GIT Bash, and obviously in the terminal (For macOS and Linux machines)

git clone https://github.com/LastComrade/Events-based-organizational-website.git

2. Installing all the necessary NPM packages

Software required -

  1. NodeJS (LTS version is preferred)
  2. GIT
  3. MongoDB (Stable version is preferred)

Run the npm install command to install all the necessary dependencies for this project.

npm install

3. Setup the environment variables

For reference take the help of the .env.example file.

Usage

  1. After the successful installation of the MongoDB. Run this command to run the database server locally in your machine
mongod
  1. Now, run the npm run dev command to start the server with the port 3000
npm run dev
  1. Configure your environment variables.

Project should be up and running with the URL - http://localhost:3000 locally.

Project

For front-end Tailwind CSS and EJS templating engine is used and for back-end Express (NodeJS Framework) is used. MongoDB is used as the database.

1. Routes (GET)

Home Routes

  • / - Home page.
  • /credits - Credits page.

Event Routes

  • /events - List the latest top 4 events from available categories.
  • /events/{name_of_the_event} - Dedicated event page.
  • /events/live/all - List all the live events (webninars or events/content that are streamed live).

  • /events/upcoming/all - List all the upcoming events.
  • /events/ongoing/all - List all the ongoing events.
  • /events/archived/all - List all the archived events.

Department Routes

  • /departments - List all the departments with their name, image, and description.
  • /departments/{name_of_the_department} - Dedicated department page.

Authentication Routes

  • /staff-register - Registration route for staff member.
  • /staff-login - Login route for staff member.
  • /staff-logout - Logout route for staff member.
  • /forgot-password - Forgot password route renders a page asking for the email to verify.

Dashboard Routes

  • /dashboard - Render the dashboard page.
  • /dashboard/board - List all the staff members account and their details in a table.
  • /dashboard/contact-messages - List 15 latest contact message notifications.

  • /dashboard/contact-messages/all - List all the contact message notifications.
  • /dashboard/contact-messages/{ID_of_the_contact_message} - Contact message.
  • /dashboard/department - Renders a form to edit the department information.

  • /dashboard/events - Index all the events in a table with all their necessary information.
  • /dashboard/event-create - Form to create a new event.
  • /dashboard/events/{name_of_the_event}/participants/ - List all the participants that registered for that particular event.
  • /dashboard/events/{ID_of_the_event}/edit - Form to edit an existing event.

  • /dashboard/internship-applications - List 15 latest internship application notifications.
  • /dashboard/internship-applications/all - List all internship applicatin notifications.
  • /dashboard/internship-applications/{ID_of_the_internship_application} - Internship application.

  • /dashboard/generate-key - Generate a key, which is used when a user tries to register as a staff member.
  • /dashboard/magazine-subscribers - List all the subscribers, who have subscribed to the magazine.

  • /dashboard/participants - List all the participants, who have recently registered for any event.
  • /dashboard/participants/{ID_of_the_participant} - List all the events that are registered by that particular participant.
  • /dashboard/profile - Index the profile edit form.

2. Front-End

  • Public Folder - Folder contains all the static files like CSS, JS scripts, and third party libraries files.
  • Views Folder - Folder that contains all the EJS files. It's divided into three sections
    • Home - EJS files for home routes
    • Auth - EJS files for authentication routes
    • Dashboard - EJS files for dashboard routes
    • Archive - Archived EJS files that are not used in the main branch

Note: Every above folder has a sub-folder named sections to organize different sections of pages.

3. Back-End

  • Controllers - All the core functionality in the form of functions
    • DashboardCont - Controller for dashboard functionality
    • DeptCont - Controller for department functionality
    • EventCont - Controller for event functionality
    • HomeCont - Controller for home functionality
    • StaffCont - Controller for staff authentication functionality
  • Middlewares - All the request-based functions. For validation of form data, authentication, and authorization.
    • Auth - Middleware for authentication and authorization
    • Validation - Middleware for validation of different forms data
  • Models - Mongoose used as the ODM for MongoDB.

4. Seeds

  • For testing purposes, seeds are used to seed the DB with staff, departments, events, and participants data.

5. APIs

  • Google Sheets API is used to store the information of the event participants and magazine subscribers.
  • Gmail API is used to send E-Mails.

Contributing

Contributions are what makes the open-source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

MIT | Distributed under the MIT License. See LICENSE for more information.

Contact

Konark Lohat - @konarklohat - konarklohat123456@gmail.com

Project Link: GitHub Repository Link