qinboan / NUSchedulers

https://nuschedulers.vercel.app
0 stars 0 forks source link

README

Team: NUSchedulers

Proposed Level of Achievement: Gemini

Deployed website: http://nuschedulers-frontend.vercel.app

Test account: tom, password: qwert

Motivation

Planning a timetable for the semester can be a tedious and time-consuming task for NUS students. Although NusMods provides a list of lectures and tutorial timings, it does not automatically generate a timetable for users. Students have to spend time coordinating with their friends and ensuring they choose the best classes. Our motivation is to develop a web application that simplifies the process of generating an ideal timetable based on the user’s inputted modules and specifications.

Aim

We aim to provide NUS students with a user-friendly timetable web app that can automatically generate an ideal timetable based on inputted modules and user specifications. The app will allow users to personalize their timetable by adding custom events, provide reminders for upcoming classes and events, and allow users to set their own reminders for specific deadlines.

User Stories

  1. As a student, I want to be able to plan my timetable easily.
  2. As a student, I want to design an efficient timetable that best matches my ideal schedule.
  3. As a student, I want to be able to attend classes with my friends.
  4. As a student, I want to keep track of my events and deadlines clearly.
  5. As a student, I want to be able to see my schedule conveniently.

Project Scope

The web application helps to generate an ideal timetable for students and also helps to keep track of their schedules and deadlines.

The web application provides a timetable-like interface for students to input their modules and specifications and the timetable would be generated based on their modules taken. There is also an advanced filter function for users to set conditions for generating their timetable. Users can personalise their timetable by adding custom events, such as group meetings, study sessions or work shifts. The app provides reminders for upcoming classes and events and allows users to set their own reminders for specific deadlines.

Features to be completed by the mid of June:

  1. User authentication and module input
  2. Basic and advanced filter timetable generation
    1. Conditions can include but are not limited to:
      1. How many days the user wants to go to school
      2. No morning/night classes
      3. A one-hour lunch break from 12 pm-2 pm
      4. The timetable must include the particular lesson that the user chose

Features to be completed by the mid of July:

  1. Allow users to personalise their timetable by adding their own custom events
  2. Reminders for upcoming classes and events
  3. User can also set their own reminders for their own upcoming events and deadlines

Tech Stack (MERN)

  1. React
  2. Node.js
  3. Express
  4. MongoDB

Development Plan

15 - 21 May
  • Create mockups
  • Learn the technologies needed (HTML, CSS, MERN, etc)
22 - 28 May
  • Create a login page for user authentication (technical proof of concept)
  • Start planning algorithm used for timetable generator
29 May Milestone 1
30 May - 4 June
  • Learn more on technologies needed
  • API
5 - 11 June
  • Start building timetable generator
12 - 18 June
  • Allow users to save and edit their timetable
    • Users can add their own events and deadlines
19 - 25 June
  • Test and debug
26 June Milestone 2
27 June - 2 July
  • Read peer reviews and update our project accordingly
3 - 9 July
  • Allow users to add notes to their timetable
10 - 16 July
  • Test and debug
17 - 23 July
  • Brush up and finish the app
24 July Milestone 3

Diagrams

Mockup

Screenshot 2023-08-09 at 12 56 43 PM

User Authentication

Screenshot 2023-07-22 at 8 53 21 PM

Class Diagram

Screenshot 2023-07-22 at 8 56 45 PM

Sequence Diagrams

User Authentication

Screenshot 2023-07-23 at 10 57 36 PM

Home Page

Screenshot 2023-07-23 at 11 04 50 PM

Timetable Generation

Screenshot 2023-07-23 at 11 11 45 PM

Tasks List

Screenshot 2023-07-23 at 11 13 16 PM

Interfaces

Login page

Screenshot 2023-08-09 at 12 47 46 PM

Create account page

Screenshot 2023-08-09 at 12 48 17 PM

Home page

Screenshot 2023-08-09 at 12 48 41 PM

Inputting modules

Screenshot 2023-08-09 at 12 49 09 PM

Advanced filter page

Screenshot 2023-08-09 at 12 49 37 PM

Edit Timetable Page

Screenshot 2023-08-09 at 12 49 51 PM

Timetable Generation Algorithm

Basic (No filters)

Advanced filters

Testing

General

Features

All features are functional after deployment

Features completed

Technical Proof of Concept

https://github.com/qinboan/NUSchedulers/issues/2#issue-1729575804

Screenshot 2023-08-09 at 12 50 50 PM

Screenshot 2023-08-09 at 12 51 21 PM

Screenshot 2023-08-09 at 12 51 43 PM

Screenshot 2023-08-09 at 12 49 51 PM img src="https://github.com/qinboan/NUSchedulers/raw/main/images/image17.png" width="" alt="alt_text" title="image_tooltip">

Screenshot 2023-08-09 at 12 52 46 PM

Challenges

Creating a timetable generator requires collecting various types of information such as class schedules, users’ preferences, etc. We faced a lot of difficulties in trying to successfully pass the correct information around to ensure that the timetable generator works reliably and accurately. Furthermore, we had to take into account scheduling conflicts, users’ preferences such as which days to be excluded, and the preferred start and end class timing for the users. Integrating all this information into a coherent system posed a significant challenge for us.

During the development process, we encountered some difficulties in deploying our website due to the separation of the frontend and backend components. The frontend and backend servers had to be started separately for the website to run, and this made it more complicated to deploy the website.