HomeAboutMeBlogGuest
© 2025 Sejin Cha. All rights reserved.
Built with Next.js, deployed on Vercel
🤎
프론트엔드 데브코스 5기 교육생
/
노아팀
노아팀
/
📝
프론트엔드 프로젝트 목표 및 규칙
📝

프론트엔드 프로젝트 목표 및 규칙

🏅 프로젝트 목표🤔 결정권자 & 담당🤙🏻 개발 규칙브랜치 전략prefix 목록이슈/PR 컨벤션디렉토리 구조 (추후 결정)개발 컨벤션프리티어 설정
 

🏅 프로젝트 목표

  • 챌린지보다는 완성도 높게
  • 신기술도전에 의해서 오버하지만 않았으면!!
  • 휘식님은 도전하는것도 조아~.~ 너무 죠아~~
  • 라이브러리 + 디자인 시스템 + tailwind (+ 각자 생각하는 페이지 모습을 피그잼or와이어프레임 도구에 기록은 해두자!)
  • 테스트 jest?
  • 애자일하게 진행하자
  • 버전관리를 진행하자! (기록으로 남기기!)

🤔 결정권자 & 담당

💪🏻
강점과 약점
PM
백윤서
디자인
박종운
기술 스택
문휘식
백엔드 협업
모유경
MC
안범
기록, 문서화
다같이

🤙🏻 개발 규칙

브랜치 전략

main ← dev ← [prefix]#이슈번호

prefix 목록

✨ vx.y.z : dev ⇒ main 브랜치용 (예: v0.1.0) 참고 링크1, 참고 링크2
init
프로젝트 생성 및 초기 설정
feat
새로운 기능 추가
style
디자인(css, 레이아웃)추가, 변경
fix
버그, 오류 수정 및 변경된 기능 수정
hotfix
급하게 치명적인 버그를 고쳐야하는 경우
refactor
기능의 변화가 아닌 코드 리팩터링 ex) 변수 이름 변경, 최적화, 가독성 개선, 중복 최소화, 컴포넌트 분리 등
cleanup
콘솔 로그 및 주석 삭제, 파일 삭제, 불필요한 함수 삭제, 코드 위치 변경
merge
pull 과정 중 현재 commit과 자동병합이 일어날때 필수적으로 적어줘야하는 commit에 적어줌
chore
패키지 매니저 업데이트, 빌드 관련 ex) .gitignore, package.json 관련
test
테스트 코드 추가, 수정
docs
README 수정

이슈/PR 컨벤션

  • 이슈 제목: [prefix] 작업내용 요약
// 이슈 컨벤션 깃허브에 저장할 컨벤션 # 📌 작업 내용 - task 1
  • PR 제목: 이슈 제목과 같음([prefix] 작업내용 요약)
// PR 컨벤션 # 📌 작업 내용 // 구현 내용 및 작업 했던 내역, 사진필요한 경우 선택적으로 첨부 - [x] 작업 내용 # 🚦 특이 사항 //주의깊게 봐야하는 PR 포인트 & 말하고 싶은 점
 

디렉토리 구조 (추후 결정)

  • eslint로 import 순서 설정 → 디렉토리 구조 설정할 때 같이 얘기!!
components hooks constants types utils
  • 컴포넌트 → 컴포넌트 이름.tsx
  • 타입 → 컴포넌트 이름.types.ts
  • 스타일 → 컴포넌트 이름.styles.ts
├── app │   └── _common │   ├── components │   ├── hooks │   ├── constants │   ├── types │   └── utils │   ├── api │   └── main │   ├── page.tsx │   ├── _component │   ├── _util │   ├── _type │   └── _api └── public

개발 컨벤션

  1. 줄임말은 쓰지않는걸로!
1. 함수 export 방식 선언 후 export
컴포넌트를 제외한 함수 선언 방식은 const 를 사용합니다.
🍞
vscode 단축키 tsrfce
function Component() { ... } export default Component;
  1. tsx를 반환한다면 확장자 이름을 .tsx를 사용합니다.
  1. ASI를 이용하지 않고 세미콜론을 필수적으로 써줍니다. (prettier로 관리).
  1. 리터럴 값은 상수로 만들어서 사용합니다. 상수는 스네이크 케이스(ex. BASE_URL)를 사용합니다.
  1. 변수명은 camelCase로 작성합니다.
  1. .tsx 파일의 파일(폴더)명은 PascalCase를 사용합니다. ex) LoginPage.tsx.
  1. alias를 이용해서 파일 절대 경로로 import, export 사용합니다. src: @, test: #
  1. export 할때 barrel export 방식을 사용하지 않습니다.
  1. 타입을 분리할 경우(여러 곳에서 타입이 생성될 경우(2군데 이상)) types 디렉토리에 관리한다.
  1. 최대한 코드에 대한 설명 주석은 적지 않습니다. 이름만 읽어도 무슨 일을 하는 함수인지 알 수 있어야합니다.
11. 이벤트 핸들러를 정의할때 handle + 메서드명로 정의합니다.
on 접두사가 붙은 경우, 이 Prop에 실제 이벤트가 연결되어 있다는 걸 뜻하고,
handle 접두사가 붙은 경우, 이벤트가 발생했을 때 호출되는 실제 Function을 의미합니다.
function DateTypeToggleButton ({ onClick }) { return <button onClick={onClick} /> } function ModalButton ({ onClick }) { return <button onClick={onClick} /> } function Calendar () { const handleClickDateType = () => {} const handleModalOpen = () => {} /* 주의!! 컴포넌트의 props로 핸들러를 넘길때도 handle 접두사를 사용해야 합니다. */ return ( <> <DateTypeToggleButton onClick={handleClickDateType} /> <ModalButton onClick={handleModalOpen} /> </> ) }
12. 컴포넌트 props 지정 방식
interface CommentListItemProps{...} const CommentListItem = (props: CommentListItemProps) => { const { id, author, loginId, createdAt, comment, isMyComment } = props; }
 
((논의 사항))
  1. image, svg는 카멜 사용하여 네이밍합니다.(ex. eraseCheck.svg). - 확인 후 결정

프리티어 설정

module.exports = { printWidth: 80, // 한 줄 최대 문자 수 tabWidth: 2, // 들여쓰기 시, 탭 너비 (js 표준인 2 indent를 권장함) useTabs: false, // 스페이스 대신 탭 사용 semi: true, // 문장 끝 세미콜론 사용 singleQuote: false, // 작은 따옴표 사용 trailingComma: "all", // 꼬리 콤마 사용 bracketSpacing: true, // 중괄호 내에 공백 사용 arrowParens: "avoid", // 화살표 함수 단일 인자 시, 괄호 생략 proseWrap: "preserve", // 마크다운(ex.readme.md) 포매팅 제외 endOfLine: "auto", // 개행문자 유지 (혼합일 경우, 첫 줄 개행문자로 통일) jsxSingleQuote: false, // JSX에 single Quotation 사용 여부 plugins: ["prettier-plugin-tailwindcss"] // tailwindcss 정렬 };
Automatic Class Sorting with Prettier - Tailwind CSS
People have been talking about the best way to sort your utility classes in Tailwind projects for at least four years. Today we’re excited to announce that you can finally stop worrying about it with the release of our official Prettier plugin for Tailwind CSS.
Automatic Class Sorting with Prettier - Tailwind CSS
https://tailwindcss.com/blog/automatic-class-sorting-with-prettier
Automatic Class Sorting with Prettier - Tailwind CSS