StudySpot provides quick, simple access to classroom information.
It allows you to find available classrooms which you can use for studying or group work as well as explore the schedule of any classroom on University of Waterloo's campus. Simply provide the building(s), date, and time you would like to find available rooms at and StudySpot will provide you with rooms which have no classes scheduled.
StudySpot also offers a general Room Explorer feature which shows you all buildings on campus and allows you to view the schedule of any classrooms. StudySpot also provides an embedded version of the University of Waterloo Campus Map which allows users to easily locate the building locations and classroom locations (if connected to a UW network).
The classroom schedule information is obtained from the University of Waterloo Open Data API and scraped into a MongoDB database. The database allows for efficient and more aggregated querying of schedule information as opposed using the UW API directly.
The webapp is currently hosted over at https://uw-studyspot.herokuapp.com/
- React - Framework used to design the front-end UI
- Express - Back-end web application framework
- MongoDB - Database used to store required data
- Node.js - JavaScript run-time environment
To run this application, you'll need:
- Node.js & npm installed.
- A MongoDB database.
- UW API key.
The MongoDB URI and the UW API keys can be added to your environment variables or can be stored in a keys.js file in ./config The expected environment variable names are:
- MONGO_URI
- UWATERLOO_API
To get the frontend and backend run locally:
- Clone this repo
npm installto install all back-end required dependenciesnpm clientto navigate to front-end directorynpm installto install all front-end required dependenciescd ..to return back to the root directorynpm run devto start the local server
The front-end will run on port 3000 to prevent conflicts with the backend Express server which runs on port 5000 (customizable using the PORT environment variable).
The application provides an API in order to easily access some of the information stored on the database. The following endpoints are currently implemented:
- GET /api/buildings
- GET /api/buildings/:code
- GET /api/buildings/:code/rooms
- GET /api/buildings/:code/rooms/:id
- POST /api/search/buildings
More information about the endpoints available as well as examples can be found on the Postman Collection documentation here
- Fork it (https://github.com/yalshekerchi/StudySpot/fork)
- Create your feature branch (
git checkout -b feature/fooBar) - Commit your changes (
git commit -am 'Add some fooBar') - Push to the branch (
git push origin feature/fooBar) - Create a new Pull Request
- Yasir Al Shekerchi - Project Developer - yalshekerchi
See also the list of contributors who participated in this project.
This project is licensed under the MIT License - see the LICENSE.md file for details.
This project contains information provided by the University of Waterloo under license on an 'as is' basis.
- University of Waterloo Open Data team for helping the open source community and providing all the information on their API
- University of Waterloo Campus Map team for their great campus map implementation



