Skip to content

Commit 3523b79

Browse files
Update README.md
1 parent 61b7dba commit 3523b79

File tree

1 file changed

+220
-1
lines changed

1 file changed

+220
-1
lines changed

README.md

Lines changed: 220 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1,220 @@
1-
# 🚪 Next Room
1+
<div align="center">
2+
3+
# 🚪 넥스트룸 (NextRoom)
4+
5+
### 방탈출의 퀄리티를 한층 높여줄 힌트폰 앱
6+
7+
[![Platform](https://img.shields.io/badge/platform-Android-green.svg)](https://www.android.com)
8+
[![API](https://img.shields.io/badge/API-24%2B-brightgreen.svg?style=flat)](https://android-arsenal.com/api?level=24)
9+
[![Kotlin](https://img.shields.io/badge/Kotlin-1.9.10-blue.svg)](https://kotlinlang.org)
10+
[![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE)
11+
12+
[<img src="https://play.google.com/intl/en_us/badges/images/generic/ko_badge_web_generic.png" alt="Get it on Google Play" height="80">](https://play.google.com/store/apps/details?id=com.nextroom.nextroom&hl=ko)
13+
14+
<img width="700" height="700" alt="nextroom_banner" src="https://github.com/user-attachments/assets/530957f6-c2c5-446a-b734-df60705a3dc0" />
15+
16+
17+
</div>
18+
19+
---
20+
21+
## 📱 프로젝트 소개
22+
23+
**넥스트룸**은 방탈출 사장님들을 위한 힌트폰 관리 서비스입니다.
24+
25+
방탈출 게임 진행시 사용하는 앱을 제공하며, 웹에서 테마와 힌트를 한 번에 관리할 수 있습니다.
26+
27+
### 링크
28+
29+
- **플레이스토어**: [playstore](https://play.google.com/store/apps/details?id=com.nextroom.nextroom&hl=ko)
30+
- **웹사이트**: [nextroom.co.kr](https://nextroom.co.kr)
31+
- **인스타그램**: [@team_nextroom](https://www.instagram.com/team_nextroom/)
32+
- **사용 가이드**: [넥스트룸 사용 가이드](https://held-notebook-420.notion.site/134ed57b9c574733b31feab0ea5c36a5?pvs=4)
33+
34+
---
35+
36+
## ✨ 주요 기능
37+
38+
### 🎮 게임 관리
39+
- **실시간 타이머**: 방탈출 게임 진행 시간 추적 및 관리
40+
- **힌트 시스템**: 4자리 힌트 코드를 통한 체계적인 힌트 제공
41+
- **진행률 추적**: 문제 진행률 실시간 모니터링
42+
- **메모 기능**: 게임 중 필요한 메모를 그림으로 작성
43+
44+
### 🎨 커스터마이징
45+
- **타이머 배경 설정**: 테마별 포스터로 타이머 배경 커스텀
46+
- **이미지 조정**: 배경 이미지의 어두움과 위치 조정 가능
47+
- **테마별 분위기**: 각 테마의 독특한 분위기로 몰입감 향상
48+
49+
### 🔐 보안 기능
50+
- **앱 비밀번호**: 관리자만 게임을 시작할 수 있도록 보안 설정
51+
- **지문 인증**: 생체 인증을 통한 빠르고 안전한 접근
52+
53+
### 💳 구독 관리
54+
- **멤버십 시스템**: 월 구독 기반 서비스
55+
- **힌트 이미지**: 구독 시 힌트와 이미지를 함께 제공
56+
- **무제한 배경**: 구독자는 무제한 타이머 배경 등록 가능
57+
58+
---
59+
60+
## 📸 스크린샷
61+
62+
<div align="center">
63+
<img src="https://github.com/user-attachments/assets/7fc42dca-0d96-4f06-a7c0-87721fc2919f" width="200" />
64+
<img src="https://github.com/user-attachments/assets/f3021fbf-d319-4dd3-917e-b5520ea83a95" width="200" />
65+
<img src="https://github.com/user-attachments/assets/e6c8ac42-b74d-40be-900c-cd120993b060" width="200" />
66+
</div>
67+
68+
---
69+
70+
## 🏗️ 아키텍처
71+
72+
### Clean Architecture with Multi-Module
73+
74+
이 프로젝트는 **Clean Architecture** 원칙을 따르며, 5개의 모듈로 구성되어 있습니다.
75+
76+
```mermaid
77+
graph TD
78+
A[app] --> B[data]
79+
A[app] --> C[domain]
80+
A[app] --> D[presentation]
81+
A[app] --> E[commonutil]
82+
83+
B --> C
84+
B --> E
85+
86+
D --> C
87+
D --> E
88+
89+
style A fill:#e1f5ff
90+
style B fill:#fff4e1
91+
style C fill:#e8f5e9
92+
style D fill:#fce4ec
93+
style E fill:#f3e5f5
94+
```
95+
96+
---
97+
98+
## 🔄 CI/CD
99+
100+
### GitHub Actions
101+
102+
**앱 배포와 알림 프로세스** 구축
103+
- Feature 브랜치: Lint → Debug APK 빌드 → Firebase App Distribution → Slack 알림
104+
- Release 브랜치: Lint → Release AAB 빌드 → Play Store 배포 (내부 테스트, 초안)
105+
106+
**자동으로 코드를 작성하고 검수**까지 완료하는 프로세스 구축
107+
- 깃허브 이슈 등록 → Gemini API를 활용하여 자동으로 코드 작성 → PR push → Gemini로 코드 검수하여 리뷰 코멘트 작성
108+
109+
---
110+
111+
## 🛠️ 기술 스택
112+
113+
### Language & Platform
114+
- **Kotlin** `1.9.10` - 100% Kotlin으로 작성
115+
- **JVM Target** `17`
116+
- **Min SDK** `24` (Android 7.0)
117+
118+
### Architecture & Design Pattern
119+
- **Clean Architecture** - 계층 분리 및 의존성 규칙
120+
- **Multi-Module** - 기능별 모듈 분리
121+
- **MVI Pattern** - Orbit MVI를 활용한 단방향 데이터 흐름
122+
123+
### Jetpack & AndroidX
124+
- **Navigation Component** `2.7.4` - 화면 전환 및 SafeArgs
125+
- **Room** `2.5.2` - 로컬 데이터베이스 (KSP 적용)
126+
- **DataStore** - 사용자 설정 저장
127+
- **View Binding** - 타입 안전한 뷰 바인딩
128+
129+
### Dependency Injection
130+
- **Hilt** `2.48` - 의존성 주입 (KAPT 사용)
131+
132+
### Networking
133+
- **Retrofit** `2.9.0` - REST API 통신
134+
135+
### Asynchronous
136+
- **Coroutines** `1.7.3` - 비동기 프로그래밍
137+
- **Flow** - 반응형 데이터 스트림
138+
139+
### State Management
140+
- **Orbit MVI** `6.0.0` - 상태 관리 및 사이드 이펙트 처리
141+
142+
### Firebase
143+
- **Firebase BOM** `32.3.1`
144+
- Analytics - 사용자 행동 분석
145+
- Crashlytics - 크래시 리포팅
146+
- Remote Config - 원격 설정
147+
148+
### Billing & Authentication
149+
- **Play Billing** `8.0.0` - 인앱 결제
150+
- **Google Identity** - 구글 로그인
151+
152+
### Debugging (Debug Only)
153+
- **Flipper** `0.200.0` - 네트워크, DB 디버깅
154+
- **LeakCanary** `2.14` - 메모리 누수 감지
155+
- **Timber** `5.0.1` - 로깅
156+
157+
---
158+
159+
## 📚 주요 개발 패턴
160+
161+
### State Management (Orbit MVI)
162+
163+
ViewModel에서 `BaseViewModel<STATE, SIDE_EFFECT>`를 상속:
164+
165+
```kotlin
166+
@HiltViewModel
167+
class ExampleViewModel @Inject constructor(
168+
private val repository: ExampleRepository
169+
) : BaseViewModel<ExampleState, ExampleEvent>() {
170+
171+
override val container: Container<ExampleState, ExampleEvent> =
172+
container(ExampleState())
173+
174+
fun loadData() = intent {
175+
repository.getData()
176+
.onSuccess { data ->
177+
reduce { state.copy(data = data) }
178+
}
179+
.onFailure { error ->
180+
postSideEffect(ExampleEvent.ShowError(error))
181+
}
182+
}
183+
}
184+
```
185+
186+
---
187+
188+
## 📄 라이선스
189+
190+
```
191+
MIT License
192+
193+
Copyright (c) 2025 Next Room
194+
195+
Permission is hereby granted, free of charge, to any person obtaining a copy
196+
of this software and associated documentation files (the "Software"), to deal
197+
in the Software without restriction, including without limitation the rights
198+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
199+
copies of the Software, and to permit persons to whom the Software is
200+
furnished to do so, subject to the following conditions:
201+
202+
The above copyright notice and this permission notice shall be included in all
203+
copies or substantial portions of the Software.
204+
205+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
206+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
207+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
208+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
209+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
210+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
211+
SOFTWARE.
212+
```
213+
214+
<div align="center">
215+
216+
Made with ❤️ by Next Room Team
217+
218+
[⬆️ Back to top](#-넥스트룸-nextroom)
219+
220+
</div>

0 commit comments

Comments
 (0)