Giter VIP home page Giter VIP logo

tutoropublic's Introduction

Tutoro

Tutoro is a peer tutor matching service made with Django-React-Redux-PostgresSQL.

Tech stack

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.

Current State:

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)

Planned Features:

Some of these are smaller than others. I will be working on this part time.

Shorter Term Features:

[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)

Longer Term Goals:

[] 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?

Possibilities For The Future:

[] 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)

Development:

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'] and DATABASES['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.
  • 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 use pipenv install to automatically install all packages in the pipfile.

  • You will also need npm. run npm 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 running python 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.

tutoropublic's People

Contributors

sina-jamshidi avatar dependabot[bot] avatar

Stargazers

maraf avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.