- Deployed App: https://ea-block-scheduler-4fecd886e389.herokuapp.com/
- Code Climate: https://codeclimate.com/github/tamu-edu-students/EA-Block-Scheduling
- Sprint 4 MVP Report: https://github.com/tamu-edu-students/EA-Block-Scheduling/blob/main/documentation/Fall2024/Sprint%204%20MVP/Sprint%204%20MVP%20Report.pdf
- Team Working Agreements: https://github.com/tamu-edu-students/EA-Block-Scheduling/blob/main/documentation/Team%20Working%20Agreement.md
This project provides a software solution to generate possible block schedules for the Engineering Academies (EA) across the state, starting with the Austin EA. The program creates block schedules for math, science, and engineering courses for the spring and fall semesters, ensuring that no class overlaps and prerequisites are met. The output is provided in visual formats, replacing the current manual process that relies on spreadsheets, calendars, and Google Forms.
The intended users of this solution are EA staff and students.
- Ruby: Version
3.3.4
(use a version manager likerbenv
orrvm
for easier setup) - Rails: Version specified in
Gemfile.lock
- Clone the Repository
Open a terminal and run:$git clone https://github.com/tamu-edu-students/EA-Block-Scheduling.git $cd EA-Block-Scheduling
-
Install Ruby Version 3.3.4 Using rbenv
Ensurerbenv
is installed on your system. Then, run the following commands to install and set the required Ruby version:$rbenv install 3.3.4 $rbenv local 3.3.4 $bundle install
Follow these steps to deploy your application to Heroku.
- Login to Heroku
Make sure you have the Heroku CLI installed. Log in to your Heroku account:$heroku login $heroku create your-app-name $git push heroku main $heroku run rails db:migrate #Run the database migrations on the Heroku server
If running locally, create a .env file in the root of your project and add the following environment variables for SSO:
GOOGLE_CLIENT_ID=668153806127-b3n784bjqa1jh2tdnd346jis9jt9rpka.apps.googleusercontent.com
GOOGLE_CLIENT_SECRET=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
- Set Environment Variables
Make sure any required environment variables are set on Heroku using:$heroku config:set VARIABLE_NAME=value
- Run rspec and cucumber tests
$bundle exec rspec $bundle exec cucumber
- You can assign admin role to a user while running the app in local to see the admin dashboard.
$rails console #user = User.find_by(email: 'user@example.com') #user.update(role: 'admin')
Professor Shana Shaw has requested an application that would automate the process of creating block schedules for academy students to pick from when enrollment is in process. There are many classes that are often taken together, and often, classes that should be taken together have conflicting meeting times. This requires Professor Shaw to manually create a list of classes that can be taken together without conflict.
Before each semester's enrollment period opens, a partner college sends a list of classes to Professor Shaw in a spreadsheet format. Professor Shaw adds these classes to a form that creates a calendar with colorful blocks to show students what classes to take in order to not have time conflicts. The student chooses a block of classes, and the form is submitted to Professor Shaw who then enrolls the students into their chosen classes.
- The application will be accessible to currently accepted academy students.
- The application will have a page for an admin user to upload a spreadsheet of available classes.
- The application will be able to parse the spreadsheet uploaded by admins in order to differentiate between classes.
- The application will provide clear block schedule charts based on the classes selected by students.
-
Automatic Block Generation: Generates non-overlapping block schedules for math, science, and engineering sections.
- Instruction to test Block generator(it is not deployed main)
- git checkout Blockgen-Re
- rails server
- http://localhost:3000/blocks
-
Prerequisite Management: Ensures that all class prerequisites are considered when generating schedules.
-
Support for Multiple Sections: Accounts for multiple sections of the same class, balancing their timing and order.
-
Spreadsheet and Visual Output: Provides the output as a downloadable spreadsheet and a visual display for easier review and sharing.
-
Customizable for Multiple Academies: The software can be extended for other academies in the state.
- Backend: Ruby on Rails (for handling business logic and data management)
- Database: SQLite3 (for local development and testing), PostgreSQL (for production on Heroku)
- Frontend/Visualization: HTML/CSS/JavaScript (for visual display)
- Data Handling: ActiveRecord (for database operations in Rails)
- Spreadsheet Output: Ruby Gems like axlsx or rubyXL (for generating Excel files)
- Deployment: Heroku (for deployment and hosting)
- Aaron Jones: aaron.h.jones@tamu.edu
- Adithi Srinath: adithis_197@tamu.edu
- Chengyan Tsai: crescentmax@tamu.edu
- Junhyuk Lee: xodn348@tamu.edu
- Mahima Kardam Bhatt: mahima19@tamu.edu
- Ryann Lu: lu.ryann.2n@tamu.edu
- William-David Vanderpuye: wilv10@tamu.edu