Project Info
This project did not submit a demo video on Devpost.
Inspiration
I'm involved in a community service tutoring club at the University of Chicago called Phoenix Tutoring. We work with CPS students in the south-side Chicago community, and I've always found it really rewarding. Lately I've been trying to come up with a way to streamline our process with some technical infrastructure.
What it does
Plug-and-Play Tutoring - Instant set up of a community service tutoring program at any college campus. Tutoring programs require a level of technical infrastructure, in particular: A mechanism for enrolling students A mechanism for undergrads/grads to apply to be tutors A mechanism to match tutors and students, once enrolled and admitted A calendar to track when tutoring sessions will occur A good technical infrastructure would also include certain ‘luxuries’, including: Automated reminder emails to tutors and tutees based on the calendar A mechanism to collect basic analytics: most in-demand subjects, times, etc. A mechanism to collect feedback A mechanism to re-match tutors and tutees, on a semester to semester basis, based on said feedback The idea of Plug-and-Play Tutoring/TutorPages is to provide a black box that requires only basic, surface-level inputs from the users and abstracts away all technical complexity, providing features like this as well as room to grow more and build up new capabilities. This would lower the barrier to entry to creating quality, functional tutoring community service programs at any and every higher-education institution.
How we built it
For our Treehacks project, we're building a website allowing the user to showcase all tutors and students in their program. We're also putting together a matching algorithm to match tutors to students optimally by distances between n-dimensional preference vectors.
Challenges we ran into
Creating dynamically updated websites has been challenging, as we're fairly new to web development.
Accomplishments we're proud of
While we've run into some technical challenges, we're proud to be working on a project with the intent to make community service easier and more streamlined across the country. We're optimistic about our approach for a matching algorithm and we're proud to have a coherent, condensed project.
What we learned
Though we haven't moved forward with implementing our website with it, we've learned a lot about the Reflex API. We've also learned a lot about github pages, which we will be using.
What's next
Though in the 36hr format of Treehacks we of course can't perfectly implement every niche detail of a product like TutorPages, in the future we'll be continuing to work on it. As we've planned it out there's an ever-growing depth - for example, one key element we'd like to add is log-in and private access for different members of the organization, tutors, parents, students, admin, etc. The Matching Algorithm Taking lists of lists of tutor and tutee information read in by text from our student enrollment/tutor application forms, we make Tutor and Tutee python objects. For a total offering of n subjects and k times, we provide helper functions to 1) take the distance formula on two n-dimensional vectors/points and 2) find overlaps out of lists of <= k times of availability. Using these helpers, we match every tutee to one tutor, with only tutors having the possibility of remaining unmatched. We do this as follows: after making sure the potential-match tutor and tutee are available at the same time, we optimize for similarity of subject preference vectors: tutors that are most comfortable tutoring a given subject are paired with students most in need of help with that subject. Finally, we produce Session objects from our matching dictionary, and store them. We should be left with a grouping of Session objects which can be queried for information about the tutor and tutee, the time, subjects being tutored, and so on.
Inspiration
I'm involved in a community service tutoring club at the University of Chicago called Phoenix Tutoring. We work with CPS students in the south-side Chicago community, and I've always found it really rewarding. Lately I've been trying to come up with a way to streamline our process with some technical infrastructure.
What it does
Plug-and-Play Tutoring - Instant set up of a community service tutoring program at any college campus. Tutoring programs require a level of technical infrastructure, in particular:
- A mechanism for enrolling students
- A mechanism for undergrads/grads to apply to be tutors
- A mechanism to match tutors and students, once enrolled and admitted
- A calendar to track when tutoring sessions will occur
A good technical infrastructure would also include certain ‘luxuries’, including:
- Automated reminder emails to tutors and tutees based on the calendar
- A mechanism to collect basic analytics: most in-demand subjects, times, etc.
- A mechanism to collect feedback
- A mechanism to re-match tutors and tutees, on a semester to semester basis, based on said feedback
The idea of Plug-and-Play Tutoring/TutorPages is to provide a black box that requires only basic, surface-level inputs from the users and abstracts away all technical complexity, providing features like this as well as room to grow more and build up new capabilities.
How we built it
For our Treehacks project, we're building a website allowing the user to showcase all tutors and students in their program. We're also putting together a matching algorithm to match tutors to students optimally by distances between n-dimensional preference vectors.
Challenges we ran into
Creating dynamically updated websites has been challenging, as we're fairly new to web development.
Accomplishments that we're proud of
While we've run into some technical challenges, we're proud to be working on a project with the intent to make community service easier and more streamlined across the country. We're optimistic about our approach for a matching algorithm and we're proud to have a coherent, condensed project.
What we learned
Though we haven't moved forward with implementing our website with it, we've learned a lot about the Reflex API. We've also learned a lot about github pages, which we will be using.
What's next for TutorPages
Though in the 36hr format of Treehacks we of course can't perfectly implement every niche detail of a product like TutorPages, in the future we'll be continuing to work on it. As we've planned it out there's an ever-growing depth - for example, one key element we'd like to add is log-in and private access for different members of the organization, tutors, parents, students, admin, etc.
The Matching Algorithm
Taking lists of lists of tutor and tutee information read in by text from our student enrollment/tutor application forms, we make Tutor and Tutee python objects. For a total offering of n subjects and k times, we provide helper functions to 1) take the distance formula on two n-dimensional vectors/points and 2) find overlaps out of lists of <= k times of availability. Using these helpers, we match every tutee to one tutor, with only tutors having the possibility of remaining unmatched. We do this as follows: after making sure the potential-match tutor and tutee are available at the same time, we optimize for similarity of subject preference vectors: tutors that are most comfortable tutoring a given subject are paired with students most in need of help with that subject. Finally, we produce Session objects from our matching dictionary, and store them. We should be left with a grouping of Session objects which can be queried for information about the tutor and tutee, the time, subjects being tutored, and so on.
Getting Started with TutorPages
Useful Links
- Tutor Signup form: https://bit.ly/tutorPagestutor
- Student Signup form: https://bit.ly/tutorPagesStudent
How to use
- Fork the repo
- Replace
your-email@domain.comin_config.ymlwith your email address. Refer to formspree for more information. - Clone the repo onto your local machine
- Download the results of your tutor signup form and student signup form (see above), and replace the current tutorinfo.xlsx and studentinfo.xlsx forms in your local repo. Open and run the pipeline.py file from the pythonfiles folder on your local machine, and your pairings will appear!
Setting Up a Virtual Environment and Installing Required Packages
Step 1: Install Conda
If you haven't installed Conda yet, you can download and install Miniconda or Anaconda from the official website: Miniconda | Anaconda.
Step 2: Create a Virtual Environment
Open a terminal or command prompt and create a new virtual environment using Conda. Replace <env_name> with your desired environment name.
conda create --name <env_name> python=3.8
Activate the virtual environment:
-
On Windows:
conda activate <env_name> -
On macOS and Linux:
source activate <env_name>
Step 3: Install Required Packages
Navigate to the directory containing your requirements.txt file. Then, use pip to install the required packages:
pip install -r requirements.txt
Replace requirements.txt with the actual name of your requirements file if it's different.
Step 4: Verify Installation
To verify that the packages were installed correctly, you can check the list of installed packages in your virtual environment:
pip list
Step 5: Deactivate the Virtual Environment
Once you're done working in the virtual environment, you can deactivate it:
conda deactivate
Jekyll theme based on Freelancer bootstrap theme
For more details, read the documentation
Analysis
View
Metric
- 135
- 2
Figures cover GitHub contributors during the hackathon window. A co-authored commit counts in full for each author, so per-member totals add up to more than the whole-team figures.
Technology
- CSSIn code
- HTMLIn code
- JavaScriptIn code
- PHPIn code
- PythonIn code
5 of 5 appear in the indexed code.
AI coding agents
No AI coding agent signals were found in this repository.
Detected from committed agent config files and commit authorship. Absence of a signal is not proof an agent was unused.
Codebase size
Source size
650 KB
Source files
58
Counts recognized source files only; vendored directories, binaries and lockfiles are excluded, so this is smaller than the repository on disk.
Repository
Rubemat20/tutorPages
96 files · 2.2 MB · @ d9b7e4c
Structure
Interface
26 files · 27%Screens, components and styles rendered to the user.
Application logic
30 files · 31%Domain rules, services and shared utilities.
Supporting
Layers are inferred from where files sit in the tree, not from reading the code. A project that names its directories unconventionally will read oddly here — open the file browser to check anything the diagram implies.
Languages
- CSS55%
- JavaScript36%
- HTML4%
- Python3%
- Markdown2%
- XML1%
- Other (2)1%
Share of indexed source by file size. Binary and vendored files are excluded.
Dependencies
requirements.txt
pypi · 2- git
- openpyxl
Declared in the repository’s manifests at the indexed commit. A declared package is not proof it is used, and runtime dependencies are listed first.
This project’s features have not been analysed yet.
Export this project's context (description, README, evidence, key source files) to chat with an AI agent elsewhere.