Skip to content

shahnawaz-codes/talentrox

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

57 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

TalentROX β€” Video Calling Interview Platform

TalentROX Banner

A real-time collaborative technical interview platform with video calling, live code editing, and session management.

Node.js React MongoDB Express


πŸ“‹ Table of Contents


πŸš€ Overview

TalentROX is a full-stack technical interview platform that allows developers to conduct and participate in live coding sessions. Hosts can create sessions for specific LeetCode-style problems, participants can join in real-time, write code together, run it against test cases, and collaborate over video/chat β€” all in one place.

The platform integrates:

  • Clerk for authentication
  • Stream for video calls and chat
  • Inngest for background jobs (user sync)
  • JDoodle API for sandboxed code execution

✨ Features

  • πŸ” Authentication β€” Secure sign-up/sign-in via Clerk
  • πŸŽ₯ Video Calls β€” HD real-time video using Stream Video SDK
  • πŸ’¬ Live Chat β€” In-session messaging via Stream Chat
  • 🧩 Collaborative Code Editor β€” Monaco Editor with multi-language support (JavaScript, Python, Java)
  • ▢️ Code Execution β€” Run code in-browser via the JDoodle API
  • πŸ“‹ Session Management β€” Create, join, and end coding sessions
  • πŸ† Problem Library β€” Curated DSA problems with difficulty levels
  • πŸ“Š Dashboard β€” View active sessions and past session history
  • 🎊 Confetti Celebration β€” Triggers when all test cases pass
  • πŸ“± Responsive UI β€” Mobile-friendly layout with DaisyUI + Tailwind CSS

πŸ›  Tech Stack

Frontend

Technology Purpose
React 19 UI framework
Vite Build tool
Tailwind CSS v4 Styling
DaisyUI v5 Component library
React Router v7 Client-side routing
TanStack Query v5 Server state management
Clerk React Authentication UI
Stream Video React SDK Video calling
Stream Chat React Chat interface
Monaco Editor Code editor
React Resizable Panels Resizable layout
Axios HTTP client
canvas-confetti Celebration effects

Backend

Technology Purpose
Node.js 20+ Runtime
Express 5 Web framework
MongoDB + Mongoose Database
Clerk Express Auth middleware
Stream Chat SDK Chat management
Stream Node SDK Video call management
Inngest Background job processing
dotenv Environment config

🏁 Getting Started

Prerequisites

1. Clone the repository

git clone https://github.com/shahnawaz-codes/Video-Calling-Interview-Platform.git
cd Video-Calling-Interview-Platform

2. Install dependencies

# Install frontend dependencies
cd frontend && npm install

# Install backend dependencies
cd ../backend && npm install

3. Configure environment variables

Create .env files as described in the Environment Variables section below.

4. Run in development

# Start backend (from /backend)
npm run dev

# Start frontend (from /frontend)
npm run dev

The frontend will be available at http://localhost:5173 and the backend at http://localhost:3000.

5. Production build

# From root
npm run build
npm start

πŸ” Environment Variables

Backend (backend/.env)

PORT=3000
MONGODB_URI=mongodb://localhost:27017/talentrox
NODE_ENV=development
CLIENT_URL=http://localhost:5173

# Clerk
CLERK_PUBLISHABLE_KEY=pk_test_...
CLERK_SECRET_KEY=sk_test_...

# Stream
STREAM_API_KEY=your_stream_api_key
STREAM_API_SECRET=your_stream_api_secret

# Inngest
INNGEST_API_KEY=your_inngest_api_key
INNGEST_SIGNING_KEY=your_inngest_signing_key

Frontend (frontend/.env)

VITE_CLERK_PUBLISHABLE_KEY=pk_test_...
VITE_BACKEND_URL=http://localhost:3000/api

πŸ“‘ API Endpoints

Authentication

All protected routes require a valid Clerk session token.

Session Routes (/api/session)

Method Endpoint Description Auth
POST / Create a new session βœ…
GET /active Get all active sessions βœ…
GET /my-recent Get current user's completed sessions βœ…
GET /:sessionId Get session by ID βœ…
POST /:sessionId/join Join a session as participant βœ…
POST /:sessionId/end End session (host only) βœ…

Chat Routes (/api/chat)

Method Endpoint Description Auth
GET /stream-token Get Stream chat token for current user βœ…

Inngest (/api/inngest)

Handles Clerk webhooks for user lifecycle events:

  • clerk/user.created β†’ Creates user in MongoDB + Stream
  • clerk/user.deleted β†’ Removes user from MongoDB + Stream

πŸ“š Available Problems

# Title Difficulty Category
1 Two Sum Easy Array, Hash Table
2 Reverse String Easy String, Two Pointers
3 Valid Palindrome Easy String, Two Pointers
4 Maximum Subarray Medium Array, Dynamic Programming
5 Container With Most Water Medium Array, Two Pointers

Each problem includes:

  • Problem description with examples and constraints
  • Starter code for JavaScript, Python, and Java
  • Expected output for automated test validation

πŸ”„ How It Works

1. User signs up via Clerk
        ↓
2. Clerk webhook fires β†’ Inngest syncs user to MongoDB + Stream
        ↓
3. Host creates a session (problem + difficulty)
        ↓
4. Stream video call + chat channel created automatically
        ↓
5. Participant joins via dashboard β†’ added to Stream channel
        ↓
6. Both users code in Monaco Editor, run code via JDoodle API
        ↓
7. Host ends session β†’ Stream call/chat deleted, session marked completed

πŸ“Έ Screenshots

πŸ–₯️ Dashboard

Dashboard

πŸŽ₯ Video Call

Video Call

πŸ’» Session / Code Editor

Session

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature/your-feature
  3. Commit your changes: git commit -m 'Add your feature'
  4. Push to the branch: git push origin feature/your-feature
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the ISC License.


Made with ❀️ by Shahnawaz Khan

About

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages