Tutoro is a peer tutor matching service made with Django-React-Redux-PostgresSQL.
I made this project as an exercise in full stack development. I tried to mostly implement features manually to learn more about them. For example, while I used Django's built-in password reset email system, I implemented my own email verification flow - complete from model to api to frontend.
The idea behind this project was to enable easier and more organized connection between students who can help each other. Right now students are finding tutors from craigslist, or flyers across campus, or by going on department specific discords. Tutoro is school specific and only allows certain email addresses to sign up, so that it is focused on the peer tutoring community.
The app is currently in the MVP state. Functions include:
[X] Authentication system complete (registration, email verification, login, change password, reset password)
[X] Each user can add courses they can tutor, and add courses they need to be tutored in
[X] Each user can see other users that match the courses they can tutor or need to be tutored in
[X] User can filter matching results by course
[X] Signup is restricted to a specific school (in this case my school: Simon Fraser University)
[X] Backend tracks when a user requests the email of another user (this will be used for analytics, and for future features such as verifying reviews)
Some of these are smaller than others. I will be working on this part time.
[X] Allow tutors to edit course price without having to remove a course and re-add it (added feb 13)
[] Sort match results
[] Add autocomplete to adding courses to profile
[] Clean up code and comments
[] Get help with ui/ux and overall design (I am definitely not a designer)
[] Implement a review system for tutors
[] Will require public user profiles
[] Would be nice to review tutors in multiple categories (knowledge, teaching ability, personable etc)
[] Consult for more ui/ux changes, eg. if same person can tutor you in two courses, show as one result?
[] Implement in app messaging
[] Implement in app scheduling
[] Allow for subscription model? (If you want to tutor, you pay a small fee for a semester for matching/messaging/scheduling)
If you would like to try editing Tutoro, or perhaps set it up for your own school, clone the repo first.
For development you want to make a few changes:
-
In
tutoroProject/tutoroProject/settings.py
:- set
Debug=True
- comment out
'URL': os.environ['DATABASE_URL']
andDATABASES['default']=...
- uncomment the following fields in
DATABASES = {}
:'NAME', 'USER', 'PASSWORD', 'HOST', PORT'
- I set the project up with Postgres, read more about how to set it up here and here. Alternatively you can switch back to SQLite for local development by changing your database settings as seen here.
- set
-
You must also make sure to set up your environment variables to match the
os.environ
calls in the settings. You will learn about some of those parameters in the tutorials above, and you can look here. -
I recommend using a python virtual environment. I used pipenv. You can then use
pipenv shell
to start the virtual environment in the root folder and usepipenv install
to automatically install all packages in thepipfile
. -
You will also need
npm
. runnpm install
from the root folder to install the node modules. -
Finally! You're ready! I recommend having two terminals open. One will run your django server from the folder
tutoroProject/tutoroProject
by runningpython manage.py runserver
-
From the other terminal you will run from the root directory:
npm run dev
-
The site should be open on
localhost:8000
! -
Note: I have included a
sample_env_variables
file that can do the above for you if you just set the required variables.