SkillSwap — Octopus Hackathon Submission
Inspiration
The inspiration for SkillSwap came from a simple observation: learning is expensive, but everyone has something to teach. However, most free communities fail because of the "leech problem"—a situation where users take value but never give back. I wanted to build a platform that wasn't just a directory, but a circular economy where knowledge is a shared currency.
What it does
SkillSwap is a MERN-stack platform that facilitates structured peer-to-peer learning. It features:
- Dual-Nature Postings: Users can create Offers (to teach) or Requests (to learn).
- The HelpPoints System: A custom economic model I designed to ensure fairness. Every user starts with 5 HelpPoints. Requesting help costs 1 point, while providing help earns you 1 point.
- Protected Coordination: A secure environment to manage "Incoming" and "Outgoing" swaps, complete with meeting scheduling and status tracking.
The HelpPoints Logic
To ensure the community remains balanced and solves the free-rider problem, I implemented the following logic: $$\Delta P_{provider} = +1, \quad \Delta P_{requester} = -1$$ This formula ensures that for every "take," there is an equal "give," maintaining a stable ecosystem.
How I built it
I utilized a robust MERN architecture to ensure scalability and a smooth user experience:
- Backend: Node.js & Express with a clean MVC pattern to manage complex business logic for HelpPoint transactions.
- Frontend: React & Vite for a high-performance, single-page application experience.
- Database: MongoDB & Mongoose to store relational data between users, their points, and swap history.
- Security: JWT-based authentication with protected API endpoints.
- Notifications: Nodemailer for automated email coordination when swaps are accepted or completed.
[Image of MERN stack architecture diagram]
Challenges I ran into
As a solo developer, the most significant challenge was implementing the conditional UI logic for the "Incoming" vs "Outgoing" tabs while managing the full-stack integration. I had to ensure that the text dynamically updated based on the post type (e.g., "User X wants to help with this" for Requests vs "Request from User Y" for Offers). Additionally, ensuring that HelpPoints were updated atomically—only when a swap is marked as "Completed"—was crucial to maintaining the integrity of the platform's economy without creating "ghost" points.
Accomplishments that I'm proud of
- The Anti-Leech Guardrail: Successfully building a system that mathematically discourages free-riding.
- Solo Execution: Managing the entire lifecycle of the project from database schema design to the final UI polishing.
- Clean Architecture: Maintaining a highly organized codebase with a clear separation of concerns between the client and server.
What I learned
I learned that incentive design is just as important as technical design. Building the HelpPoints logic taught me how to translate a community value (fairness) into a backend requirement. I also deepened my understanding of React's useEffect hooks for handling complex, multi-tab filtering and pagination in a real-world scenario.
What's next for SkillSwap
- Live Chat: Integrating Socket.io for real-time discussion before a swap is accepted.
- Reputation System: Beyond points, adding "Expertise" badges for top-tier contributors.
- Calendar Integration: Allowing users to sync their scheduled swaps directly to Google Calendar.
- Mobile App: Expanding the reach of the SkillSwap economy with a dedicated mobile experience.
Built With
- express.js
- mongodb
- node.js
- react
- tailwind
- vite