Source code for ModulePal (modulepal.com).
This project was originally an attempt to learn Spring and React, but it evolved into something-of-a-product and exploded in complexity. While the code works, it's certainly not the best it could be, and a lot has been learned from the project.
Aspects of the code have been tidied up and separately open-sourced, e.g. OAuth1-HMAC: https://github.com/omarathon/oauth1-hmac.
An overview of the tech stack is given below (more detail can be found in the README of the frontend and backend). In general it's a high-performance CRUD application with optimisations in the backend for metric computations, and a secure OAuth authentication system for university student data. The backend is a monalith. The entire app is actually free to host and run (including the backend).
- Java Spring Boot
- Maven
- H2 Database Engine
- Hibernate ORM
- Google Firebase Authentication
- Google Firebase Realtime Database
- Warwick Tabula API
- Warwick OAuth
- Heroku
- Mailchimp
Below is an architecture diagram depicting how the components of the frontend backend interact.
If you would like to run the site yourself, you should first make a private Firebase Project that will be shared by both the frontend and the backend. Then, set up the backend, followed by the frontend (guides are provided in the respective directories' README). You will probably need to make additional changes after deploying via the guides. You'll need a few API keys from the University of Warwick, but the entire app should be free to host provided you use our stack.
If you'd like to become the maintainer of ModulePal or run it yourself and require assistance, I'd be happy to help. I'm aware there's a lot of details that have not been fully explained in the README files, and that aspects of it may be difficult to understand. There's plenty that can be improved. DM me on Discord: omarathon#2226
.
Please note that we do not provide the populated database of ModulePal in production (https://modulepal.com) here, as it contains sensitive student data. If you would like this data, please request it.
I'd like to acknowledge the following people for significant assistance on the project:
- Dr. Florin Ciucu - High-level steering, departmental assistance
- Vanshika Saxena - UI/UX mockups in Adobe XD and React implementation
- Adam Williams and Michael Gale - Assistance with Warwick/ITS technologies
This software is protected under the BSD 3-Clause license.
Copyright (c) 2022, Omar Tanner All rights reserved.
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
-
Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
-
Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
-
Neither the name of the copyright holder nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
See LICENSE for further information.