๋์ ์ต๊ด์ ๊ธฐ๋กํ๋ฉด ๋ชฌ์คํฐ๊ฐ ์๊ธฐ๋ ์ญ์ค์ ์๊ธฐ๊ณ๋ฐ ์ฑ
์ค๋๋ ๋งํจ์ "๋งํ ๊ฒ๋ ๊ธฐ๋ก์ด๋ค"๋ผ๋ ์ฒ ํ์ผ๋ก ์์๋ ์ต๊ด ์ถ์ ์ฑ์ ๋๋ค.
์๋ฒฝํ ์๊ธฐ๊ณ๋ฐ ์ฑ์ ์ง์น ๋น์ ์ ์ํด, ์คํจ์ ์ค์๋ฅผ ์ ์งํ๊ฒ ๊ธฐ๋กํ๋ฉด ๊ท์ฌ์ด(?) ๋ชฌ์คํฐ๋ฅผ ์์งํ ์ ์์ต๋๋ค. ๋ถ๋๋ฌ์ด ์ต๊ด๋ ์ธ์ ํ๋ ๊ฒ์ด ๋ณํ์ ์ฒซ๊ฑธ์์ ๋๋ค.
- ์ญ๋ฐ์ ๊ฒ์ด๋ฏธํผ์ผ์ด์ : ๋์ ์ต๊ด โ ๋ชฌ์คํฐ ํ๋ โ ์ปฌ๋ ์ ๋๊ธฐ๋ถ์ฌ
- ๋ฎ์ ์ง์ ์ฅ๋ฒฝ: "๊ด์ฐฎ์์ด์" ๋ฒํผ์ผ๋ก ๋ถ๋ด ์์ด ์ฒดํฌ์ธ
- ํฌ๊ท ๋ชฌ์คํฐ ์์คํ : ํน์ ์๊ฐ๋/์์ผ์๋ง ๋ฑ์ฅํ๋ ํ์ ๋ชฌ์คํฐ
- ๊ธ์ ์ ํผ๋๋ฐฑ: ๋ชฌ์คํฐ๊ฐ ๊ฒฉ๋ คํด์ฃผ๋ ๋ฐ๋ปํ ์ธ๊ณ๊ด
- ์งํ ์์คํ : ๊ฐ์ ์ค์๋ฅผ ๋ฐ๋ณตํ๋ฉด ๋ชฌ์คํฐ๊ฐ ์งํ
- ํฌ๊ท๋ ๋ฑ๊ธ: Common โ Rare โ Epic โ Legendary
- ์์ฑ ์์คํ : ์์ต๊ด, ์๋ฉด, ์ด๋, ์๋น, ์์ฐ์ฑ ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ชฌ์คํฐ
- ํ์ ๋ชฌ์คํฐ: ์๊ฐ๋/์์ผ ์กฐ๊ฑด๋ถ ๋ฑ์ฅ (์: ์ฌ์ผ ๋ฐฐ๋ฌ ๊ณ ๋ธ๋ฆฐ, ๊ธ์์ผ ํญ์ ๋๋๊ณค)
- ๋ฐ์ผ๋ฆฌ ์ฒดํฌ์ธ: ์ค๋ ์ด๋ ๋์ง ๊ฐ๋จํ ๊ธฐ๋ก
- ์นดํ ๊ณ ๋ฆฌ ์ ํ: 5๊ฐ์ง ์ฃผ์ ์ํ ์์ญ
- ์ฌ๊ฐ๋ ์ธก์ : 1~5๋จ๊ณ๋ก ์ค์์ ์ ๋ ํ์
- ๋ฉ๋ชจ ๊ธฐ๋ฅ: ์ํฉ๊ณผ ๊ฐ์ ๊ธฐ๋ก
- ์ฐ์ ๊ธฐ๋ก์ผ: ์ฑ ์ฌ์ฉ ์คํธ๋ฆญ (๋์ ์ต๊ด์ด ์๋ ๊ธฐ๋ก ์ต๊ด)
- ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ถ์: ์ด๋ค ์์ญ์์ ์์ฃผ ์ค์ํ๋์ง ์๊ฐํ
- ๋๊ฐ ์์ฑ๋: ์ ์ฒด ๋ชฌ์คํฐ ์ค ๋ณด์ ํํฉ
- ๋คํฌ ํ ๋ง: ๋์ ๋๋์ ๋ชฐ์ ๊ฐ ์๋ ๋์์ธ
- ๋ชฌ์คํฐ ์์์ง: ๋ฉ์ธ ํ๋ฉด์์ ๋ชฌ์คํฐ์ ์ํธ์์ฉ
- ์ค๋์ ํน๋ณ ๋ชฌ์คํฐ: ํ์ฌ ํ๋ ๊ฐ๋ฅํ ํฌ๊ท ๋ชฌ์คํฐ ํํธ
- Flutter 3.x: Cross-platform UI framework
- Riverpod: State management & Dependency Injection
- GoRouter: Declarative routing
- Freezed: Immutable data classes
- Firebase Authentication: Google ์์ ๋ก๊ทธ์ธ
- Cloud Firestore: NoSQL ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค
- Firebase Storage: ์ด๋ฏธ์ง ์ ์ฅ (ํฅํ)
- Cloud Functions: ์๋ฒ๋ฆฌ์ค ๋ฐฑ์๋ ๋ก์ง (ํฅํ)
- Clean Architecture: Domain/Data/Presentation ๋ ์ด์ด ๋ถ๋ฆฌ
- Repository Pattern: ๋ฐ์ดํฐ ์์ค ์ถ์ํ
- Entity-Model ๋ถ๋ฆฌ: ์์ ๋น์ฆ๋์ค ๋ก์ง๊ณผ Firebase ๊ตฌํ์ฒด ๋ถ๋ฆฌ
lib/
โโโ app/ # ์ฑ ์ค์ (๋ผ์ฐํ
, ํ
๋ง ๋ฑ)
โโโ core/ # ๊ณตํต ์ฝ๋
โ โโโ constants/ # ์์ (์์, ํ
์คํธ, ์ํ ๋ฐ์ดํฐ)
โ โโโ errors/ # ์๋ฌ ์ฒ๋ฆฌ
โโโ domain/ # ๋น์ฆ๋์ค ๋ก์ง (Firebase ๋
๋ฆฝ)
โ โโโ entities/ # ์์ ๋ฐ์ดํฐ ํด๋์ค
โ โโโ repositories/ # ์ถ์ ์ธํฐํ์ด์ค
โโโ data/ # ๋ฐ์ดํฐ ๋ ์ด์ด
โ โโโ models/ # DTO (JSON ์ง๋ ฌํ)
โ โโโ firebase/ # Firebase ๊ตฌํ์ฒด
โ โโโ local/ # Hive ๋ก์ปฌ ์บ์ (ํฅํ)
โโโ providers/ # Riverpod ์ํ ๊ด๋ฆฌ
โโโ presentation/ # UI ๋ ์ด์ด
โโโ screens/ # ํ๋ฉด๋ณ ํด๋
โโโ widgets/ # ๊ณตํต ์์ ฏ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Presentation (Widgets) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Providers (Riverpod State) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Domain (Entities + Interfaces) โ โ Firebase ๋
๋ฆฝ ๊ณ์ธต
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ Data (Firebase ๊ตฌํ์ฒด) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
์์กด์ฑ ๊ท์น: ์์ โ ํ์๋ง ์ฐธ์กฐ ๊ฐ๋ฅ (์ญ๋ฐฉํฅ ๊ธ์ง)
- Flutter SDK 3.x ์ด์
- Dart 3.x ์ด์
- Firebase ํ๋ก์ ํธ ์ค์
- Android Studio / VS Code
# 1. ์ ์ฅ์ ํด๋ก
git clone https://github.com/yourusername/degrowth-diary.git
cd degrowth-diary
# 2. ์์กด์ฑ ์ค์น
flutter pub get
# 3. Firebase ์ค์
# - Firebase Console์์ ํ๋ก์ ํธ ์์ฑ
# - google-services.json (Android)
# - GoogleService-Info.plist (iOS)
# ํ์ผ๋ค์ ๊ฐ๊ฐ android/app, ios/Runner์ ์ถ๊ฐ
# 4. ์คํ
flutter run
# 5. ํน์ ํ๋ซํผ ์คํ
flutter run -d chrome # ์น
flutter run -d android # ์๋๋ก์ด๋
flutter run -d ios # iOSflutter pub run build_runner build --delete-conflicting-outputs| ํ๋ฉด | ์ค๋ช | ์ํ |
|---|---|---|
| ๐ ํ | ๋ชฌ์คํฐ ์์์ง + ๋ฐ์ผ๋ฆฌ ์ฒดํฌ์ธ | โ ์๋ฃ |
| ๐ ๊ธฐ๋กํ๊ธฐ | ์ต๊ด ๊ธฐ๋ก ํ๋ก์ฐ | โ ์๋ฃ |
| ๐ ๋๊ฐ | ๋ชฌ์คํฐ ์ปฌ๋ ์ | โ ์๋ฃ |
| ๐ ํต๊ณ | ์นดํ ๊ณ ๋ฆฌ๋ณ ๋ถ์ | โ ์๋ฃ |
| ๐ ํ์คํ ๋ฆฌ | ๊ณผ๊ฑฐ ๊ธฐ๋ก ์กฐํ | โ ์๋ฃ |
| โ๏ธ ์ค์ | ํ๋กํ, ์๋ฆผ, ๊ณ์ | โ ์๋ฃ |
| ๐ ์ ์ | ๋์ ๊ณผ์ ์์คํ | โ ์๋ฃ |
- ๊ธฐ๋ณธ ์ธ์ฆ (Google Login)
- ์ต๊ด ๊ธฐ๋ก CRUD
- ๋ชฌ์คํฐ ํด๊ธ ์์คํ
- ํฌ๊ท ๋ชฌ์คํฐ (์๊ฐ/์์ผ ์กฐ๊ฑด)
- ๋ฐ์ผ๋ฆฌ ์ฒดํฌ์ธ
- ๋ชฌ์คํฐ ์ผ๋ฌ์คํธ ์์ ์ ์ฉ
- ์์์ง ๋ฐฐ๊ฒฝ ๋์์ธ
- ๋ชฌ์คํฐ ์ ๋๋ฉ์ด์
- ์ฌ์ด๋ ํจ๊ณผ
- ์น๊ตฌ ์์คํ
- ์๊ฐ ๋ฆฌํฌํธ ์นด๋ (SNS ๊ณต์ ์ฉ)
- ๋ชฌ์คํฐ ๊ตํ ๊ธฐ๋ฅ
- ํธ์ ์๋ฆผ (ํน๋ณ ๋ชฌ์คํฐ ๋ฑ์ฅ ์๋ฆผ)
- ์ฃผ๊ฐ ๋์ ๊ณผ์
- ์ปค๋ฎค๋ํฐ ํผ๋
- ๋ค๊ตญ์ด ์ง์
๊ธฐ์ฌ๋ ์ธ์ ๋ ํ์ํฉ๋๋ค! ๋ค์ ์ ์ฐจ๋ฅผ ๋ฐ๋ผ์ฃผ์ธ์:
- ์ด ์ ์ฅ์๋ฅผ Forkํฉ๋๋ค
- Feature ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค (
git checkout -b feature/AmazingFeature) - ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค (
git commit -m 'feat: Add some AmazingFeature') - ๋ธ๋์น์ Pushํฉ๋๋ค (
git push origin feature/AmazingFeature) - Pull Request๋ฅผ ์์ฑํฉ๋๋ค
Conventional Commits ์คํ์ผ์ ๋ฐ๋ฆ ๋๋ค:
feat:์๋ก์ด ๊ธฐ๋ฅfix:๋ฒ๊ทธ ์์ docs:๋ฌธ์ ๋ณ๊ฒฝstyle:์ฝ๋ ์คํ์ผ (ํฌ๋งทํ ๋ฑ)refactor:๋ฆฌํฉํ ๋งtest:ํ ์คํธ ์ถ๊ฐ/์์ chore:๋น๋/์ค์ ๋ณ๊ฒฝ
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค ํ์ ๋ฐฐํฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ LICENSE ํ์ผ์ ์ฐธ๊ณ ํ์ธ์.
ํ๋ก์ ํธ ๊ด๋ จ ๋ฌธ์๋ ์ ์์ฌํญ์ด ์์ผ์๋ฉด ์ธ์ ๋ ์ง ์ฐ๋ฝ์ฃผ์ธ์!
- Issues: GitHub Issues
- Discussions: GitHub Discussions
์ด ํ๋ก์ ํธ๋ ๋ค์ ์คํ์์ค ํ๋ก์ ํธ๋ค์ ์๊ฐ์ ๋ฐ์์ต๋๋ค:
- Flutter - ํฌ๋ก์ค ํ๋ซํผ UI ํ๋ ์์ํฌ
- Riverpod - ๊ฐ๋ ฅํ ์ํ๊ด๋ฆฌ ์๋ฃจ์
- Firebase - ๋ฐฑ์๋ ์ธํ๋ผ
์ค๋๋ ๋งํ๋ค๋ฉด, ๊ธฐ๋กํ์ธ์. ๋ชฌ์คํฐ๊ฐ ๊ธฐ๋ค๋ฆฝ๋๋ค. ๐ฆ
Made with โค๏ธ and ๐ (์ผ์)
ํ๋ก์ ํธ ์์ธ ๋ฌธ์๋ docs/ ํด๋๋ฅผ ์ฐธ๊ณ ํ์ธ์:
Sources:
