|
| 1 | +# Reed - 문장과 감정을 함께 담는 독서 기록 |
| 2 | + |
| 3 | +[](https://kotlinlang.org) |
| 4 | +[](https://gradle.org/) |
| 5 | +[](https://developer.android.com/studio) |
| 6 | +[](https://developer.android.com/distribute/best-practices/develop/target-sdk) |
| 7 | +[](https://developer.android.com/distribute/best-practices/develop/target-sdk) |
| 8 | + |
| 9 | +<br/> |
| 10 | +<img width="1024" height="500" alt="reed_graphic" src="https://github.com/user-attachments/assets/357cab12-db36-4de0-8fad-664abc5df8c8" /> |
| 11 | + |
| 12 | +<a href="https://play.google.com/store/apps/details?id=com.ninecraft.booket&hl=ko"> |
| 13 | + <img src="https://github.com/user-attachments/assets/8699ffd3-3399-45eb-9e2b-88818ba62091" width="200" /> |
| 14 | +</a> |
| 15 | + |
| 16 | +<p align="center"> |
| 17 | +<img src="https://github.com/user-attachments/assets/f31d5681-bbf0-4de4-93a6-37a2adf54df7" width="30%"/> |
| 18 | +<img src="https://github.com/user-attachments/assets/db92e159-091d-425b-8cc2-2324d4191463" width="30%"/> |
| 19 | +<img src="https://github.com/user-attachments/assets/5fd3f726-f493-4850-9d99-3933815dcd8b" width="30%"/> |
| 20 | +</p> |
| 21 | +<p align="center"> |
| 22 | +<img src="https://github.com/user-attachments/assets/bb7e3281-c7e4-453d-a921-cc4e9a051434" width="30%"/> |
| 23 | +<img src="https://github.com/user-attachments/assets/7c211781-58e5-4413-9f20-f92b1d0c8f24" width="30%"/> |
| 24 | +</p> |
| 25 | + |
| 26 | +## Features |
| 27 | +| 홈 | 도서 검색 및 등록 | 내서재 | |
| 28 | +|:---:|:---:|:---:| |
| 29 | +| <img width="230" alt="홈" src="https://github.com/user-attachments/assets/657e14e1-e578-4d7c-8c38-3591d61b1429" /> | <img width="230" alt="도서 검색 및 등록" src="https://github.com/user-attachments/assets/7a166abf-1160-4cdf-8ec5-f8071d7f0891" /> | <img width="230" alt="내서재" src="https://github.com/user-attachments/assets/d4679cd4-0188-4763-9adc-e210bef44ef0" /> | |
| 30 | + |
| 31 | +| OCR | 기록 등록 | 도서 & 기록 상세 | |
| 32 | +|:---:|:---:|:---:| |
| 33 | +| <img width="230" alt="OCR" src="https://github.com/user-attachments/assets/8861b7ea-a0f6-4e26-91be-c15450259752" /> | <img width="230" alt="기록 등록" src="https://github.com/user-attachments/assets/32774861-c9fa-439c-a889-ccbc842eb528" /> | <img width="230" alt="도서 & 기록 상세" src="https://github.com/user-attachments/assets/34304a37-7de1-4876-bd55-f041077b3266" /> | |
| 34 | + |
| 35 | +| 기록 카드 공유 | |
| 36 | +|:---:| |
| 37 | +| <img width="230" alt="기록 카드 공유" src="https://github.com/user-attachments/assets/4c01a5ed-e5a2-4be4-b950-96a457c87ad7" /> | |
| 38 | + |
| 39 | +## TroubleShooting |
| 40 | +- [[Compose] M3 ModalBottomSheet 드래그(터치 이벤트) 막는 법](https://velog.io/@mraz3068/Compose-M3-ModalBottomSheet-Drag-Disabled) |
| 41 | +- [Circuit 찍먹해보기(부제: Circuit 희망편)](https://speakerdeck.com/easyhooon/circuit-jjigmeoghaebogi-buje-circuit-hyimangpyeon) |
| 42 | +- [Circuit 찍먹해보기(부제: Circuit 절망편)](https://speakerdeck.com/easyhooon/circuit-jjigmeoghaebogi-buje-circuit-jeolmangpyeon) |
| 43 | +- [Jetpack Compose에서 CameraX + MLKit으로 OCR을 구현해보자](https://velog.io/@syoon513/Jetpack-Compose%EC%97%90%EC%84%9C-CameraX-MLKit%EC%9C%BC%EB%A1%9C-OCR%EC%9D%84-%EA%B5%AC%ED%98%84%ED%95%B4%EB%B3%B4%EC%9E%90) |
| 44 | +- [[Android] 일회성 이벤트를 StateFlow, Compose의 State로 처리할 때 주의해야할 점](https://velog.io/@mraz3068/Handle-One-Time-Event-As-State) |
| 45 | +- [Circuit Navigation 사용 시 feature 모듈간의 참조는 어떻게 해결했을까?](https://velog.io/@syoon513/Circuit-Navigation-%EC%82%AC%EC%9A%A9-%EC%8B%9C-feature-%EB%AA%A8%EB%93%88%EA%B0%84-%EC%88%9C%ED%99%98-%EC%B0%B8%EC%A1%B0%EB%8A%94-%EC%96%B4%EB%96%BB%EA%B2%8C-%ED%95%B4%EA%B2%B0%ED%96%88%EC%9D%84%EA%B9%8C) |
| 46 | +- [Coroutine 에러 처리 패턴: 여러 API 호출을 한 번에 성공/실패 판정하기](https://velog.io/@syoon513/Coroutine-%EC%98%88%EC%99%B8-%EC%B2%98%EB%A6%AC) |
| 47 | +- [[Circuit] ImpressionEffect](https://velog.io/@mraz3068/Circuit-ImpressionEffect) |
| 48 | +- [Coroutine CancellationException 따로 처리해야하는 케이스](https://velog.io/@mraz3068/Coroutine-CancellationException-UseCase) |
| 49 | + |
| 50 | +## Development |
| 51 | + |
| 52 | +### Required |
| 53 | + |
| 54 | +- IDE : Android Studio 최신 버전 |
| 55 | +- JDK : Java 17을 실행할 수 있는 JDK |
| 56 | + - (권장) Android Studio 설치 시 Embedded 된 JDK (Open JDK) |
| 57 | + - Java 17을 사용하는 JDK (Open JDK, AdoptOpenJDK, GraalVM) |
| 58 | +- Kotlin Language : 2.2.0 |
| 59 | + |
| 60 | +### Language |
| 61 | + |
| 62 | +- Kotlin |
| 63 | + |
| 64 | +### Libraries |
| 65 | + |
| 66 | +- AndroidX |
| 67 | + - Activity Compose |
| 68 | + - Core |
| 69 | + - DataStore |
| 70 | + - StartUp |
| 71 | + - Splash |
| 72 | + - CameraX |
| 73 | + |
| 74 | +- Kotlin Libraries (Coroutine, Serialization, Immutable Collection) |
| 75 | +- Compose |
| 76 | + - Material3 |
| 77 | + |
| 78 | +- [Circuit](https://github.com/slackhq/circuit) |
| 79 | +- ~~Google ML Kit~~ Google Cloud Vision |
| 80 | +- Dagger Hilt |
| 81 | +- Retrofit, OkHttp3 |
| 82 | +- Lottie-Compose |
| 83 | +- Firebase(Analytics, Crashlytics, Remote Config) |
| 84 | +- Kakao-Auth |
| 85 | +- [Logger](https://github.com/orhanobut/logger) |
| 86 | +- [Compose-Stable-Marker](https://github.com/skydoves/compose-stable-marker) |
| 87 | +- [Landscapist](https://github.com/skydoves/landscapist), Coil-Compose |
| 88 | +- [ComposeExtensions](https://github.com/taehwandev/ComposeExtensions) |
| 89 | +- [compose-effects](https://github.com/skydoves/compose-effects) |
| 90 | +- [compose-shadow](https://github.com/adamglin0/compose-shadow) |
| 91 | + |
| 92 | +#### Test & Code analysis |
| 93 | + |
| 94 | +- Ktlint |
| 95 | +- Detekt |
| 96 | + |
| 97 | +#### Gradle Dependency |
| 98 | + |
| 99 | +- Gradle Version Catalog |
| 100 | + |
| 101 | +## Architecture |
| 102 | +- Android App Architecture |
| 103 | +- MVI |
| 104 | + |
| 105 | +## Developers |
| 106 | + |
| 107 | +|Android|Android| |
| 108 | +|:---:|:---:| |
| 109 | +|[이지훈](https://github.com/easyhooon)|[이서윤](https://github.com/seoyoon513)| |
| 110 | +|<img width="144" src="https://github.com/user-attachments/assets/7e54768a-ce44-421d-8c03-9df7d0492855">|<img width="144" src="https://github.com/user-attachments/assets/a6cea688-cf9b-41ad-a3a0-9a0c11775fa2">| |
| 111 | + |
| 112 | +## Module |
| 113 | +<img width="1631" height="719" alt="image" src="https://github.com/user-attachments/assets/f6a26dcd-761a-4dab-ae3f-a32e87eb423b" /> |
| 114 | + |
| 115 | +## Package Structure |
| 116 | +``` |
| 117 | +├── app |
| 118 | +│ └── application |
| 119 | +├── build-logic |
| 120 | +├── core |
| 121 | +│ ├── common |
| 122 | +│ ├── data-api |
| 123 | +│ ├── data-impl |
| 124 | +│ ├── datastore-api |
| 125 | +│ ├── datastore-impl |
| 126 | +│ ├── designsystem |
| 127 | +│ ├── model |
| 128 | +│ ├── network |
| 129 | +│ ├── ocr |
| 130 | +│ └── ui |
| 131 | +├── feature |
| 132 | +│ ├── detail |
| 133 | +│ ├── edit |
| 134 | +│ ├── home |
| 135 | +│ ├── library |
| 136 | +│ ├── login |
| 137 | +│ ├── main |
| 138 | +│ ├── onboarding |
| 139 | +│ ├── record |
| 140 | +│ ├── screens |
| 141 | +│ ├── settings |
| 142 | +│ ├── splash |
| 143 | +│ └── webview |
| 144 | +├── gradle |
| 145 | + └── libs.versions.toml |
| 146 | +
|
| 147 | +``` |
| 148 | +<br/> |
0 commit comments