Portfolio Project

Real-time sync.
ctrl+w

A secure web app for instantly sending text and files between your devices. Built to demonstrate production-ready engineering patterns for co-op interviews.

๐Ÿšง In Development โ€” Dec 2025
Hello from phone! ๐Ÿ“ฑ
Got it on laptop โœ“
Hello from phone! ๐Ÿ“ฑ
Got it on laptop โœ“

Why recruiters should care

This isn't just another CRUD app. ctrl+w demonstrates real engineering challenges that come up in production systems.

JWT Authentication

Access & refresh tokens with secure rotation, bcrypt hashing, and role-based access control.

Real-Time WebSockets

Bidirectional sync using Socket.io rooms. Handle disconnections, reconnections, and race conditions.

Session Lifecycle

6-digit pairing codes, auto-expiring sessions, and background cleanup jobs using cron.

Cloud File Storage

Cloudinary integration with 4MB limits, secure upload handling, and automatic cleanup.

Interview-Ready

Comes with system design docs, whiteboard diagrams, and 20+ technical Q&A for interviews.

Production Quality

Jest tests, ESLint, CI/CD with GitHub Actions, and Vercel deployment ready.

Built with modern tools

A carefully chosen stack that mirrors what companies actually use in production.

Node.js + Express
Backend API
MongoDB Atlas
Database
Socket.io
WebSockets
JWT
Authentication
Cloudinary
File Storage
bcrypt
Password Hashing
Vanilla JS
Frontend
Jest
Testing

Designed for deep understanding

Built line-by-line with Claude AI

This project was architected collaboratively with Claude (Anthropic's AI assistant) to ensure every design decision is intentional, well-documented, and interview-ready.

Every non-trivial piece of code includes explanations, diagrams, common pitfalls, and exercises โ€” turning this project into both a portfolio piece and a learning resource.

  • Teaching notes on every major file
  • Architecture reasoning for complex sections
  • Interview prep questions after each module
  • Common mistakes and how to avoid them
Designed with Claude AI
// Teaching Note: Why JWT over sessions?
// JWTs are stateless - no server memory
// needed. Perfect for distributed systems.

const token = jwt.sign(
  { userId, role },
  process.env.JWT_SECRET,
  { expiresIn: '15m' }
);

// Interview Q: Why 15 minutes?
// Short-lived tokens limit damage if leaked.

Skills demonstrated

Every feature maps to real interview questions and system design discussions.

01

System Design

Pairing codes, session lifecycle, real-time sync architecture, and scalability considerations.

02

Security Best Practices

JWT rotation, bcrypt, input validation, rate limiting, and secure file uploads.

03

Real-Time Communication

WebSocket handshakes, room management, handling disconnections, and state synchronization.

04

Database Design

MongoDB schemas, indexing strategies, TTL for auto-expiry, and efficient queries.

05

DevOps & CI/CD

GitHub Actions, environment management, Jest testing, and Vercel deployment.

06

Background Jobs

Cron scheduling, cleanup tasks, handling expired sessions, and file garbage collection.

Ready to explore the code?

Check out the GitHub repo for full source code, documentation, and interview prep materials.