The Resident Assistant Duty Scheduling Application (RADSA) is Web application that schedules Resident Assistants for nightly duty shifts and displays the schedule for the RAs to see. The application allows RAs to login and submit any conflicts they might have for a particular month, and a Hall Director, or their Assistants, may run the scheduling algorithm, view the result and make any changes before displaying it to the RAs.
These instructions will get you a copy of the project up and running on your local machine for development and testing purposes. See deployment for notes on how to deploy the project on a live system.
RADSA utilizes a Flask web server to serve pages to the client. The web server also communicates with a PostgreSQL database to display the proper information to the client in addition to running the scheduling algorithm. For this application, you will need:
- PostgreSQL 9.5
- Python 3.5
- VirtualEnv 15.1
Here is a step by step series of examples that tells you how to get the development environment up and running.
Installing PostgreSQL
$ sudo apt-get update
$ sudo apt-get install postgresql postgresql-contrib
$ sudo -u postgres createuser --interactive
Follow the prompts to create a role for yourself. I suggest creating a role that is the same name as your username and making yourself a superuser.
Installing Python
$ sudo apt-get install python3.5
Installing VirtualEnv
$ sudo pip install virtualenv
$ virtualenv -p python3 /path/to/home/MyEnv
$ source /path/to/home/MyEnv/bin/activate
In order to develop in the correct Python environment, you will need to perform the last step each time you close your terminal. Similarly, if you would like to exit the virtual enviromnet, simply type deactivate
in the terminal.
With all of the above prerequisites installed, you should be able to run
$ python createDB.py
$ python scheduleServer.py
to start the Flask server. You can then open the browser of your choice and go to localhost:5000/
.
RADSA is deployed on Heroku.
See also the list of contributors who participated in this project.