DevSwap is a community-driven development platform built with Ruby on Rails, designed to facilitate skill sharing, technical discussions, and real-time collaboration among developers. It matches people who want to teach a skill with people who want to learn it, using GitHub activity and pgvector-based semantic embeddings.
The application supports a robust set of features for developer community interaction:
-
Skill Exchange: Users can define and manage teaching and learning skill sets (
direction: teaching/learning), manually or via free-text skill creation. -
pgvector Teach↔Learn Matching:
MatchFindercross-matches each user's "learning" embedding against other users' "teaching" embedding (and vice-versa) using theneighborgem / Postgrespgvectorextension, so matches are found by semantic similarity, not just exact skill names. -
GitHub Scanning: Users can connect their GitHub account; a background job scans their repositories/languages and auto-populates "teaching" skills with a confidence
weight. -
Public Profiles: Every user has a public profile page showing their teaching/learning skills (with a simple CSS/SVG bar-chart visualization of skill weights), scanned GitHub repos, and match quality against the current viewer.
-
Community Feed: A dedicated post system to share updates, insights, or questions.
-
Notifications: Posts are scanned and matched users are notified (in-app bell + PWA push) when a post is relevant to their skills.
-
Real-time Terminal Chat: Integrated, low-latency chat functionality powered by ActionCable, including presence, typing indicators, read receipts, command history (↑/↓), and a small slash-command engine (
/clear,/whoami,/ping,/omni,/help). -
User Profiles: Personalized profiles to track contributions and technical expertise.
-
PWA: Installable as a Progressive Web App.
The application features a comprehensive test suite located in the /test directory. All controllers, models, and real-time channels (specifically terminal_chat_channel) have been validated to ensure reliability and stable performance across the development lifecycle.
-
app/controllers/: Handles the incoming web requests and orchestration logic. -
app/models/: Defines the data models, including User, Post, Skill, and Message entities. -
app/channels/: Houses the ActionCable logic for real-time terminal chat communication. -
config/: Contains the application configuration, including database settings and environment-specific setups.
- Ruby 4.0.5 (see
.ruby-version) - Rails ~> 8.1.3
- PostgreSQL with the
pgvectorextension available (required by theneighborgem for teach/learn embeddings) - Docker (optional, for containerized development)
Clone the repository and install dependencies:
git clone <repo-url>
bundle installConfigure your database credentials within config/database.yml, then initialize the schema and seed data. Seeding also loads the canonical skill pool (db/seeds/canonical_skills.rb):
bin/rails db:create db:schema:load
bin/rails db:seedbin/dev👨💻 Developer Ayberk Arda
Software Developer | Computer Programming, Istanbul Kültür University (İKÜ)