Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/sagehabitus/googlearch_bloc_remotemediator
https://github.com/sagehabitus/googlearch_bloc_remotemediator
android bloc clean-architecture flutter remotemediator riverpod sqlite
Last synced: 1 day ago
JSON representation
- Host: GitHub
- URL: https://github.com/sagehabitus/googlearch_bloc_remotemediator
- Owner: SageHabitus
- Created: 2024-09-14T14:44:10.000Z (19 days ago)
- Default Branch: master
- Last Pushed: 2024-09-26T04:52:26.000Z (8 days ago)
- Last Synced: 2024-10-02T14:42:01.989Z (1 day ago)
- Topics: android, bloc, clean-architecture, flutter, remotemediator, riverpod, sqlite
- Language: Dart
- Homepage:
- Size: 85 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### π GitHub μ¬μ©μ κ²μ λ° μ μ₯μ 리μ€νΈ μ± (Flutter with Clean Architecture and BLoC)
λ³Έ νλ‘μ νΈλ μ΅μ Flutter νλ μμν¬μ **Google Architecture** ν¨ν΄μ κΈ°λ°μΌλ‘ κ°λ°λ **GitHub μ¬μ©μ κ²μ λ° μ μ₯μ 리μ€νΈ** μ ν리μΌμ΄μ μ λλ€. **BLoC** λ° **Riverpod** μν κ΄λ¦¬ ν¨ν΄μ μ¬μ©νμ¬ μ¬μ©μ μΈν°νμ΄μ€μ λΉμ¦λμ€ λ‘μ§μ λΆλ¦¬νλ©°, λ‘컬 λ°μ΄ν° μΊμ±, νμ΄μ§ μ²λ¦¬, κ΄κ³ λ°°λ νμ λ± λ€μν κΈ°λ₯μ ꡬννμμ΅λλ€.
---
### **μ£Όμ κΈ°λ₯ β¨**
1. **GitHub μ¬μ©μ λͺ©λ‘ κ²μ λ° νμ π**
- GitHub APIλ₯Ό μ¬μ©νμ¬ μ€μκ°μΌλ‘ μ¬μ©μ λ°μ΄ν°λ₯Ό κ²μνκ³ , μλ°νμ μ¬μ©μλͺ μ 리μ€νΈλ‘ 보μ¬μ€λλ€.
- μ¬μ©μ 리μ€νΈλ **무ν μ€ν¬λ‘€**μ ν΅ν΄ λμ μΌλ‘ λ‘λλλ©°, GitHub APIμ νμ΄μ§λ€μ΄μ μ νμ©νμ¬ μ±λ₯ μ΅μ νλ₯Ό ꡬννμ΅λλ€.
- **κ΄κ³ λ°°λ**λ 10λ²μ§Έ, 20λ²μ§Έ, 30λ²μ§Έ νλͺ©λ§λ€ νμλλ©°, ν΄λ¦ μ νΉμ URLλ‘ μ΄λλ©λλ€.2. **μ¬μ©μ μ μ₯μ λͺ©λ‘ π**
- νΉμ μ¬μ©μμ GitHub μ μ₯μ λͺ©λ‘μ κ²μνμ¬ μ΄λ¦, μ€λͺ , λ³ μ, μ¬μ© μΈμ΄ λ±μ μ 보λ₯Ό μ 곡ν©λλ€.3. **νμ΄μ§ μ²λ¦¬ π**
- μ격 APIμμ λ°μ΄ν°λ₯Ό κ°μ Έμ¬ λ, νμ΄μ§ λ¨μλ‘ λ°μ΄ν°λ₯Ό λ‘λνλ©°, **무ν μ€ν¬λ‘€**μ ꡬννμμ΅λλ€. λ‘컬 μΊμ±κ³Ό ν¨κ» μ¬μ©λμ΄ API νΈμΆ μ΅μ ν λ° μ±λ₯ ν₯μμ λ¬μ±νμ΅λλ€.4. **λ‘컬 λ°μ΄ν° μΊμ± π **
- **SQLite**λ₯Ό μ¬μ©νμ¬ μ¬μ©μ μ 보μ κ΄κ³ λ°μ΄ν°λ₯Ό λ‘컬μ μΊμ±ν©λλ€. λ€νΈμν¬ μ°κ²°μ΄ λκΈ°λλΌλ, λ‘컬μ μ μ₯λ λ°μ΄ν°λ₯Ό μ΄μ©ν΄ μ¬μ©μ κ²½νμ μ μ§ν μ μμ΅λλ€.5. **μν κ΄λ¦¬ π§ **
- **BLoC** ν¨ν΄κ³Ό **Riverpod**λ₯Ό μ‘°ν©νμ¬ λ³΅μ‘ν μν κ΄λ¦¬ λ¬Έμ λ₯Ό ν΄κ²°νμ΅λλ€. μ¬μ©μ μ΄λ²€νΈ κΈ°λ° λ°μ΄ν° νλ¦ κ΄λ¦¬μ μ μ μν κ΄λ¦¬λ₯Ό λμμ μ²λ¦¬ν μ μλλ‘ μ€κ³λμμ΅λλ€.6. **ν μ€νΈ π§ͺ**
- **JUnit**, **Mockito**λ₯Ό μ¬μ©νμ¬ λΉμ¦λμ€ λ‘μ§, λ‘컬 λ° μ격 λ°μ΄ν° μμ€μ λν μ λ ν μ€νΈλ₯Ό μμ±νμ΅λλ€. μ£Όμ κΈ°λ₯μ λν ν μ€νΈλ₯Ό ν¬ν¨νμ¬ λμ μμ μ±μ 보μ₯ν©λλ€.---
### **κΈ°μ μ€ν π οΈ**
- **μΈμ΄**: Dart
- **νλ μμν¬**: Flutter
- **μν κ΄λ¦¬**: Riverpod, BLoC
- **λ‘컬 λ°μ΄ν°λ² μ΄μ€**: SQLite
- **λ€νΈμν¬ ν΅μ **: Dio
- **ν μ€νΈ**: JUnit, Mockito---
### **Google Architecture μ μ© π**
μ΄ νλ‘μ νΈλ **Clean Architecture** ν¨ν΄μ μ μ©νμ¬ κ°κ°μ μ± μ μμμ λΆλ¦¬νκ³ , μ μ§λ³΄μμ νμ₯μ±μ κ·Ήλννμ΅λλ€.
- **Data Layer**:
- **GithubLocalDataSource**: SQLiteλ₯Ό ν΅ν΄ λ‘컬 λ°μ΄ν°λ₯Ό κ΄λ¦¬ν©λλ€.
- **GithubRemoteDataSource**: GitHub APIμμ λ°μ΄ν°λ₯Ό λΆλ¬μ΅λλ€.- **Domain Layer**:
- **GithubRepositoryImpl**: λ°μ΄ν°λ₯Ό κ΄λ¦¬νκ³ Presentation Layerμ μ 곡ν©λλ€. μ격 λ°μ΄ν° μμ€μ λ‘컬 λ°μ΄ν° μμ€ κ°μ λκΈ°νλ₯Ό κ΄λ¦¬ν©λλ€.- **Presentation Layer**:
- BLoC ν¨ν΄κ³Ό ν¨κ» μν κ΄λ¦¬λ₯Ό μννλ©°, Flutter UIμμ λ°μ΄ν°λ₯Ό νμν©λλ€.---
### **νλ‘μ νΈ κ΅¬μ‘° ποΈ**
```
lib/
βββ data/
β βββ constants/
β βββ model/ # λ°μ΄ν° λͺ¨λΈ μ μ
β βββ repository/ # λ ν¬μ§ν 리 ꡬν
β βββ source/
β β βββ local/ # λ‘컬 λ°μ΄ν° μμ€ (SQLite)
β β βββ remote/ # μ격 λ°μ΄ν° μμ€ (GitHub API)
βββ presentation/
β βββ bloc/
β βββ screens/
β βββ widgets/
βββ main.dart # μ± μ§μ μ
```---
### **μν κ΄λ¦¬ ν¨ν΄ μ ν μ΄μ π―**
1. **BLoC ν¨ν΄**: μ΄λ²€νΈ κΈ°λ° λ°μ΄ν° νλ¦κ³Ό μν λ³κ²½μ μ²λ¦¬νκΈ°μ μ ν©ν ν¨ν΄μΌλ‘, μ¬μ©μ μ΄λ²€νΈμ λ°λ₯Έ λͺ νν μν λ³κ²½μ 보μ₯ν©λλ€.
2. **Riverpod**: μ μ μν κ΄λ¦¬μ νΈλ¦¬ν¨μ μ 곡νμ¬ λ³΅μ‘ν μν κ΄λ¦¬ λ¬Έμ λ₯Ό κ°λ¨νκ² ν΄κ²°ν μ μμ΅λλ€.
---
### **Mediator ν¨ν΄ λ° νμ΄μ§ μ²λ¦¬ κ°μ‘° π**
μ΄ νλ‘μ νΈλ **Paging Mediator ν¨ν΄**μ μ μ©νμ¬ λλμ λ°μ΄ν°λ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬ν©λλ€. μ΄λ₯Ό ν΅ν΄ μ격 APIμ λ‘컬 λ°μ΄ν° μμ€ κ°μ λκΈ°νλ₯Ό μ μ§νκ³ , λ€νΈμν¬ μ₯μ μμλ μ¬μ©μκ° μ±μ μννκ² μ¬μ©ν μ μλλ‘ μ€κ³λμμ΅λλ€. νμ΄μ§ μ²λ¦¬μ ν¨κ» λ°μ΄ν°λ₯Ό μΊμ±νμ¬ μ±λ₯μ μ΅μ ννκ³ , μ¬μ©μ κ²½νμ κ°μ νμ΅λλ€.
---
### **ν μ€νΈ μ λ΅ π§ͺ**
- **JUnit**κ³Ό **Mockito**λ₯Ό μ¬μ©νμ¬ μ λ ν μ€νΈλ₯Ό μμ±νμ΅λλ€.
- λ‘컬 λ° μ격 λ°μ΄ν° μμ€, λΉμ¦λμ€ λ‘μ§μ ν μ€νΈλ₯Ό ν΅ν΄ μ±μ μμ μ±μ 보μ₯ν©λλ€.