01AI Team Building
DoDream
AI 기반 추천으로 사이드 프로젝트와 스터디 팀 빌딩을 돕는 플랫폼입니다. 채팅, 모집글 작성/수정, 마이페이지 기능을 담당했습니다.
- Next.js
- TypeScript
- WebSocket
- Zod
- React Hook Form
- useChat 커스텀 훅으로 실시간 통신 로직과 UI를 분리
- Zod 스키마로 모집글 폼 데이터 정합성과 타입 안정성 강화
복잡한 로직을 분리해 유지보수하기 쉬운 채팅 구조 만들기
문제
- 실시간 통신 로직이 UI 컴포넌트와 강하게 결합되어 코드 규모가 커지고 유지보수성이 떨어졌습니다.
- 실시간 스트림 데이터와 과거 대화 내역이 섞여 일관된 상태 업데이트가 어려웠습니다.
해결 과정
- useChat 커스텀 훅으로 소켓 통신과 이벤트 리스너를 추상화해 UI와 비즈니스 로직을 분리했습니다.
- 과거 대화 내역은 TanStack Query로 서버 상태를 동기화했습니다.
- 실시간 메시지는 로컬 상태에 즉시 반영하는 전략을 적용했습니다.
결과
- 채팅방 컴포넌트를 간결하게 유지하고 복잡한 상태 변화를 한곳에서 관리했습니다.
- 실시간 채팅 로직을 모듈화해 기능 확장 시 사이드 이펙트를 줄였습니다.
Zod 스키마를 활용한 런타임 데이터 정합성 보장
문제
- 기술 스택, 기간, 인원처럼 구조가 복잡한 모집글 폼에서 타입 불일치와 런타임 오류 위험이 있었습니다.
- 유효하지 않은 데이터가 서버로 전송되면 불필요한 API 비용과 서버 측 예외 처리 부담이 생겼습니다.
해결 과정
- Zod 스키마와 React Hook Form을 연동해 입력 단계부터 유효성을 제어했습니다.
- 필드 변경과 제출 시점에 클라이언트 검증을 실행해 유효한 데이터만 서버로 보냈습니다.
- Zod 스키마에서 TypeScript 타입을 추론해 전체 데이터 흐름의 정적 안정성을 높였습니다.
결과
- 데이터 정합성과 클라이언트·서버 간 교환 규칙을 명확히 해 타입 불일치로 인한 런타임 오류를 줄였습니다.
- 서버 요청 전 1차 필터링으로 네트워크 낭비를 막고 사용자에게 즉각적인 피드백을 제공했습니다.






