Github
https://github.com/raphy0316/basketball-form-analyzer
Intro
Built a real-time collaborative whiteboard and video conferencing tool for logo outsourcing and design teamwork.
- Enabled multiple users to draw simultaneously on a shared canvas, supporting creativity and remote collaboration.
- Integrated real-time video chat alongside the whiteboard, allowing designers and clients to communicate without context switching.
- Designed the backend with a hybrid architecture:
- Spring Boot → authentication, user/session management, persistent data
- Node.js (Socket.IO) → low-latency real-time drawing and event streaming
- Optimized performance by separating structured processing from streaming workloads, ensuring scalability under heavy concurrent use.
Tech Stack
- Languages: Java, TypeScript, JavaScript
- Main/Auth Server (structured services):
- Spring Boot (Java) – core backend
- Spring Security + JWT – authentication & access control
- MongoDB – project/design data persistence
- Redis – caching & session store
- Docker + Nginx – containerized deployment & reverse proxy
- Real-Time Collaboration Server (real-time services):
- Node.js (TypeScript) – event-driven server for real-time workloads
- Socket.IO – whiteboard drawing sync, low-latency event streaming
- Mediasoup (WebRTC SFU) – scalable video/audio conferencing
- Frontend: React – collaborative whiteboard UI + integrated video conferencing
Key Contribution
- Architected a dual-server architecture separating structured workloads (Spring Boot API server) from real-time workloads (Node.js + Socket.IO streaming server).
- Implemented an email-based authentication system using Gmail SMTP and Spring Security + JWT, enabling secure user sign-up and login.
- Designed and developed RESTful APIs in Spring Boot for project/session management, user handling, and collaboration features.
- Engineered the real-time streaming server with Node.js, Socket.IO, and Mediasoup, supporting multi-user whiteboard synchronization and low-latency video/audio conferencing.
Problem & Solution