Theseus Lim

G{Code}

Product Management
Web Development
Role: Project Manager
Date: Sep 2022 - May 2023
Time Frame: 5 hrs / week for approximately 25 weeks
Tools: React JS, FastAPI, MongoDB, GitHub, Trello
Technologies: Typescript, Python, Git
Skills: Agile Methodologies, Project Management, Full Stack Web Development

Client + Project

This project was done by me and my team from JumboCode, a nonprofit that does pro bono work for other nonprofits. Our client was G{Code}, a Boston-based nonprofit that provides access to CS education for women and non-binary people of color. More about G{Code} can be found athttps://www.thegcodehouse.com/
Our initial project spec was to create a customized platform to replace Canvas. As I continued to talk to the client, we found other pain points and user needs, and the final project ended up as a cross between Canvas, Calendly, and Piazza.

Timeline

  • Project Roadmapping
  • Choosing and Training Developers
  • Initial Designs
  • Creating models and collections in MongoDB
  • Building frontend pages to design quality
  • Writing routes for the frontend to interact with the DB
  • Security and Authentication
  • Polishing and Handoff

Responsibilities

Client Interaction

This is some text inside of a div block.

Project Planning

This is some text inside of a div block.

Team Chemistry and Leadership

This is some text inside of a div block.

Creating Sprints

This is some text inside of a div block.

Final Product

The repository can be found at: https://github.com/JumboCode/G-Code

Login and Registration

The login and registration pages interact with the DB which holds User and UserInvite models.
A User is a full registered account, and allows full access to the platform.
A UserInvite object is created when an existing user requests to add a user by providing their email. That email is then sent an access code, which is associated with their email in MongoDB, allowing them to complete registration.

Our authentication system stores the logged-in user account in cookies, and on loading pages accesses that object to determine access and specific details to show such as appointments.

Dashboard

The dashboard includes brief snippets of each component -- it shows upcoming appointments, assignments, and has links to navigate to the FAQ Board.

Appointment Scheduling

Tutors can add time slots for each day, which will be saved as 30-minute appointments.





Students can then go into the student-side Office Hours page, and reserve an appointment from the available pool.

After a student reserves an appointment, both the student and tutor are automatically emailed with a reminder of the time and date of the appointment.

FAQ Board

On the main page, all questions are listed from most recent to least recent.





On clicking on a question, users are brought to a thread where they can view all replies and reply themselves.




To create a question, users can click 'Ask a Question', which will create a pop-up modal.

Assignments

Both admins and students can view a list of upcoming assignments that they have assigned / were assigned.





When admins view an assignment, they'll see the description and a list of submissions. When a student views the assignment, they will see the description and a textbox to submit a URL.

Reflection + Lessons Learned



My favorite part was the team leadership aspect. To prepare for being a PM, I read books such as Atomic Habits, Extreme Ownership, and other management/leadership books. Even now, I really enjoy that genre and continue to read them. I believe that my psychology background helped me a bit in creating and organizing a well-balanced team, but a lot of the time I found myself thinking back to these books or trusting my instincts.
In high school I was very reserved, and even though I've grown a lot, I'm still usually not the loudest person in the room. It seemed to me that a lot of leaders were more outgoing or outspoken, but I was able to prove to myself that I could be an excellent leader by playing to my own strengths. I focused on team dynamics and building relationships both inside and outside the 'office'. I also lead by example and set high standards for myself, and haot of one-on-one conversations with team members. Through being a PM, I was able to hone this style, and run one of the most socially compatible teams. The bonds that people formed outside of worktime also improved productivity, by causing team members to feel a social responsibility to their teammates and friends to pull their weight.Being a Project Manager was honestly one of the most rewarding things I've done in college. It allowed me to gain a lot of insight into working on a 'real life' project, rather than arbitrary school assignments.