|
1 | | -<h1 align="center">Hilingual</h1> |
2 | | -<h3 align="center">AI 피드백으로 완성하는 나만의 영어 일기</h3> |
3 | | -<p align="center"> |
4 | | - <img src="https://img.shields.io/badge/Android-000000?style=for-the-badge&logo=android&logoColor=3DDC84&labelColor=000000&color=000000" /> |
5 | | - <img src="https://img.shields.io/badge/Compose_1.5.15-000000?style=for-the-badge&logo=jetpackcompose&logoColor=4285F4&labelColor=000000&color=000000" /> |
6 | | - <img src="https://img.shields.io/badge/Kotlin_2.2.0-000000?style=for-the-badge&logo=kotlin&logoColor=7F52FF&labelColor=000000&color=000000" /> |
7 | | -</p> |
8 | | - |
9 | | -<p align="center"> |
10 | | - <img src="https://github.com/user-attachments/assets/21a2dd30-5128-43b1-9436-d4d047231ada"> |
11 | | -</p> |
12 | | - |
13 | | -<br> |
14 | | - |
15 | | -**‘Hilingual’** 은 영어 일기 작성에 대한 AI 피드백을 통해 사용자가 꾸준히 영어를 학습하고 실력을 향상시킬 수 있도록 돕는 앱 서비스입니다. |
16 | | -Hilingual과 함께 영어 일기 습관을 만들고, 자연스러운 영어 표현을 익혀보세요! |
17 | | - |
18 | | -<br> |
19 | | - |
20 | | -## MAIN FUNCTION |
21 | | -<img width="1920" height="1080" alt="image" src="https://github.com/user-attachments/assets/b81f7111-bf2e-4171-9b26-d342cd390f5b" /> |
22 | | - |
23 | | -<br><br> |
24 | | - |
25 | | -| 1️⃣ 영어 일기 주제 제공 | 2️⃣ 영어 일기 작성 | |
26 | | -|:---:|:---:| |
27 | | -<img width="500" alt="image" src="https://github.com/user-attachments/assets/3788e7df-2434-4021-a8ef-8a1ac9620382" /> | <img width="500" alt="image" src="https://github.com/user-attachments/assets/48b4f69e-a8a9-407d-a943-341367347a44" /> |
28 | | -> <i>매일 제공되는 새로운 주제로 영어 일기를 작성해보세요. 생각이 나지 않는 단어나 문장은 한글로 써도 괜찮아요. 사진을 첨부하여 더욱 생생한 기록을 남길 수도 있습니다.</i></br> |
29 | | -
|
30 | | -<br> |
| 1 | +# Hi-lingual |
31 | 2 |
|
32 | | -| 3️⃣ 작성한 일기에 대한 AI 피드백 제공 | 4️⃣ 나만의 단어장으로 복습 | |
33 | | -|:---:|:---:| |
34 | | -<img width="500" alt="image" src="https://github.com/user-attachments/assets/ecb747c9-095d-46a2-90b3-aca5d570c210" /> | <img width="500" alt="image" src="https://github.com/user-attachments/assets/f3a952dd-8278-4335-9ae5-44e9df4644d7" /> |
35 | | -> <i> 작성한 일기에 대해 AI가 문법, 철자, 그리고 더 자연스러운 표현을 추천해줍니다. 내 영어 수준에 맞는 맞춤형 피드백으로 실력을 향상시켜 보세요. </i> |
| 3 | + |
| 4 | + |
| 5 | + |
36 | 6 |
|
37 | | -<br> |
| 7 | +**하이링구얼: 영어 일기, 기록** |
38 | 8 |
|
39 | | -## CONTRIBUTORS |
40 | | -| 🤴한민재<br/>[@angryPodo](https://github.com/angryPodo) | 🦔김나현<br/>[@nahy-512](https://github.com/nahy-512) | 😻김나현<br/>[@nhyeonii](https://github.com/nhyeonii) | |
41 | | -|:---:|:---:|:---:| |
42 | | -| <img src="https://github.com/user-attachments/assets/4a0a822a-f7ea-47c5-83ca-563ea3b90cc4" height="280" /> | <img src="https://github.com/user-attachments/assets/612c32be-c117-45a6-9392-958ff11de010" height="280" /> | <img src="https://github.com/user-attachments/assets/7af7e584-b763-407c-8628-bdccf731d8b7" height="280" /> | |
43 | | -| `스플래시`, `온보딩`<br/>`로그인`,`홈(캘린더)` | `일기 상세` | `단어장` | |
44 | | - |
45 | | -| 🐻문지영<br/>[@Daljyeong](https://github.com/Daljyeong) | 🎓박효빈<br/>[@Hyobeen-Park](https://github.com/Hyobeen-Park) | |
46 | | -|:---:|:---:| |
47 | | -| <img src="https://github.com/user-attachments/assets/fc497adb-66b1-4748-b864-7c5e2a18d82f" height="280" /> | <img src="https://github.com/user-attachments/assets/6bedede6-fd60-4514-90ad-7c596ce41fbb" height="280" /> | |
48 | | -| `일기 작성` | `멘토` | |
49 | | - |
50 | | -<br> |
| 9 | +<p align="center"> |
| 10 | + <img width="1024" height="500" alt="image" src="https://github.com/user-attachments/assets/75940f68-5748-4bcd-958a-925555c09c36" /> |
| 11 | +</p> |
51 | 12 |
|
| 13 | +> "영어를 부담스러운 공부가 아닌, 나를 표현하는 언어로 느낄 수 있도록" |
52 | 14 |
|
53 | | -## SCREENSHOTS |
54 | | -| 뷰 | 1 | 2 | |
55 | | -|:-------------:|:-----------------------------------------------------------------------------------------------------------:|:---------------------------------------------------------------------------------------------------------------------------:| |
56 | | -| 로그인 <br> 온보딩 | <img width="200px" src="https://github.com/user-attachments/assets/9af6fb8f-bf17-47d2-99ff-28983946f0c7"/> | <img width="200px" src="https://github.com/user-attachments/assets/2aa36354-9713-4e38-b6e8-06a58ab15531"/> | | | |
57 | | -| 캘린더 | <img width="200px" src="https://github.com/user-attachments/assets/39b0d2bd-d627-40ea-b91f-139db4974030"/> | <img width="200px" src="https://github.com/user-attachments/assets/3551dcb8-8104-424a-8c76-544ea033af61"/> | | |
58 | | -| 일기작성 <br> AI 피드백 | <img width="200px" src="https://github.com/user-attachments/assets/c69e0ffb-bbe5-4990-89c2-10aadc15bbd6"/> | <img width="200px" src="https://github.com/user-attachments/assets/661e474f-7314-486e-8e71-afcb649f6af6"/> | |
59 | | -| 일기, AI 피드백 확인 | <img width="200px" src ="https://github.com/user-attachments/assets/4c816af6-ee0c-49cf-9104-838d618e37c4"/> | <img width="200px" src="https://github.com/user-attachments/assets/67fff437-2dd8-4d45-8602-d1d2e1b18633"/> | |
60 | | -| 단어장 | <img width="200px" src="https://github.com/user-attachments/assets/24ce2255-4a6a-452b-a3d6-a990ea5de2b7"/> | <img width="200px" src="https://github.com/user-attachments/assets/5cd50d60-0dce-4012-a395-808bdd8e63e1"/> | |
| 15 | +하이링구얼은 일상 속 영어를 함께하는 일기 기록 서비스입니다. |
61 | 16 |
|
62 | | -<br> |
| 17 | +- 시간에 쫓겨 영어 공부를 미루셨던 분 |
| 18 | +- 교과서 영어가 아닌 실생활 영어를 배우고 싶었던 분 |
| 19 | +- 일상 기록에 동기부여를 바라는 분 |
63 | 20 |
|
| 21 | +모두, 하루를 기록하며 영어를 나의 것으로 만들어보세요 😊 |
64 | 22 |
|
65 | | -## ARCHITECTURE |
66 | | -Hilingual은 Google의 권장 아키텍처 가이드를 따르며, **MVVM (Model-View-ViewModel)** 패턴을 기반으로 설계되었습니다. 데이터의 흐름을 단방향으로 관리하여 예측 가능하고 유지보수하기 쉬운 구조를 지향합니다. |
| 23 | +## Download |
67 | 24 |
|
68 | | -**Presentation Layer ↔ Data Layer** |
| 25 | +<a href="https://play.google.com/store/apps/details?id=com.hilingual"> |
| 26 | + <img src="https://play.google.com/intl/en_us/badges/static/images/badges/en_badge_web_generic.png" height="80"/> |
| 27 | +</a> |
69 | 28 |
|
70 | | -- **Presentation Layer**: UI와 관련된 로직을 처리합니다. |
71 | | -- **Data Layer**: 데이터 소스(네트워크, 로컬 DB)를 관리하고, 비즈니스 로직을 처리합니다. (Repository, DataSource) |
| 29 | +## Tech Stack |
72 | 30 |
|
73 | | -<br> |
| 31 | +| Category | Stack | |
| 32 | +| --- | --- | |
| 33 | +| **Architecture** | Recommended App Architecture | |
| 34 | +| **UI** | Jetpack Compose | |
| 35 | +| **DI** | Dagger-Hilt | |
| 36 | +| **Asynchronous** | Kotlin Coroutine, Flow | |
| 37 | +| **Modularization** | Android App Modularization | |
| 38 | +| **Build Configuration** | Gradle Version Catalog, Custom Convention Plugins | |
74 | 39 |
|
| 40 | +## Module Dependency Graph |
75 | 41 |
|
76 | | -## FOLDER STRUCTURE |
| 42 | +### High-Level Architecture |
77 | 43 |
|
78 | | -``` |
79 | | -Hi-lingual |
80 | | -├── app/ // 앱 진입점 |
81 | | -├── build-logic/ // 빌드 로직 |
82 | | -├── core/ // 공통 레이어 |
83 | | -│ ├── common/ |
84 | | -│ ├── designsystem/ |
85 | | -│ ├── localstorage/ |
86 | | -│ ├── navigation/ |
87 | | -│ └── network/ |
88 | | -├── data/ // 데이터 레이어 |
89 | | -│ ├── auth/ // 인증 |
90 | | -│ ├── calendar/ // 캘린더 |
91 | | -│ ├── diary/ // 일기 |
92 | | -│ ├── user/ // 사용자 |
93 | | -│ └── voca/ // 단어장 |
94 | | -└── presentation/ // UI 레이어 |
95 | | - ├── auth/ // 인증 UI |
96 | | - ├── community/ // 커뮤니티 UI |
97 | | - ├── diaryfeedback/ // 일기 피드백 UI |
98 | | - ├── diarywrite/ // 일기 작성 UI |
99 | | - ├── home/ // 홈 UI |
100 | | - ├── main/ // 메인 UI |
101 | | - ├── mypage/ // 마이페이지 UI |
102 | | - ├── onboarding/ // 온보딩 UI |
103 | | - ├── splash/ // 스플래시 UI |
104 | | - └── voca/ // 단어장 UI |
| 44 | +```mermaid |
| 45 | +graph TD |
| 46 | + A[app] --> P[Presentation Layer] |
| 47 | + P --> D[Data Layer] |
| 48 | + D --> C[Core Layer] |
105 | 49 | ``` |
106 | 50 |
|
107 | | -## Module Dependency Graph |
108 | | - |
| 51 | +### Presentation Layer Dependencies |
| 52 | + |
| 53 | +> **presentation:main** 모듈은 아래 그래프의 모든 Presentation 모듈을 포함하며, |
| 54 | +> 모든 Presentation 모듈은 공통적으로 **core:ui**와 **core:navigation** 모듈에 의존합니다. |
| 55 | +
|
| 56 | +```mermaid |
| 57 | +graph TD |
| 58 | + subgraph Presentation Layer |
| 59 | + auth["auth"] |
| 60 | + diaryfeedback["diaryfeedback"] |
| 61 | + diarywrite["diarywrite"] |
| 62 | + feed["feed"] |
| 63 | + feeddiary["feeddiary"] |
| 64 | + feedprofile["feedprofile"] |
| 65 | + home["home"] |
| 66 | + mypage["mypage"] |
| 67 | + notification["notification"] |
| 68 | + onboarding["onboarding"] |
| 69 | + otp["otp"] |
| 70 | + splash["splash"] |
| 71 | + voca["voca"] |
| 72 | + end |
| 73 | +
|
| 74 | + subgraph Data Layer |
| 75 | + data_auth["data:auth"] |
| 76 | + data_calendar["data:calendar"] |
| 77 | + data_diary["data:diary"] |
| 78 | + data_feed["data:feed"] |
| 79 | + data_user["data:user"] |
| 80 | + data_voca["data:voca"] |
| 81 | + end |
| 82 | +
|
| 83 | + auth --> data_auth |
| 84 | + auth --> data_user |
| 85 | + diaryfeedback --> data_diary |
| 86 | + diarywrite --> data_calendar |
| 87 | + diarywrite --> data_diary |
| 88 | + feed --> data_feed |
| 89 | + feed --> data_diary |
| 90 | + feed --> data_user |
| 91 | + feeddiary --> data_diary |
| 92 | + feeddiary --> data_feed |
| 93 | + feeddiary --> data_user |
| 94 | + feedprofile --> data_feed |
| 95 | + feedprofile --> data_user |
| 96 | + feedprofile --> data_diary |
| 97 | + home --> data_user |
| 98 | + home --> data_diary |
| 99 | + home --> data_calendar |
| 100 | + mypage --> data_user |
| 101 | + mypage --> data_auth |
| 102 | + notification --> data_user |
| 103 | + onboarding --> data_user |
| 104 | + otp --> data_user |
| 105 | + otp --> data_auth |
| 106 | + splash --> data_auth |
| 107 | + splash --> data_user |
| 108 | + voca --> data_voca |
| 109 | + voca --> data_diary |
| 110 | +``` |
109 | 111 |
|
| 112 | +### Data Layer Dependencies |
| 113 | + |
| 114 | +```mermaid |
| 115 | +graph TD |
| 116 | + subgraph Data Layer |
| 117 | + auth["auth"] |
| 118 | + calendar["calendar"] |
| 119 | + diary["diary"] |
| 120 | + feed["feed"] |
| 121 | + presigned["presigned"] |
| 122 | + user["user"] |
| 123 | + voca["voca"] |
| 124 | + end |
| 125 | +
|
| 126 | + subgraph Core Layer |
| 127 | + core_network["core:network"] |
| 128 | + core_localstorage["core:localstorage"] |
| 129 | + core_common["core:common"] |
| 130 | + end |
| 131 | +
|
| 132 | + auth --> core_network |
| 133 | + auth --> core_localstorage |
| 134 | + auth --> core_common |
| 135 | +
|
| 136 | + calendar --> core_network |
| 137 | + calendar --> core_localstorage |
| 138 | + calendar --> core_common |
| 139 | +
|
| 140 | + diary --> presigned |
| 141 | + diary --> core_network |
| 142 | + diary --> core_localstorage |
| 143 | + diary --> core_common |
| 144 | +
|
| 145 | + feed --> core_network |
| 146 | + feed --> core_localstorage |
| 147 | + feed --> core_common |
| 148 | +
|
| 149 | + presigned --> core_network |
| 150 | + presigned --> core_localstorage |
| 151 | + presigned --> core_common |
| 152 | +
|
| 153 | + user --> presigned |
| 154 | + user --> core_network |
| 155 | + user --> core_localstorage |
| 156 | + user --> core_common |
| 157 | +
|
| 158 | + voca --> core_network |
| 159 | + voca --> core_localstorage |
| 160 | + voca --> core_common |
| 161 | +``` |
110 | 162 |
|
111 | | -## TECH STACK |
| 163 | +### Core Layer Dependencies |
| 164 | + |
| 165 | +```mermaid |
| 166 | +graph TD |
| 167 | + subgraph Core Layer |
| 168 | + ui["ui"] |
| 169 | + designsystem["designsystem"] |
| 170 | + network["network"] |
| 171 | + localstorage["localstorage"] |
| 172 | + common["common"] |
| 173 | + crypto["crypto"] |
| 174 | + navigation["navigation"] |
| 175 | + end |
| 176 | +
|
| 177 | + ui --> designsystem |
| 178 | + ui --> common |
| 179 | + designsystem --> common |
| 180 | + network --> localstorage |
| 181 | + network --> common |
| 182 | + localstorage --> crypto |
| 183 | +``` |
112 | 184 |
|
113 | | -| Category | Stack | |
114 | | -| :-------------- | :----------------------------------------------------- | |
115 | | -| **Architecture** | MVVM, Unidirectional Data Flow | |
116 | | -| **UI** | 100% Jetpack Compose | |
117 | | -| **DI** | Hilt | |
118 | | -| **Asynchronous** | Coroutine, Flow | |
119 | | -| **Navigation** | Jetpack Navigation Compose (Type-safe) | |
120 | | -| **Network** | Retrofit2, OkHttp3, Kotlinx Serialization | |
121 | | -| **Local DB** | Room, DataStore | |
122 | | -| **Image Loading**| Coil | |
123 | | -| **ETC** | Timber, Lottie, ML Kit, Google Identity Service, Balloon | |
| 185 | +## Contributors |
124 | 186 |
|
| 187 | +| 🤴한민재<br/>[@angryPodo](https://github.com/angryPodo) | 🦔김나현<br/>[@nahy-512](https://github.com/nahy-512) | 😻김나현<br/>[@nhyeonii](https://github.com/nhyeonii) | 🐻문지영<br/>[@Daljyeong](https://github.com/Daljyeong) | 🎓박효빈<br/>[@Hyobeen-Park](https://github.com/Hyobeen-Park) | |
| 188 | +| --- | --- | --- | --- | --- | |
| 189 | +| <img src="https://github.com/user-attachments/assets/4a0a822a-f7ea-47c5-83ca-563ea3b90cc4" height="280" /> | <img src="https://github.com/user-attachments/assets/612c32be-c117-45a6-9392-958ff11de010" height="280" /> | <img src="https://github.com/user-attachments/assets/7af7e584-b763-407c-8628-bdccf731d8b7" height="280" /> | <img src="https://github.com/user-attachments/assets/fc497adb-66b1-4748-b864-7c5e2a18d82f" height="280" /> | <img src="https://github.com/user-attachments/assets/6bedede6-fd60-4514-90ad-7c596ce41fbb" height="280" /> | |
| 190 | +| `스플래시` `온보딩`<br/>`로그인` `홈(캘린더)` | `일기 상세` | `단어장` | `일기 작성` | `멘토` | |
125 | 191 |
|
126 | | -## CONVENTION |
127 | | -> 프로젝트의 일관성과 효율적인 협업을 위해 아래 컨벤션을 준수합니다. |
| 192 | +--- |
128 | 193 |
|
129 | | -| 카테고리 | 문서 링크 | |
130 | | -|:---|:---| |
131 | | -| **기술 스택 컨벤션** | [Notion](https://seemly-cupcake-7b7.notion.site/216a178ee9bd8009b50ac5b8e8b285d7?source=copy_link) | |
132 | | -| **깃/브랜치 컨벤션** | [Notion](https://seemly-cupcake-7b7.notion.site/216a178ee9bd80f7a68defad28a7e071?source=copy_link) | |
133 | | -| **코드 컨벤션** | [Notion](https://seemly-cupcake-7b7.notion.site/216a178ee9bd80e4a706ce34866666f3?source=copy_link) | |
134 | | -| **패키지 컨벤션** | [Notion](https://seemly-cupcake-7b7.notion.site/216a178ee9bd80289994e9b31dae8274?source=copy_link) | |
| 194 | +<p align="center"> |
| 195 | + Made with by Hi-lingual Team |
| 196 | +</p> |
0 commit comments