Skip to content

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Notifications You must be signed in to change notification settings

SOPT-all/35-APPJAM-ANDROID-GONGBAEK

Repository files navigation

공강을 백으로 채우다, 공백 🧩

35기 AND SOPT 앱잼 : 공백
24.12.21 ~ ing


공강 시간을 특별하게 채울 수 있는 서비스 공백을 소개합니다.

우리는 공강이라는 공백 속에서 더 많은 연결과 경험을 발견하고,
이를 통해 더욱 의미 있고 즐거운 대학 생활을 만들어갈 수 있습니다.

공백이 당신의 공강 시간을 특별하게 채우는 친구가 되어드릴게요!



⭐️ Contributors

손민재 (Lead)
@SYAAINN
김대현
@wjdrjs00
송민서
@MinseoSONG
스플래시
나의채움
모임상세
모임방
온보딩
시간표
모임조회
모임등록
마이페이지

🧩 공백의 기능을 알아봅시다!

기능 설명 주요 특징
1️⃣ 온보딩 나의 정보를 입력하고 공강 시간을 채울 준비를 할 수 있는 공간 - 학교와 학과 등 간단한 정보를 입력
- 수업 시간표를 바탕으로 공강 시간표 확인
2️⃣ 채우기 나의 공강 시간에 열리는 모임을 확인할 수 있는 공간 - 카테고리 필터링
- 요일별 필터링 (추후 구현 예정)
- 일회성 / 다회성 모임 필터링 (추후 구현 예정)
- 원하는 모임 신청 가능
3️⃣ 모임 모집 나의 공강 시간에 하고 싶은 모임을 직접 등록할 수 있는 공간 - 주기 선택 (일회성 / 다회성)
- 날짜와 시간
- 카테고리 / 커버사진
- 장소 / 인원 / 소개글 입력 후 등록
4️⃣ 나의 채움 내가 참여하는 모임 현황을 한눈에 확인할 수 있는 공간 - 내가 모집한 모임: 진행 중 / 종료된 모임 구분 가능
- 내가 신청한 모임: 진행 중 / 종료된 모임 구분 가능
5️⃣ 스페이스 같은 모임을 신청한 멤버만 참여할 수 있는 공간 - 참여 멤버 정보 확인
- 대화를 통해 모임 준비
6️⃣ 모임 상세 모임에 대한 다양한 정보를 확인하고 신청할 수 있는 공간 - 댓글 작성 및 조회
- 모임 신청 및 취소
- 등록자 프로필 조회
- 모임 시간, 날짜, 장소 등 모임 정보 조회
⭐️등록자: 멤버 관리 가능
⭐️참여자: 등록자와 대화 후 모임 신청 가능

📸 ScreenShot

온보딩

스플래시 온보딩 회원가입


채우기

채우기 모임 모집하기 모임 신청하기

나의 채움

나의 채움 모임 상세 스페이스



📗 Convention

📕 Code , Package , Git , GitHub Convention

1️⃣ Code Convention

Item Naming Rule Example Reason
Class Pascal Case TestActivity.kt 클래스, 인스턴스를 명확히 구분하기 위해 (Kotlin Code Convention)
Interface Pascal Case TestInterface.kt 클래스와 일관된 네이밍 규칙을 유지하기 위해 (Kotlin Code Convention)
Function lower Camel Case getTest() 일관성과 가독성을 높이기 위해 (Kotlin Code Convention)
Variable lower Camel Case var = userPwd Kotlin Code Convention
Value lower Camel Case val = userPwd Kotlin Code Convention
const val UPPER SNAKE CASE NICKNAME_PATTERN 변경 불가능한 값을 쉽게 식별하기 위해
XML File snake case activity_test.xml 어떤 일을 하는 View인지 구분하기 위해
XML ID snake case btn_submit -
Drawable File Name snake case <WHERE>_<DESCRIPTION>_<SIZE> 일관성을 유지하기 위해
colors.xml snake case <WHERE>_<DESCRIPTION> 일관된 ID 사용 권장
strings.xml snake case <WHERE>_<DESCRIPTION> 일관된 ID 사용 권장
styles.xml snake case <WHERE>_<DESCRIPTION> 일관된 ID 사용 권장

2️⃣ Package Convention

📂 com.sopt.gongbaek
┣ 📂 data
┃ ┣ 📂 local
┃ ┃ ┣ 📂 datasource
┃ ┃ ┣ 📂 datasourceimpl 
┃ ┣ 📂 mapper
┃ ┃ ┣ 📂 todata
┃ ┃ ┣ 📂 todomain
┃ ┣ 📂 remote
┃ ┃ ┣ 📂 datasource
┃ ┃ ┣ 📂 datasourceimpl
┃ ┃ ┣ 📂 dto
┃ ┃ ┃ ┣ 📂 base
┃ ┃ ┃ ┣ 📂 request
┃ ┃ ┃ ┣ 📂 response
┃ ┃ ┣ 📂 service
┃ ┃ ┣ 📂 util
┃ ┣ 📂 repositoryimpl
┣ 📂 di
┣ 📂 domain
┃ ┣ 📂 model
┃ ┣ 📂 repository
┃ ┣ 📂 type
┃ ┣ 📂 usecase
┣ 📂 presentation
┃ ┣ 📂 model
┃ ┣ 📂 type
┃ ┣ 📂 ui
┃ ┃ ┣ 📂 auth
┃ ┃ ┣ 📂 component
┃ ┃ ┣ 📂 groupdetail
┃ ┃ ┣ 📂 grouplist
┃ ┃ ┣ 📂 groupregister
┃ ┃ ┣ 📂 grouproom
┃ ┃ ┣ 📂 home
┃ ┃ ┣ 📂 main
┃ ┃ ┣ 📂 mygroup
┃ ┃ ┣ 📂 onboarding 
┃ ┃ ┣ 📂 splash 
┃ ┣ 📂 util
┣ 📂 ui.theme

⚒️ Tech Stacks

🗂️ More About Tech Stacks

항목 세부 내용
Development Tools Android Studio
Android Studio Version LadyBug
Kotlin Version 2.0.0
Category Details
Languages Kotlin
UI Framework Jetpack Compose
Architecture Single Activity Architecture
Navigation Jetpack Navigation
Module Type Single Module
State Management (MVI)
선정 이유
  • 단방향 데이터 흐름으로 상태 관리 용이: MVI 패턴은 단방향 데이터 흐름을 통해 View와 State 간의 일관성을 유지하기 때문에 상태 관리와 디버깅에 효과적.
  • 명확한 UI 상태 표현: View 상태를 명확히 정의하고 Intent로 사용자 입력을 처리하므로 UI 동작을 예측 가능하고 테스트 가능하게 만들어줌.
Asynchronous Coroutine, Flow
Design Pattern
Repository Pattern 선정 이유
  • 데이터 소스 추상화: 네트워크 및 로컬 데이터베이스와 같은 다양한 데이터 소스를 Repository를 통해 통합적으로 관리할 수 있어 데이터 액세스 로직의 분리가 가능함.
  • 유지보수와 확장성 향상: 데이터 변경 및 확장 시 변경 사항을 Repository에 국한시켜 코드 유지보수성과 확장성을 높일 수 있음.
Dependency Injection
Dagger-Hilt 선정 이유
  • 통일된 DI(의존성 주입) 방식 제공: 일관된 DI 패턴을 제공해 팀 내 협업 간 가독성을 향상시킴.
  • Android 환경에 최적화: Android 컴포넌트에 주입을 위한 어노테이션 제공.
Architecture Type
Clean Architecture 선정 이유
  • 명확한 비즈니스 규칙 분리(도메인 분리): 동일한 비즈니스 규칙을 기반으로 다양한 플랫폼(server, ios)에서 개발되는 환경에 적합.
  • 변경에 유연한 대처 가능: 계층 간 의존성을 직접 연결하지 않고 추상체를 통해 느슨하게 결합하여 변경 사항에 유연한 대처 가능.
UI Design Material3
Networking Retrofit, OkHttp
Build Tools Gradle Version Catalog

About

ㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤㅤ

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages