산을 배경으로 한 한글 글꼴
📝 한줄 요약
앱의 개발 규칙을 정한 문서(DEV.md)가 있었는데, 나중에 급하게 붙인 화면 두 곳이 정확히 그 규칙을 어겼습니다. 규칙은 문서에 남겨두는 것만으로는 지켜지지 않고, 새 화면을 만들 때마다 대조해야 한다는 걸 배웠습니다.
Before: 규칙이 문서에만 있음
After: 규칙을 코드에 반영하는 과정을 추가
👥 이런 분께 추천
팀이 정한 개발 규칙을 어떻게 지킬 건지 고민하는 개발자
“문서를 써도 지켜지지 않는다”는 경험이 있는 분
규칙을 문서로 남기기만 해선 부족한 이유를 알고 싶은 분
급한 일정 속에서도 기존 규칙을 지키는 방법을 찾는 분
🙋 내 스펙 & 환경
항목
내용
직업
초과근무관리 앱 제작
코딩 경험
TypeScript, React, Next.js
현황
MVP 5개 화면 완성, 검수 및 규칙 적용 중
규칙 문서
DEV.md (개발 제약 20개 나열)
진행 방법
1. 개발 규칙이 있었습니다
처음 설계할 때 DEV.md 파일에 개발 제약을 정했습니다. 총 20개의 규칙인데, 그 중 우리가 마주친 것은:
규칙 1번: 화면은 전부 영어
배포된 앱이 한국 고객을 위한 것이지만, 사이트는 영어 기반입니다
이유: 시연 때 글로벌하게 보이게 하기 위함
규칙 4번: 브라우저 기본 날짜/시간 입력을 쓰지 않기
input type="date",input type="time"사용 금지이유: 이 입력들은 보는 사람의 브라우저 언어를 따라가서, 형식이 통일되지 않음
대신: 커스텀 DateField, TimeField 부품을 만들어 씀
규칙 20번: 모든 날짜 칸에 요일과 공휴일 배지를 붙이지 않기
날짜가 판단 재료가 되는 칸(미팅 날짜)에만 배지를 붙임
단순히 기록하는 칸(확인일)에는 배지를 안 붙임
이유: 정보 과부하를 피하고 칸의 목적을 명확히 하기 위함
이 규칙들은 파일에 이유까지 명시되어 있었습니다. 그런데 새 화면을 만들 때 정확히 이 두 규칙이 어겨졌습니다.
2. 첫 번째 위반: 로그인 화면이 한국어
배포 중에 보안상 이유로 로그인 문을 빠르게 붙여야 했습니다. (전체 앱을 누구나 볼 수 있으니 접근 제한이 필요했음)
그때 로그인 화면을 만들 때:
제목: “로그인” (영어가 아니라 한국어)
레이블: “아이디”, “비밀번호” (역시 한국어)
에러 메시지: “아이디 또는 비밀번호가 잘못됐습니다” (한국어)
규칙 1번을 어겼습니다. 게다가 배포된 사 이트에서 고객이 제일 먼저 보는 화면이 이것이었습니다.
왜 이런 일이 났나:
급한 일정에 다른 화면보다 먼저 다시 만들어야 했음
“로그인은 임시니까”라는 생각으로 규칙 확인을 건너뜀
코드로 보면:
// 로그인 페이지 (login/page.tsx)
<label className="block text-sm font-medium mb-1">아이디</label>
<label className="block text-sm font-medium mb-1">비밀번호</label>
{error && <div>{error}</div>} // 에러도 한국어3. 두 번째 위반: 수정 모달의 브라우저 기본 날짜
확인된 건의 확인일을 수정하는 모달을 만들 때도 같은 일이 일어났습니다.
확인일 칸이 이렇게 만들어졌습니다:
// RecordsList.tsx의 EditMeetingModal
<input
id="confirmedDate"
type="date" // 규칙 4번