← Back to Portfolio Campus SkillSwap

Campus SkillSwap - Peer-to-Peer Student Skills Marketplace

A full-stack Django marketplace where students post skills they can teach and other students discover, book, and review sessions directly with peers.

My Role
Student & Builder
Company
Baylor University
Industry
EdTech, Two-Sided Marketplace, Web

Business Problem

Students have skills they could teach (Python, languages, music, fitness) and peers who want to learn them, but no campus-native channel exists. Existing platforms charge professional rates and target adults, so student-to-student exchange falls back to word-of-mouth and Discord, which is slow, fragmented, and trust-poor.

Tools Used

DjangoPythonSQLiteDjango AuthHTML/CSSBootstrap

Key Features

  • Skill listings with category, pricing type (free or paid), contact preference, and availability status
  • Star-rating reviews (1-5) with optional comments, enforced unique per learner per skill
  • Session booking with proposed time, message, and explicit pending -> accepted/declined -> completed state transitions
  • Unified dashboard that adapts to the user's current role (provider or learner) without splitting into two apps
  • Marketing landing page with at-a-glance counters (skills posted, providers, categories) so a first-time visitor immediately understands the product
  • Auth flows (register, login, logout) using Django's built-in auth, with a single User foreign key on each model to scope ownership cleanly

My Role & Contribution

Sole designer and builder. Modeled all three core entities (Skill, Review, SessionRequest), wrote views, forms, and templates, integrated Django auth, designed the dashboard to adapt by role, and shipped the marketing landing page that communicates the product in seconds.

Biggest Challenge

Designing a session-booking workflow that respects state transitions and stays consistent across two different views (the learner's outgoing requests and the provider's incoming requests). Solved by encoding the status field as an explicit choice list, using the same SessionRequest object on both sides, and making the dashboard adaptive to the current user's role rather than splitting the codebase into two parallel apps.

What I Learned

How a real two-sided marketplace works underneath the polish: the mental model (listings, requests, status transitions, reviews) is what matters, and the framework (Django ORM, auth, templating) is the tool that executes it. Designing for two audiences in one codebase via role-adaptive views is far cleaner than fragmenting into separate apps. The pattern transfers directly to any other marketplace product.