#CLEO - Smart Course Scheduler
Our team is creating a degree planner application for Texas A&M University students called Cleo. Students can create a user profile based on their interests and will be recommended courses to take in their upcoming semesters. The TAMU anex grade distributions and academic progress trackers are also integrated in this application.
###Table of Contents
- Requirements
- (External) Dependencies
- Environmental Variables/Files
- Installation and Setup
- Usage/Features/Testing
- Documentation
- Licence
- Credits/Acknoledgements/Contact Information
What is needed to run and code our test:
- Ruby ~ 3.3.4
- Rails ~ 7.2.1
- PostgreSQL ~ 14.13
- Ruby Gems:
- source "https://rubygems.org"
gem "rails", "> 7.2.1"
gem "sprockets-rails"
gem "pg", "> 1.1"
gem "puma", ">= 5.0"
gem "importmap-rails"
gem "turbo-rails"
gem "stimulus-rails"
gem "jbuilder"
gem 'rubocop', require: false
gem 'rexml'
gem 'zeitwerk', '< 2.7.0'
gem "tzinfo-data", platforms: %i[mingw mswin mswin64 jruby] gem "bootsnap", require: false gem 'devise' gem 'omniauth' gem 'omniauth-google-oauth2' gem 'omniauth-rails_csrf_protection' gem 'dotenv-rails', groups: [:development, :test] gem 'bootstrap', '~> 5.0.0' gem 'sassc-rails' gem 'pycall'
group :development, :test do gem "debug", platforms: %i[ mingw mswin mswin64 jruby ], require: "debug/prelude" gem "brakeman", require: false gem "rubocop-rails-omakase", require: false gem "rspec-rails", "~> 7.0.0" end
group :development do gem "web-console" end
group :test do gem "capybara" gem "selenium-webdriver" gem "webdrivers" gem "simplecov", require: false gem 'rails-controller-testing' end
gem "net-pop", github: "ruby/net-pop" gem 'jquery-rails' gem 'csv' gem 'prawn'
gem 'select2-rails'
gem 'httparty'
- Docker - Download latest version at https://www.docker.com/products/docker-desktop
- Git - Download latest version at https://git-scm.com/book/en/v2/Getting-Started-Installing-Git
- Ubuntu 22 / Download the latest version for development
- VScode 1.99
- JIRA
- Render
Our product and sprint backlog can be found in Jira, with project name CLEO
Document ...
git clone git@github.com:teamup-org/cleo-asp-501.git
If you have already cloned and would like to update locally
git stash (if you have any changes)
git pull origin main
Navigate to the app directory and create a docker container.
docker run -it --volume "${PWD}:/directory" -e DATABASE_USER=cleo_app -e DATABASE_PASSWORD=cleo_password -p 3000:3000 paulinewade/csce431:latest
*Note: replace directory with where the app code is located
If you want to re-enter an existing container
run docker ps to find your docker
then...
docker start <docker_id>
docker exec -it <docker_id> bash
Once your finished call
docker stop <docker_id>
bundle install && rails webpacker:install
If no has been created database yet, run the following
rails db:create && rails db:migrate
Navigate to the lib folder, and run the following to scrape the course catalog
./run_spiders.sh
With the generated csv files, run the following to seed the database
rails db:seed
We used RSpec and the RSpec test suite can be ran using:
rspec spec/
You can run all the tests by using the following command. This runs all tests, including integration and unit tests:
rspec .
Run the following code in Powershell or regular terminal if using Windows or Linux/Mac OS respectively:
Navigate to project directory
cd cleo-course-scheduler
Run the app
rails s --binding:0.0.0.0
This application can be viewed by writing the following in your browser
http://localhost:3000/
Follow this Google Oauth configuration guide to generate a GOOGLE_OAUTH_CLIENT_ID and GOOGLE_OAUTH_CLIENT_SECRET, which will be used for authentication.
To enable it locally, create a .env file in the root project directory. The file should look like the following:
GOOGLE_CLIENT_ID="..."
GOOGLE_CLIENT_SECRET="..."
Replace the ellipses with your own secrets/
The instructions for setting the environment variables on Render can be found below.
You will want your .env file to look something like this:
GOOGLE_CLIENT_ID=...
GOOGLE_CLIENT_SECRET=...
ADMIN_EMAILS=example1@example.edu,example2@example.edu
CLEO_COURSE_SCHEDULER_DATABASE_PASSWORD=... (You will get this when deploying your db or you can set it but it must be the same when deploying your db)
DATABASE_HOST=localhost (Will change to the database host name when deploying)
The following steps will result in the deployment of a Render Postgres Database (required for web service).
- Setup a Render account
- From the Render dashboard select
Add New->Postgres - Enter a name
- Select a github repository (You may have to link your github account) and then select the enviroment (production).
- Set the database name to
cleo_course_scheduler_production - Set the database user to
cleo_course_scheduler - Select your desired plan the select
Create Database - Copy the
Host Name
The following steps will result in the deployment of a Render Postgres Web service.
- From the Render dashboard select
Add New->Web Service - Select a github repository
- Enter a name
- Select a project (Your github repo) and an enviroment (production)
- Set the
LanguagetoRuby - Select the Desired payment
- At the
Environment Variablessection, clickAdd from .envthen copy and paste the .env file. After that you will copy the key from yourmaster.keyfile. (If you do not have this key you can generate it withrails credentials:edit) copy and paste that key into Render'sRAILS_MASTER_KEY. After that change DATABASE_HOST fromlocalhostto your copiedHost Name. - replace
Build Commandwithbundle install; yarn install; bundle exec rake assets:precompile; bundle exec rake assets:clean; bundle exec rails db:create db:migrate db:seed; - Select
Create Web Service
To enable Google Oauth2, head over to the settings tab on the pipeline dashboard.
- Scroll down until
Reveal config vars - Add your client id and secret id
GOOGLE_OAUTH_CLIENT_ID=...
GOOGLE_OAUTH_CLIENT_SECRET=...
Now once your pipeline has built the apps, select Open app to open the app.
Continuous integration was employed through the use of Github actions. Our workflow includes:
- RSpec integration and feature tests
- Rubocop linting
- Brakeman tests
To create an account click on the Login with Google button on the landing page, then click an account, if it has never been used before a new account will be created with that email. PLEASE MAKE SURE YOU CLICK COMPUTER SCIENCE FOR YOUR MAJOR -- As of right now we were only given the .csv files for computer science and if you try another major, clicking generate plan / generate reccomended semester may not do anything because their is no information for other majors!
After login, click Build Your Degree Planner and then remove MATH 151 from Spring 2025, you should see a red banner at the top of the screen. Note: If you are doing this after you have uploaded the file.pdf transcript, In my tests Computer Organization is a class that you should be able to remove to check for any prereq issues with Programming Studio but it may be a bit difficult to find a prereq that I have not already completed so I recommend doing this step first before uploading file.pdf.
After login, click Profile -> Choose File (choose a your saved transcript.pdf) -> click Upload New Transcript.
You should then be able to change class names and unselect classes to fix any errors with the gathered classes.
After Uploading your transcript, navigate back to Home -> Build Your Degree Planner, I recommend to better see the "recommended semester" you clear the degree planner that way their is not still a bunch of random classes on your degree planner that you may/may not need. Once you clear, go to the Spring 2025 and click the Generate Recommended Semester next to "Sprint 2025", after that (assuming you are using the provided file.pdf example), you should see something similiar to the following:
After login, click View Grade Distribution then type in CSCE then 431 and click submit (Or any other valid class)
After login, click View Default Degree Plan
After login, click Profile -> Edit Profile then the user should be able to change any of the drop down items as well as give FERPA consent. Once clicking, the user can change any of the fields then click Save Changes.
The user should see a green banner at the top saying changes are saved and the current user preferences should be shown on the left of the student profile.
After login, click Profile and a progress bar is displayed at the bottom of the screen. This displays the user's current progress towards their degree in years and a percentage.
From there, click Home to go back to the dashboard and then click Current Academic Progress. The user can now see which courses they have completed, are in-progress, and remaining.
After login, click on the 3 bars in the top left corner -> Support/Help -> Help Page. Here you show find some frequently asked questions as well as a link the the CLEO Github which contains our README.
As of right now, due to having the free version of Render we can not share the system. Please message us in the Teamup discord when you are ready for us to transfer ownership to you.
The support of the application will close on May 6th.
To all developers looking to build upon this project, here are several features that could be extended for greater usability:
- Inclusion of
Science Elective,General Electivein the data design - Extension of scope to include students from other faculties, departments and colleges
- Ability for users to express their interests more (outside of
tracksandemphasis) allowing for a more involved reccomendation algorithm
##LICENCE This app is under IP of Texas A&M University and is under ownership of Dr. Kebo and TEAMUP
We would like to thank Professor Wade for her continued support in this project. We would also like to thank our customer Dr. Kebo for his insights, feedback and creation of a positive environment for learning.
Prevoius Cleo group members:
- Maria Viteri
- Uzma Hamid
- Vincent Tran
- Tatiana Fern
- Neale Tham
Current Cleo group members:
#Danny Garmendez Email: dannyernesto@tamu.edu Phone: 512-826-3541 #Joseph DePolo Email: joedepolo@tamu.edu Phone: 267-6646086 #Alyan Tharani Email: alnotha@tamu.edu Phone: 832-290-9250 #Cameron Cao Email: camcao@tamu.edu Phone: 469-347-9740 #Kyle Moore Email: kyle.moore@tamu.edu Phone: 832-795-9251