This is a project we work on for the social non-profit organization Skill City Institute. The platform is designed to connect students with mentors and opportunity providers similar to LinkedIn. We took this project from the last group to iterate on the third version of this web application. Here is the presentation PowerPoint for our clients to give a big picture of the whole project. Here is the deployed version of the website.
I'm the full-stack programmer in the team and mainly in charge of fixing bugs from the last version and writing functions for the new features. Features include such as the calendar for displaying deadlines and a submission system for submitting assignments. Creating endpoints and databases for those features in Django, and using NEXT to create frontend pages for those features. Debug and fix logic problems from what the previous team left such as inconsistent UI/UX, broken images for wrongly handling the null value, and wrong logic for signup, etc.
This is one of the main function I completed for the backend. Here, we want to send the email to the user who sign up the company account and is approved by admin to inform their username and password for login. It will also create company user in the backend at same time. The basic version is completed by last group but it has a problem that the user last name has to be "Company" for successful signup because they unify the function of creating user in another script which share the same function with normal user signup. I want to improve that one so that user can give whatever name they want in the company signup page. Therefore, I create the function here which creates (or reuses) a Django User and a CompanyProfile and also Ensures userProfile.role = "Company".
This part of the code shows the basic setup for an assignment workflow (mentor creates assignment → mentee submits → mentor grades). Creating and submitting assignments is an important part of the platform because clients hope that mentors and mentees can use this function to improve the study process. SubmitAssignmentView supports authenticated users only and must be assigned to an assignment. CreateAssignmentView can assign specific mentees and defaults to all mentees if none are chosen. In GradeSubmissionView, it supports that only mentors can grade and that mentors can only see their own assignments. I also attached part of the code for the frontend that uses those api to create the submission and grading page.