| Category | Technology Stack |
|---|---|
| Architecture | |
| UI | |
| DI | |
| Network | |
| Local Storage | |
| Authentication | |
| Push Notification | |
| Navigation | |
| Async | |
| JSON | |
| Animation | |
| Build Tool | |
| Language | |
| Version Control |
├── README.md
├── .gitignore
├── build.gradle.kts
├── settings.gradle.kts
├── gradle.properties
├── local.properties
│
├── app/
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src/
│ ├── main/
│ │ ├── java/com/capston/
│ │ ├── res/
│ │ │ ├── drawable/
│ │ │ ├── font/
│ │ │ ├── layout/
│ │ │ ├── mipmap/
│ │ │ ├── values/
│ │ │ └── xml/
│ │ └── AndroidManifest.xml
│ ├── test/
│ └── androidTest/
│
├── data/
│ ├── build.gradle.kts
│ ├── proguard-rules.pro
│ └── src/
│ ├── main/
│ │ ├── java/com/capston/data/
│ │ │ ├── di/
│ │ │ ├── loading/
│ │ │ ├── local/
│ │ │ │ └── storage/
│ │ │ └── repository/
│ │ │ ├── remote/
│ │ │ │ ├── api/
│ │ │ │ ├── datasourcelmpl/
│ │ │ │ └── repositoryImpl/
│ │ │ └── local/
│ │ └── AndroidManifest.xml
│ ├── test/
│ └── androidTest/
│
├── domain/
│ ├── build.gradle.kts
│ └── src/
│ ├── main/
│ │ └── java/com/capston/domain/
│ │ ├── base/
│ │ ├── datasource/
│ │ ├── manager/
│ │ ├── model/
│ │ ├── repository/
│ │ ├── request/
│ │ ├── response/
│ │ │ ├── daily_schedule/
│ │ │ ├── enum_class/
│ │ │ ├── home/
│ │ │ ├── lecture/
│ │ │ ├── mypage/
│ │ │ ├── plan/
│ │ │ ├── recommend/
│ │ │ ├── study_group/
│ │ │ └── user/
│ │ └── usecase/
│ │ ├── daily_schedule/
│ │ ├── error/
│ │ ├── home/
│ │ ├── lecture/
│ │ ├── login/
│ │ ├── mypage/
│ │ ├── plan/
│ │ ├── recommend/
│ │ ├── study_group/
│ │ └── token/
│ └── test/
│
└── presentation/
├── build.gradle.kts
├── proguard-rules.pro
└── src/
├── main/
│ ├── java/com/capston/presentation/
│ │ ├── service/
│ │ ├── theme/
│ │ ├── ui/
│ │ │ ├── common/
│ │ │ ├── home/
│ │ │ ├── login/
│ │ │ ├── onboarding/
│ │ │ └── search/
│ │ └── viewmodel/
│ ├── res/
│ │ ├── drawable/
│ │ ├── font/
│ │ ├── layout/
│ │ ├── mipmap/
│ │ ├── values/
│ │ └── xml/
│ └── AndroidManifest.xml
├── test/
└── androidTest/
전희원 |
![]() 조은채 |
main- 배포용 브랜치 (프로덕션)release- 릴리즈 준비 브랜치develop- 개발 통합 브랜치feature/*- 기능 개발 브랜치
커밋 메시지는 다음 형식을 따릅니다:
TYPE(파일명) : 커밋 메시지
| 타입 | 설명 | 예시 |
|---|---|---|
INIT |
초기 프로젝트 생성 시 | INIT(ALL) : 프로젝트 초기 설정 |
FEAT |
새로운 기능 추가 | FEAT(MainActivity.kt) : 사용자 로그인 기능 추가 |
FIX |
버그, 오류 수정 | FIX(LoginActivity.kt) 로그인 시 에러 처리 수정 |
REFACTO |
전면 수정(코드 리펙토링) | REFACTO((LoginActivity.kt) : 사용자 인증 로직 리팩토링 |
CHORE |
코드 수정, 내부 파일 수정 | CHORE(DATA) : 패키지 의존성 업데이트 |
TEST |
테스트 코드 추가 및 수정 | TEST((LoginActivity.kt) 로그인 컴포넌트 테스트 추가 |
RENAME |
변수명, 파일명 수정 | RENAME(MainActivity.kt) : 컴포넌트 파일명 변경 |
- GitHub Issues에서 작업할 내용을 이슈로 등록
- 이슈 번호와 제목을 명확하게 작성
# develop 브랜치에서 새 브랜치 생성
git checkout develop
git pull origin develop
git checkout -b feature/issue-번호-기능명
# 개발 작업 수행
# 커밋 규칙에 따라 커밋
git add .
git commit -m "FEAT(MainActivity.kt) : 새로운 기능 구현"- 개발 완료 후 GitHub에서 PR 생성
feature/브랜치→develop브랜치로 PR- 이슈 번호를 PR 제목이나 설명에 포함
- 코드 리뷰 요청
- 코드 리뷰 완료 후 develop 브랜치에 merge
- 머지 후 feature 브랜치 삭제
- 커밋 메시지가 규칙에 맞게 작성되었는가?
- 코드가 정상적으로 동작하는가?
- 테스트 코드가 작성되었는가?
- 관련 이슈가 연결되어 있는가?
- 코드 리뷰가 완료되었는가?
- 충돌이 해결되었는가?
develop→release브랜치 생성- 릴리즈 테스트 및 버그 수정
release→main브랜치 머지- 버전 태그 생성 및 배포







