Skip to content

Latest commit

 

History

History
311 lines (254 loc) · 10.8 KB

File metadata and controls

311 lines (254 loc) · 10.8 KB

🚀 WHY-LOG

스크린샷 2025-12-16 오후 4 51 39

WHY LOG: WHY를 기록하는 회고 서비스 Swift Xcode License



👥 멤버

나래 티모 벨라
사진1 사진2 사진3
FE FE FE
GitHub GitHub GitHub

📱 소개

2025년의 선택을 ‘결과’가 아닌 ‘이유’로 회고하여, 한 해 동안 형성된 나만의 판단 기준을 정리해주는 서비스


📆 프로젝트 기간

  • 전체 기간: 2025.12.12 - 2025.12.22
  • 개발 기간: 2025.12.16 - 2025.12.22

🤔 요구사항

For building and running the application you need:

iOS 26.0
Xcode 26
Swift 6.2


⚒️ 개발 환경

  • Front : SwiftUI
  • 버전 및 이슈 관리 : Github, Github Issues
  • 협업 툴 : Discord, Notion

🔎 기술 스택

Envrionment

Development

Communication


📱 화면 구성

1-1_로그인 시작 화면 2-1_홈 화면 2-3_WHY 한 줄 기록 화면

🔖 브랜치 컨벤션

🪵 브랜치 전략

  • main (master) : 출시 가능한 상태의 코드를 모아두는 브랜치 (직접 push ❌, PR로만 병합)
  • develop : 다음 버전을 위해 개발 중인 코드를 모으는 브랜치 (기본 베이스)
  • feature : 기능을 개발하는 브랜치 (develop에서 분기)
  • fix : 버그를 수정하는 브랜치

🌿 네이밍 규칙

{태그} / #{이슈번호}-{기능설명}

  1. 태그는 소문자로 작성합니다.
  2. 이슈번호는 Github Issues에 등록된 번호를 적습니다. (추적 용이)
  3. 기능설명은 짧은 영어 단어로, 띄어쓰기는 하이픈(-)으로 연결합니다.

✅ 사용 예시

  • feat/#13-login-ui (13번 이슈인 로그인 UI 구현)
  • fix/#20-token-error (20번 이슈인 토큰 에러 수정)
  • refactor/#5-api-structure (5번 이슈인 API 구조 개선)

이슈 컨벤션

양식 | [커밋유형] 이슈 내용 예시 | [FEAT] 사용자 로그인 API 구현


🌀 코딩 컨벤션

선언 네이밍

  1. 변수 & 상수

    • 카멜 케이스(camelCase) 사용
    • 의미 있고 설명적인 이름 사용
    • 너무 짧거나 모호한 이름 피하기
  2. 함수 & 메서드

    • 동사로 시작
    • 함수의 역할을 명확히 설명
  3. 클래스 & 구조체 & 열거형

    • 대문자로 시작 (PascalCase)
  4. 타입 추론

// Bad: 불필요한 타입 명시
let explicitDouble: Double = 70.0

// Good: 타입 추론 사용
let implicitDouble = 70.0 
  1. 오류 처리
enum NetworkError: Error {
    case badURL
    case noData
}

func fetchData(from urlString: String) throws -> Data {
    guard let url = URL(string: urlString) else {
        throw NetworkError.badURL
    }
    // ... (생략)
    throw NetworkError.noData
}

// 사용 예시
do {
    let data = try fetchData(from: "https://example.com")
    print("Data fetched successfully")
} catch NetworkError.badURL {
    print("Invalid URL")
} catch {
    print("Unknown error")
}

공백

  1. 들여쓰기는 tab 대신 띄어쓰기 4개로

  2. 연산자 주변 공백

// 좋은 예
let result = 1 + 2

// 나쁜 예
let result=1+2
  1. 중괄호는 엔터 없이 열기
// 좋은 예
func doSomething() {
    // ...
}

// 나쁜 예
func doSomething()
{
    // ...
}
  1. 콜론 뒤에만 공백을 둡니다.
let value: Int

📁 PR 컨벤션

  • PR 시, 템플릿이 등장한다. 해당 템플릿에서 작성해야할 부분은 아래와 같다
    1. PR 유형 작성, 어떤 변경 사항이 있었는지 [] 괄호 사이에 x를 입력하여 체크할 수 있도록 한다.
    2. 작업 내용 작성, 작업 내용에 대해 자세하게 작성을 한다.
    3. 추후 진행할 작업, PR 이후 작업할 내용에 대해 작성한다
    4. 리뷰 포인트, 본인 PR에서 꼭 확인해야 할 부분을 작성한다.
    5. PR 태그 종류, PR 제목의 태그는 아래 형식을 따른다.

🌟 태그 종류 (커밋 컨벤션과 동일)

  • Feat : 새로운 기능 추가
  • Fix : 버그 수정
  • Design : CSS, UI/UX 디자인 변경
  • !BREAKING CHANGE : 커다란 API 변경의 경우
  • !HOTFIX : 급하게 치명적인 버그를 고쳐야 하는 경우
  • Style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • Refactor : 코드 리팩토링 (기능 변경 없음, 코드 구조 개선)
  • Comment : 필요한 주석 추가 및 변경
  • Docs : 문서 수정
  • Test : 테스트 코드 추가, 테스트 리팩토링
  • Chore : 빌드 업무 수정, 패키지 매니저 수정, 프로젝트 세팅
  • Rename : 파일 혹은 폴더명을 수정하거나 옮기는 경우
  • Remove : 파일을 삭제하는 경우

✅ PR 예시 모음

🎉 [Chore] 프로젝트 초기 세팅
✨ [Feat] 프로필 화면 UI 구현
🐛 [Fix] iOS 17에서 버튼 클릭 오류 수정
💄 [Design] 로그인 화면 레이아웃 조정
📝 [Docs] README에 프로젝트 소개 추가


📑 커밋 컨벤션

💬 깃모지 가이드

아이콘 코드 설명 원문
🐛 bug 버그 수정 Fix a bug
sparkles 새 기능 Introduce new features
💄 lipstick UI/스타일 파일 추가/수정 Add or update the UI and style files
♻️ recycle 코드 리팩토링 Refactor code
heavy_plus_sign 의존성 추가 Add a dependency
🔀 twisted_rightwards_arrows 브랜치 합병 Merge branches
💡 bulb 주석 추가/수정 Add or update comments in source code
🔥 fire 코드/파일 삭제 Remove code or files
🚑 ambulance 긴급 수정 Critical hotfix
🎉 tada 프로젝트 시작 Begin a project
🔒 lock 보안 이슈 수정 Fix security issues
🔖 bookmark 릴리즈/버전 태그 Release / Version tags
📝 memo 문서 추가/수정 Add or update documentation
🔧 wrench 구성 파일 추가/삭제 Add or update configuration files.
⚡️ zap 성능 개선 Improve performance
🎨 art 코드 구조 개선 Improve structure / format of the code
📦 package 컴파일된 파일 추가/수정 Add or update compiled files
👽 alien 외부 API 변경 반영 Update code due to external API changes
🚚 truck 리소스 이동, 이름 변경 Move or rename resources
🙈 see_no_evil .gitignore 추가/수정 Add or update a .gitignore file

🏷️ 커밋 태그 가이드

  • Feat : 새로운 기능 추가
  • Fix : 버그 수정
  • Design : 사용자 UI 디자인 변경 (CSS 등)
  • !BREAKING CHANGE : 커다란 API 변경의 경우
  • !HOTFIX : 급하게 치명적인 버그를 고쳐야 하는 경우
  • Style : 코드 포맷팅, 세미콜론 누락, 코드 변경이 없는 경우
  • Refactor : 코드 리팩토링 (기능 변경 없음, 코드 구조 개선)
  • Comment : 필요한 주석 추가 및 변경
  • Docs : 문서 수정
  • Test : 테스트 코드 추가, 테스트 리팩토링
  • Chore : 빌드 업무 수정, 패키지 매니저 수정, 프로젝트 세팅
  • Rename : 파일 혹은 폴더명을 수정하거나 옮기는 경우
  • Remove : 파일을 삭제하는 경우

✅ 커밋 예시 모음

🎉 [Chore] 프로젝트 초기 세팅
✨ [Feat] 프로필 화면 UI 구현
🐛 [Fix] iOS 17에서 버튼 클릭 오류 수정
💄 [Design] 로그인 화면 레이아웃 조정
📝 [Docs] README에 프로젝트 소개 추가


🗂️ 폴더 컨벤션

MyProject/
├── App/          # 앱 진입점
├── Root/         # 앱 시작 흐름 및 화면
분기
├── Model/        # 데이터 모델 계층 (뷰모델&뷰)
│   ├── Entity/
│   ├── DTO/
│   └── Realm/
├── Module/       # 기능 단위 모듈
├── Service/      # 비즈니스 로직
├── Network/      # 네트워크 통신
├── Storage/      # 로컬 저장소
├── Component/    # 재사용 UI 컴포넌트
├── Resource/     # 앱 리소스
├── Config/       # 앱 환경 설정
├── Enum/         # 공통 Enum
└── Util/         # 공통 유틸리티

WHY-LOG-Frontend