Skip to content

sunggeorge/searchsait

Repository files navigation

Website VS Code Badge React Badge Node.js GitHub license

SAIT (Ellucian) Class Registration Planning Tool

This is a Next.js + Python application designed to assist with class registration planning. Originally developed for SAIT (Southern Alberta Institute of Technology). It has the potential to support most class registration systems built on the Ellucian platform. As a starter project, it offers a solid foundation with room for improvement and additional features.


Features

  • Quick Class Search: Search by name or code in the top textbox with autocompletion.
  • Class Combinations: Select desired classes and instantly view valid combinations.
  • Visual Schedule & Availability: Displays a weekly schedule and seat availability, styled like the mySAIT registration platform.
  • Instructor Ratings: Matches instructor ratings from RateMyProfessors (RMP).

Contributions and feedback are welcome!

Screenshot 1 Screenshot 2

Notes

  • The public/res/*.json files contain 2025 Winter class data for demo purposes, sourced publicly from SAIT Course Offerings and RMP.
  • If no class combinations are displayed, it may indicate a time conflict or missing time data for some classes.
  • RMP ratings rely on simple name matching, so errors may occur.
  • For rapid development, JSON files store class data. A database could improve scalability, eliminating complex JSON manipulation in backend scripts (P2, P3).

Next.js Frontend

The frontend is built with Next.js, bootstrapped using create-next-app. Key features include:

  • Dynamic Rendering: The homepage (app/page.js) updates automatically with changes.
  • State Management: Uses Jotai for global and component-level state.
  • Styling: Combines Tailwind CSS and custom CSS (app/globals.css), with components in app/components/.

Getting Started

  1. Install dependencies:
    npm install
    # or
    yarn install
    
    # Star development server
    npm run dev
    # or
    yarn dev

Then open http://localhost:3000 to view the frontend.


Python Backend

The backend fetches, refines, and processes class data, generating dropdown menus and instructor ratings via external APIs.

Scripts:

  • Data Fetching: P1_getRawData.py retrieves raw data from SAIT (or other Ellucian systems) and saves it locally. (backend/rawdata) Adapted from ucrapi.
  • Data Refinement: P2_refineRawData.py processes raw data into class.json.
  • Dropdown Generation: P3_genDropdown.py Creates dropdown options dropdown.json from refined data.
  • CRN Generation and Instructor Info: P4_genCRN.py Generates course registration numbers (CRN) and instructor details instructor.json.
  • P5_getRMP.py (optional) Fetch and match professor ratings from RateMyProfessor using RateMyProfessorAPI. This is slow and should only be run when necessary.

Setup Instructions:

  1. Set Up Virtual Environment:
    cd backend
    python -m venv venv
    
    # Activate virtual environment (Windows)
    venv\Scripts\activate
    
    # Or on macOS/Linux:
    source venv/bin/activate
  2. Install Dependencies:
    pip install -r requirements.txt
  3. Configure Environment Variables:
    • Copy backend/.env.sample to backend/.env and update settings (e.g., BASE_URL, TERM_CODE, etc.).
  4. Run the Pipeline:
    • Execute the main script to run the complete data fetching and processing pipeline:
      python main.py
    • This will sequentially run P1_getRawData.py, then P2_refineRawData.py, P3_genDropdown.py and P4_genCRN.py based on result of P1 execution. Comment out P5 or execute it separately if necessary.

Execution Time (2025 Winter - 202430) class data:

  • P1 - P4: Less than 10 minutes Data fetching, refining, and JSON generation
  • P5: Around 4 hours ~4 hours (RMP matching, due to slow API responses). RMP.json is included so rerunning is unnecessary unless instructor data changes.

Future Improvements

This starter application has significant potential for enhancements including:

  • Dockerized environment with a database for class data.
  • Enhanced UI/UX (e.g., filters for weekday or AM/PM, sorting by off-days or study days). Sorting by number of off-day, study day
  • Calendar export (replacing SAIT’s deprecated Ellucian GO).
  • Anonymous class planning accounts.
  • Advanced error handling, logging, and TypeScript integration.

The final goal isto rival tools like searchNEU or notangles.

About

SAIT classes planner

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published