프로덕트
창업 회사
ROUND
동호회와 생활 체육 대회를 위한 서비스입니다. 대진표와 참가 신청, 경기 결과를 한곳에서 관리할 수 있도록 개발하고 있습니다.
256대진표 하나에 넣을 수 있는 최대 참가자 수
- 기간
- 2026.09 ~ 현재
- 소속
- Firstage
- 역할
- 기획, 개발, 운영 (1인)
- 핵심 기능
- 회원 가입 없이 대진표부터 만들어 볼 수 있습니다. 경기 결과를 수정할 때는 이후 경기에 미치는 영향도 함께 확인합니다.
- 작업과 결과
- 2 ~ 256명 규모의 싱글 엘리미네이션과 더블 엘리미네이션 대진표
- 중복 요청으로 경기 결과가 두 번 기록되지 않도록 처리
- 이미 치른 경기에 영향을 주는 정정은 검토 후 반영
- 정식 출시 전 프리뷰 버전(0.6.0) 공개
- 기술 스택
- Next.js
- NestJS
- PostgreSQL
- NATS
- React
- TypeScript
- React-Konva
- Cloudflare Workers
배경
배드민턴, 테니스, 탁구 같은 생활 체육 대회를 위한 서비스를 만들고 있습니다. 대학생과 동호인이 경기를 찾아 참가하고, 결과를 남기며 다음 도전을 이어 갈 수 있도록 하는 것이 목표입니다.
계정 없이 대진표를 만드는 Quick과 참가 신청부터 검토, 결과 기록까지 다루는 주최 대회 기능을 개발했습니다. 기획과 프론트엔드, 백엔드, 배포를 맡고 있습니다.
결정과 구현
- 대진표는 결정론 커널이 만듭니다. 2명부터 256명까지 싱글과 더블 엘리미네이션을 지원하고, 부전승에는 가짜 결과나 패자를 만들지 않습니다. 패자조로 내려가는 규칙에는 버전을 붙여 관리합니다.
- 결과 입력은 고유 ID와 기대 버전을 가진 명령으로만 받습니다. 같은 요청이 두 번 와도 한 번만 반영되고, 이미 끝난 다음 경기를 무효로 만드는 정정은 영향 목록을 검토한 뒤에만 기록에 덧붙입니다.
- Quick은 계정 없이 브라우저 안에서 동작합니다. 대진표 문서는 초기 참가자와 명령의 목록이라 언제 다시 계산해도 같은 결과가 나오고, JSON으로 내보내고 다시 들여올 수 있습니다.
- 대진표 캔버스는 데이터를 직접 바꾸지 않습니다. 키보드와 스크린 리더로 쓸 수 있는 같은 내용의 화면을 함께 둡니다.
- 대회마다 운영자, 기록원, 열람자, 재무, 부문 운영자 역할을 나누고, 공개 대진표 응답에서는 서버가 비공개 정보를 빼고 내보냅니다.
- 운영 DB를 마이그레이션하기 전에는 백업을 로컬에 복원해 기존 데이터가 그대로 보존되는지 먼저 확인합니다.
현재 상태
0.6.0 프리런치 프리뷰입니다. 검색 노출과 익명 대진표 공개는 아직 닫아 두었고, 참가비 결제와 정산, 모바일 앱, 경기 일정과 코트 배정은 아직 만들지 않았습니다.