Skip to content

ayberkaarda/DevSwap

Repository files navigation

DevSwap

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.

🛠️ Architecture & Technologies

Ruby Ruby on Rails PostgreSQL Tailwind CSS Docker

✨ Core Features

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: MatchFinder cross-matches each user's "learning" embedding against other users' "teaching" embedding (and vice-versa) using the neighbor gem / Postgres pgvector extension, 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.

🧪 API & Feature Testing

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.

📂 Directory Structure

  • 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.


🛠️ Installation & Execution (Local Development)

1. Requirements

  • Ruby 4.0.5 (see .ruby-version)
  • Rails ~> 8.1.3
  • PostgreSQL with the pgvector extension available (required by the neighbor gem for teach/learn embeddings)
  • Docker (optional, for containerized development)

Clone the repository and install dependencies:

git clone <repo-url>
bundle install

2. Database Configuration:

Configure 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:seed

3. Running the Application:

bin/dev

👨‍💻 Developer Ayberk Arda

Software Developer | Computer Programming, Istanbul Kültür University (İKÜ)

About

A Ruby on Rails application designed for skill sharing and community interaction, featuring real-time terminal chat, post management, and user profiles.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors