PrincetonClubs
Full-Stack Web App Development for COS333
Role
Front-end & Middle-tier Developer
Skills
Development • UX
Team
4 developers, 1 advisor
Outcomes
Implemented my first full-stack application project.
The Problem. Princeton students struggle with decision paralysis when looking for clubs to join.
Princeton has 600+ student organizations, an enormous number that would reasonably cause decision paralysis for undergraduates, especially incoming freshmen. It’s not uncommon for students to express that they “wish they joined sooner”, because many students don’t ever encounter clubs that would otherwise be great spaces for them, or often discover them too late into their 4 years on campus.
The Process
3. Princeton ODUS’s MyPrincetonU
This web platform by Princeton’s Office of Dean of Undergraduate Students is rarely used in practice. Its clutter of features are ones that students don’t need or that are not presented in ways most useful to them.
4. Coffee Chats
Allow students to hear from current members about important insights like time commitment, social environment, or prerequisite skills, but offer limited time slots.
Identifying Existing Experiences
1. School-wide Emails
Instantaneous and direct, but having to sift through 100s of emails is tedious. Information, sign-up links, and event publicity often get lost in inboxes.
2. Club Fair
While great for meeting members and browsing clubs in one space, the Club Fair occurs only once a semester and not all clubs get the same visibility.
The Users
✦ Browsers
Students browsing clubs. They are always looking for new opportunities, but have trouble using numerous segmented avenues. They have busy schedules and are concerned about factors like time commitment, social environment, or career development.
Students want club searching to be a fast and efficient experience. They are willing to share their thoughts on clubs they are involved in.
✦ Club Officers
Interested in continuing a body of members and club activity by recruiting new interest. Student officers and leadership publicize clubs by sharing application links, marketing content, or events.
Clubs are concerned about garnering attention and struggle to reach people through convoluted or limited avenues.
A New Experience
PrincetonClubs acts as an intermediary between students and clubs.
Our key value add is a new club review system which allows for students to hear from fellow undergraduates and gain insights into the characteristics of clubs that they are interested in to help better identify student organizations they prefer.
Tommy is a member of Club A, an officer of Club B, and browsing for a new club to join.
Implementation
PrincetonClubs was implemented as pictured above. Data was collected by requesting a partial-access API from Princeton ODUS, allowing our team to get necessary information without violating privacy concerns. Access to the application beyond the landing page requires Princeton CAS authentication, but screenshots are below.
Homepage
Browsers can simplify their search by filtering with club categories and sorting by Overall rating or various review metrics.
Clubs a user expressed interest in are easily accessible in the Results list.
Homepage after authentication from Landing page.
Sort and Filter panel expanded.
Overall rating is a star system.
5 review criteria were selected through user interviews, and Time Commitment was the top concern for students, thus featuring two sub-questions.
Hovering reveals the exact numbers for average and personal review.
Club Page
Displays information on a student organization. Includes description, external links, officer contacts, events, and review panel.
Clicking an event opens a detail modal with a button to the RSVP form if applicable.
Manage Clubs Page
Users will only see clubs for which they are listed as an officer, authenticated by CAS credentials and the club officer data from the ODUS API.
Officers can edit their club’s Club Page, view profiles of students that expressed interest, and manage their events.
Profile Page
The Profile also contains basic information as well as optional prompts for interests, experience, and resume. Using a student’s profile, Officers can gauge a student’s fit as a member or find their dorm information for club pick-ups.
This page also shows a record of the user’s club reviews and quick links to modify reviews.
Events Board Page
Displays all upcoming events from all different clubs in masonry layout so that event details, description, and RSVP option are all viewable.
2 sample events are displayed.
Reflection
Given that no one on the team had experience with full-stack development, it was rewarding to be able to see this project through to the end. Beginning this project, I went in with some HTML/CSS experience, but no prior experience with Python or backend and middle tier programming.
Through this project, I was able to learn valuable lessons:
How full applications are built and the interactions between development tiers
The empowering discovery that it is feasible for me, as an undergraduate student, to implement a full-stack alongside peers
The challenges, iterations, and backtracking involved in implementing something of this scale
How hard it is to think of new names for the the sheer number of functions and files that we were managing!
The immense importance of front end and middle tier development in building an application
Being a COS student that is more interested in interface and design, I think it was quite empowering – although tiring – to see how many frontend and middle tier related tasks piled onto our workload.
Given more time with the team, I would have liked to see the following improvements and expansions:
Caution when choosing development frameworks to avoid backtracking
Proper user research with more consistent interaction with users
A fully-fleshed UX and prototyping process
Integrating photos into many of the application’s features
Implementing an officer assignment function so that new officers can be given edit access
Work with the Princeton Office of IT to get a self-sustainable API