Skip to content

Latest commit

 

History

History
114 lines (76 loc) · 2.92 KB

README.md

File metadata and controls

114 lines (76 loc) · 2.92 KB

CodePair

Real-time Technical Interview Platform

Go Version Node Version

CodePair Interface

Overview

CodePair is a platform for conducting remote technical interviews with integrated code editing and real-time communication features. It helps technical teams evaluate candidates through live coding sessions with built-in video, chat, and collaborative code editing capabilities.

Frontend

  • Framework: React with TypeScript + Tanstack, TailwindCSS
  • Editor: Monaco Editor, TipTap (for the Notes)

Backend

  • HTTP Servers: Gin (Core) + nbio (Non-blocking HTTP Server), Fiber (Peer)
  • Database: PostgreSQL, GORM
  • Real-time: WebRTC, WebSocket
  • Utils: Zap Logger, JWT

Application Screenshots

Dashboard & Room Management

Interview Room Dashboard

Account Management

Staff Interviewer Settings Lead Interviewer Settings Interviewer Configuration

Interview Sessions

Room Setup Active Interview Session Complete

Authentication

Login Interface

Getting Started

Prerequisites

Tool Version
Node.js v22+
Go v1.22+
Docker Latest
PNPM v8+

Installation

  1. Clone the repository:
git clone https://github.com/elskow/codepair.git
cd codepair
  1. Set up the development environment:
make setup
  1. Start the development servers:
make dev

Development Commands

Command Description
make dev-deps Install dependencies
make dev Start all services
make dev-core Start core service
make dev-peer Start peer service
make dev-client Start client application
make stop Stop all services
make clean Clean up environment

Architecture

graph TD
    Client[Client Application] --> Core[Core Service]
    Client --> Peer[Peer Service]
    Core --> DB[(PostgreSQL)]
    Peer --> WebRTC[WebRTC Signaling]
Loading

CodePair follows a microservices architecture with three main components:

  • Core Service: Handles business logic and data management
  • Peer Service: Manages WebRTC connections and real-time communication
  • Client Application: Provides the user interface and interaction layer