-
Notifications
You must be signed in to change notification settings - Fork 1
Home
CodeJam은 복잡한 설정 없이 클릭 한 번으로 바로 시작할 수 있는 실시간 협업 코딩 플랫폼입니다. 화면 공유의 한계를 넘어, 팀원들과 함께 코드를 직접 수정하고 실시간으로 커서를 따라가며 몰입감 있는 협업 경험을 제공합니다.
- Speed (빠름): 별도 설정 없이 접속 즉시 바로 사용할 수 있습니다.
- Lightweight (가벼움): 무거운 IDE 대신 필수 기능만 담아 빠른 로딩 속도를 실현했습니다.
- Real-time (실시간): 지연 없는 동기화로 원활한 실시간 협업이 가능합니다.
- 즉시 시작: 메인 화면에서 버튼 한 번만 클릭하면 고유한 방 URL이 자동으로 생성됩니다.
- 익명성 보장: 로그인 없이 일회성 세션으로 개인정보 노출 걱정 없이 협업할 수 있습니다.
- 동시 편집: Yjs(CRDT) 기술로 여러 사람이 동시에 편집해도 충돌 없이 자연스럽게 병합됩니다.
- 커서 추적 (Follow Mode): 팀원의 아바타를 클릭하면 해당 사용자의 화면과 커서 위치를 실시간으로 따라갈 수 있습니다.
- 권한 관리: 방장(Host), 편집자(Editor, 최대 6명), 관전자(Viewer)로 역할을 나누어 체계적인 협업이 가능합니다.
- 경량 에디터: CodeMirror 6 기반으로 모바일과 태블릿에서도 부드럽게 작동합니다.
- 데이터 관리: 편집 내역을 스냅샷으로 저장하여 이전 시점으로 되돌리거나 변경 내역을 확인할 수 있습니다.
- 자동 만료: 모든 세션은 24시간 후 자동 삭제되어 보안이 유지됩니다.
| 분류 | 기술 스택 |
|---|---|
| Frontend | React, TypeScript, CodeMirror 6, Zustand, Tailwind CSS |
| Backend | NestJS, PostgreSQL, TypeORM, Redis (Session/Cache) |
| Infra & DevOps | Monorepo (Turborepo), pnpm, NCP Cloud Functions |
| Real-time Sync | Yjs (CRDT), Socket.IO |
- Monorepo: 프론트엔드와 백엔드에서 타입을 공유하여 개발 생산성을 향상시켰습니다.
- Local-First Architecture: 네트워크가 불안정해도 로컬에서 편집이 가능하며, 연결되면 자동으로 동기화됩니다.
- Low Latency: 바이너리 데이터 전송과 Redis를 활용해 응답 지연을 최소화했습니다.
Team JAMstack
| J044 김선향 | J094 노주호 | J102 민인애 | J141 손혜준 | J143 송상화 |
|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
🏗️ 아키텍처 및 핵심 로직
📘 API 및 이벤트 명세
🚀 배포 및 인프라
👷🏻 기술적 도전 및 구현
핵심 아키텍처 및 동기화
Y.Doc 구조 정리
🔌 소켓 이벤트 흐름 정리 (v2)
WebSocket 인증 아키텍처 설계 및 구현 로직
Vercel Rewrites 도입을 통한 서드파티 쿠키 문제 해결 및 구조 개선
비트마스킹 기반 권한 시스템 구현
Y-CodeMirror 구조 및 IME 문제 해결 로직
서버 재시작 시 파일 복구 전략 (Redis + DB)
핵심 기능 및 방 관리
코드 실행 기능 동작 흐름
호스트 권한 탈취 설계 및 구현 로직
호스트 자동 양도 설계 및 구현 로직
방 폭파 기능 설계 및 구현 로직
만료된 방 삭제 스케줄러 설계 및 구현 로직
용량 제한 설계 및 구현 로직
채팅 시스템
채팅 및 시스템 메시지 구현 상세
파일 언급(@) 기능 구현 상세
채팅 마크다운 렌더링 구현 상세
채팅 박스 드래그 및 리사이즈 구현 과정
UI/UX 구현
TabContext 구현 및 TabLayout 컴포넌트
사이드바 UI 구조 개선 및 VS Code 스타일 적용
Avvvatars 로직 포팅 및 아바타 시스템 구현
CodeMirror 드래그 하이라이트 구현 로직
미래 과제 및 제안
실시간 동시 편집 시스템의 성능 및 확장성을 위한 구조 개선 아이디어
Redis Streams를 활용한 업데이트 동기화 방식 연구
📖 위키와 학습정리
🚧 트러블슈팅
📊 성능 테스트 및 모니터링
💡 아이디어 및 제안
🧸 팀원 소개
⛺️ 그라운드 룰
🍞 커밋 컨벤션
🥞 브랜치 전략
📑 회의록
1️⃣ 1주차
킥오프(12/08)
2일차(12/09)
3일차(12/10)
4일차(12/11)
5일차(12/12)
2️⃣ 2주차
6일차(12/15)
7일차(12/16)
8일차(12/17)
9일차(12/18)
10일차(12/19)
11일차(12/21) 시니어 리뷰어 피드백
⏸️ 인터미션
12일차(12/23)
3️⃣ 3주차
13일차(1/5)
14일차(1/6)
15일차(1/7)
16일차(1/8)
17일차(1/9)
4️⃣ 4주차
18일차(1/12)
19일차(1/13)
20일차(1/14)
21일차(1/15)
22일차(1/16)
5️⃣ 5주차
23일차(1/19)
24일차(1/20)
25일차(1/21)
26일차(1/22)
27일차(1/23)
6️⃣ 6주차
28일차(1/26)
29일차(1/27)
30일차(1/28)
31일차(1/29)
32일차(1/30)




