본문으로 건너뛰기
진수웹JINSOOWEB

택티컬 다이어리

일정을 열고 참가자를 모으는 데서 끝나지 않고, 게임 당일 진행자가 세트와 승패를 실시간으로 기록합니다. 앱과 웹이 같은 계정, 같은 기록을 씁니다.

분류
앱 · 웹
기간
2026.03 – 운영 중
맡은 범위
기획 · 설계 · 개발 · 배포 · 운영
형태
모바일 앱 · 웹 · 관리 콘솔
택티컬 다이어리 전술보드 화면. 지난 일정 목록과 참가 인원이 보인다
운영 중인 화면을 캡처했습니다. 상호와 로고, 사람 이름은 가렸습니다.

어떤 문제였나

게임 일정 모집과 참가 신청, 당일 진행 기록이 서로 다른 곳에서 따로 이뤄졌습니다.

여러 사람이 같은 게임을 동시에 보고 입력하는 서비스라, 시간과 결과가 사람마다 다르게 보이면 안 됐습니다.

어떻게 풀었나

  1. 지역·유형별 일정서울·경기, 강원·충청처럼 지역과 자체전·교류전·오픈게임 같은 유형으로 일정을 고르고, 참가자나 관전자로 들어갑니다.
  2. 진행자만 쥐는 진행 권한일정 시작·종료, 세트, 결과 입력은 진행자만 합니다. 피드 메시지는 진행자·참가자·관전자 누구나 씁니다.
  3. 서버가 정하는 시간모든 화면의 시간 기준을 서버 하나로 두고, 방마다 잠금을 걸어 동시에 들어온 입력이 엉키지 않게 했습니다.
  4. 웹과 앱을 같은 계정으로Flutter 앱과 React 웹이 같은 API와 실시간 연결을 써서 어디서 열어도 같은 기록이 보입니다.

기술 스택

앱Flutter
웹React 18 · Vite · Zustand · socket.io-client
서버Node.js · Express · Socket.io · JWT
DBMySQL 8
배포Docker · Jenkins · Blue/Green · HAProxy

어디까지 왔나

  1. 2026.03개발 시작일정·방·세트 기록과 실시간 피드
  2. 2026.10새 관리 콘솔운영 화면을 새 콘솔로 옮기고 예전 화면은 따로 보관