A web service that allows for students to get in contact with volunteer student tutors
Leader and sole developer, Blaine Traudt
Web Design courtesy of Grant Gardner
Logo licensed from Louis Quattrocchi under the CC BY-NC 3.0 License
-
Zero-knowledge password support via Google OAuth 2.0
-
Extremely lightweight network requirements
-
Small development stack ensuring responsive web pages with no bloat
-
Responsive design no matter what device or orientation Example
-
Fully featured admin panel tailored towards newbies all the way to power users
-
Automated weekly schedule pushes
-
Intelligent matching of students with tutors based on time and subject
-
Easy to manage availability schedules for tutors
- Node.js is the runtime I decided to use for this project. I debated using Bun but I wanted to have a more established runtime since I expect this project to be deployed with little to maintenance after deployment.
- Typescript - Most if not all of the backend code is written in typescript. TS was chosen over javascript because for a complex project ensuring that types remained consistent throughout was crucial to having less error prone code. While it was a decent learning curve it definitely made development easier especially towards the end.
- PostgreSQL I decided on Postgres for most of the same reasons I chose Node. It is a well established relational SQL database that I think will stand the test of time and was really nice to use in this project.
- Express.js was used as the minimalist web framework for studors. It gave me low enough capabilities without going too low that it was hard to develop with.
- Passport.js allowed for quick and easy OAuth with Google. While it was a bit confusing to use at first and led to some less than ideal code in the end it made it so Studors could be zero-knowledge when it came to user credentials.
- JQuery while underutilized in Studors because it came in to the stack late still made using other js libraries miles easier.
- DataTables made making sortable and tabulated tables way easier than native HTML I was trying to wrangle before I brought it in to the stack
- Pickadate.js made intuitive calendars easier to create and more user friendly.
Installation of Studors is easy with Docker! (Blaine don't forget to put instructions here laters)
- Change logout to POST request
- Fix createSession in db.ts
- Have sanitize.id check against DB
- Add unavailability options
- Make admin placeholders have current data instead of example
- Lint whole project
- Test suite from start to finish
/admin/manage (Light styling required)
/student/find (Styling required)
/student/history (MAJOR restyling/refactoring required)
/student/upcoming (MAJOR restyling/refactoring required)
/tutor/history (MAJOR restyling/refactoring required)
/tutor/upcoming (MAJOR restyling/refactoring required)
- Allow tutors to blacklist problematic students (/tutor/blacklist?)
- Make removal of certain things easier for admin (/admin/manage)
- Student request for tutoring at a set time slot (/student/request)
- Tutor page to fulfill student requests (/tutor/request)
Studors is licensed under the GNU General Public License V3