Skip to content

silky-x0/session

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

183 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Session Logo

the coding room that thinks with you

Stop juggling tabs. Session gives interviewers and engineers a shared live IDE, AI-generated questions tuned to experience level, audio & video, and post-session analysis — all from a single link. No setup. No credit card.


Live Demo Build TypeScript React License




Session Landing Page Preview


Table of Contents


Features

Category What's Included
Real-Time Collaboration Live code sync via Yjs + Liveblocks, Monaco Editor (VS Code engine), multi-language support, live cursors & selections with user colors
AI Assistance AI-generated questions tuned to experience level, integrated AI chat panel, session bootstrap (problem + starter code), powered by OpenRouter (Kimi model)
Code Execution Docker-isolated execution for Python, JavaScript, C, C++ — shared output synced to all collaborators
Interview Mode Problem panel with difficulty, hints system, complexity display, solution reveal, post-session analysis
Audio & Video Built-in audio & video calls so interviewers and candidates share one room — no Zoom, no context switch
Premium UI/UX Deep Carbon & Neon Pulse design system, glassmorphism, JetBrains Mono, Framer Motion transitions, route-aware shutter animations
Presence Avatar stack, live cursors, sync status badge, connection loss toasts
Coming Soon Excalidraw whiteboard, follow-me cursor, execution queue

Tech Stack

Frontend

Technology Purpose
React 19 UI framework with concurrent features
TypeScript Type-safe development
Vite Build tool and dev server
Tailwind CSS v4 Utility-first styling
Liveblocks Real-time presence, CRDT sync, broadcast
Monaco Editor VS Code-grade editor
Yjs + y-monaco Conflict-free collaborative document
Framer Motion Animations and route transitions
React Router v7 Client-side routing

Backend

Technology Purpose
Node.js + Express HTTP server with layered routing
TypeScript Type-safe server code
Liveblocks Node SDK Server-side room seeding
OpenRouter SDK AI model access (Kimi, etc.)
Docker SDK Ephemeral code execution containers

Project Structure

session/
├── frontend/
│   └── src/
│       ├── components/
│       │   ├── editor/           # Monaco, TopBar, AIChat, OutputPanel,
│       │   │                     # LiveCursors, AvatarStack, ConnectionToast,
│       │   │                     # BroadcastProvider, NotificationsPanel...
│       │   ├── landing/          # Hero, SessionInput, SessionLoadingScreen,
│       │   │                     # Header, Marquee, EditorShowcase,
│       │   │                     # GeneratorSection, TypographyBreak,
│       │   │                     # FeatureGallery, CinematicFooter...
│       │   ├── ui/               # hero-shutter-text, weave-spinner, link-preview
│       │   ├── Editor.tsx        # RoomProvider + CollaborativeEditorInner
│       │   └── RouteTransition.tsx
│       ├── hooks/                # useRoomSettings
│       ├── utils/                # getContrastingColor, useBoundingClientRectRef
│       ├── liveblocks.config.ts  # Presence/Storage types
│       ├── App.tsx               # Routes + editorReady state
│       └── index.css             # Design tokens, global styles
│
├── backend/
│   └── src/
│       ├── config/               # env.ts, kimi2thinking.ts
│       ├── controllers/          # session, aichat, execute
│       ├── middleware/           # errorHandler, asyncHandler
│       ├── routes/               # ai.routes.ts, code.routes.ts
│       ├── services/             # session, liveblocks, aichat, execute, yjs
│       └── utils/                # languageMapper
│
├── docs/
│   ├── ARCHITECTURE.md           # System design, data flow diagrams
│   ├── CONTRIBUTING.md           # Workflow, code style, project-specific notes
│   ├── DEPLOYMENT.md             # Vercel + Render setup
│   └── ENV_VARS.md               # All environment variables reference
│
└── README.md

Getting Started

Prerequisites

  • Node.js v18+
  • npm
  • Docker (required for code execution feature)
  • A Liveblocks account (free) — get your keys at liveblocks.io
  • An OpenRouter API key — openrouter.ai

Installation

git clone https://github.com/silky-x0/session.git
cd session

# Backend
cd backend
npm install
cp .env.example .env    # then fill in your keys

# Frontend
cd ../frontend
npm install
cp .env.example .env    # then fill in your keys

# Pull Docker images for code execution
docker pull python:3.11-alpine
docker pull node:20-alpine
docker pull gcc:latest

Running Locally

# Terminal 1 — Backend (http://localhost:1234)
cd backend && npm run dev

# Terminal 2 — Frontend (http://localhost:5173)
cd frontend && npm run dev

Open http://localhost:5173, click "Start Session", share the URL — done.


Documentation

Doc Contents
docs/ARCHITECTURE.md System diagram, component tree, data flow, Yjs/Liveblocks internals, execution pipeline
docs/ENV_VARS.md Every environment variable for backend and frontend
docs/DEPLOYMENT.md Render + Vercel deployment instructions
docs/CONTRIBUTING.md PR workflow, code style, project-specific gotchas

License

MIT — see LICENSE.



Built with ♥ by the Session Contributors

WebsiteReport BugRequest Feature


⭐ Star this repo if you find it helpful!

About

Real-time Collaborative code editor with lots of feature for different modes.

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors