์์ด ์ ํ์ ๊ณ ๋ คํ ์ค๋งํธ ์ํ ์์ ๋ถ์ ์ฑ
FoodWallet์ ์ฑ์์ฃผ์, ์๋ ๋ฅด๊ธฐ, ์ข ๊ต์ ์ ํ, ์ง๋ณ ๋ฑ ๋ค์ํ ์์ด ์ ํ์ ๊ฐ์ง ์ฌ์ฉ์๋ค์ด ์์ ํ๊ฒ ์ํ์ ์ ํํ ์ ์๋๋ก ๋๋ ๋ชจ๋ฐ์ผ ์ฑ์ ๋๋ค.
- ๐คณ ์ฌ์ง ๋ถ์: ์์ ์ฌ์ง์ ์ฐ์ผ๋ฉด AI๊ฐ ์๋์ผ๋ก ์ฑ๋ถ์ ๋ถ์
- ๐ท QR ์ค์บ: ์ ํ์ QR ์ฝ๋๋ฅผ ์ค์บํ์ฌ ๋น ๋ฅธ ์ ๋ณด ํ์ธ
- ๐ก๏ธ ๋ง์ถคํ ์์ ์ ๋ณด: ๊ฐ์ธ์ ์์ด ์ ํ์ ๋ง์ถ ์์ธ ๋ถ์
- ๐ ๋ถ์ ๊ธฐ๋ก: ๊ณผ๊ฑฐ ๋ถ์ ๋ด์ญ ์ ์ฅ ๋ฐ ์กฐํ
- ๐ ์ถ์ฒ ์์คํ : ์ฌ์ฉ์์๊ฒ ์์ ํ ์์ ์ถ์ฒ
Apple ์คํ์ผ์ ๋ฏธ๋๋ฉํ๊ณ ๊ณ ๊ธ์ค๋ฌ์ด UI/UX ๋์์ธ์ ์ ์ฉํ์ต๋๋ค.
| ์์ | HEX | ์ฉ๋ |
|---|---|---|
| Primary (Blue) | #1E88E5 |
๋ก๊ณ ์ ์ง๊ฐ ์์, ์ฃผ์ ์ก์ |
| Secondary (Green) | #66BB6A |
๋ก๊ณ ์ ํฌํฌ ์์, ์์ /์ฑ์ |
| Danger (Red) | #EF5350 |
์ํ, ์๋ ๋ฅด๊ธฐ ๊ฒฝ๊ณ |
| Warning (Orange) | #FFA726 |
์ฃผ์ ํ์ |
| Neutral (Gray) | #1C1C1E ~ #F2F2F7 |
ํ ์คํธ, ๋ฐฐ๊ฒฝ |
- Flutter 3.10+ - ํฌ๋ก์ค ํ๋ซํผ ํ๋ ์์ํฌ
- Dart - ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
- Provider - ์ํ ๊ด๋ฆฌ
- Google Fonts - Inter ํฐํธ (Apple SF Pro ์คํ์ผ)
- Image Picker - ์ฌ์ง ์ดฌ์/๊ฐค๋ฌ๋ฆฌ ์ ํ
- QR Code Scanner - QR ์ฝ๋ ์ค์บ
lib/
โโโ main.dart # ์ฑ ์ํธ๋ฆฌ ํฌ์ธํธ
โโโ core/ # ํต์ฌ ์ค์
โ โโโ theme/ # ํ
๋ง (์ปฌ๋ฌ, ํ
์คํธ ์คํ์ผ)
โโโ screens/ # ํ๋ฉด ํ์ด์ง
โ โโโ login/ # ๋ก๊ทธ์ธ (์์
๋ก๊ทธ์ธ)
โ โโโ onboarding/ # ์ด๊ธฐ ์ค์
โ โโโ home/ # ๋ฉ์ธ ํ
โ โโโ food_analysis/ # ์์ ๋ถ์
โ โโโ qr_scan/ # QR ์ค์บ
โ โโโ settings/ # ์ฌ์ฉ์ ์ค์
โ โโโ profile/ # ๋ง์ดํ์ด์ง
โโโ widgets/ # ๊ณตํต ์์ ฏ
โโโ common/ # ์ฌ์ฌ์ฉ ๊ฐ๋ฅํ ์ปดํฌ๋ํธ
- Flutter SDK 3.10.0 ์ด์
- Dart SDK 3.10.0 ์ด์
- iOS ๊ฐ๋ฐ: Xcode 14.0 ์ด์
- Android ๊ฐ๋ฐ: Android Studio
-
์ ์ฅ์ ํด๋ก
git clone <repository-url> cd foodwallet_client
-
์์กด์ฑ ์ค์น
flutter pub get
-
์ด๋ฏธ์ง ์์ฐ ์ถ๊ฐ
assets/images/ํด๋์ ๋ค์ ์ด๋ฏธ์ง๋ฅผ ์ถ๊ฐํ์ธ์:app_logo.png(512x512 px) - ํ์ ์ฑ ๋ก๊ณgoogle_logo.png(18x18 px) - ํ์ Google ๊ณต์ ๋ก๊ณkakao_logo.png(18x18 px) - ํ์ Kakao ๊ณต์ ์ฌ๋ณผ
์์ธํ ๋ด์ฉ:
- LOGO_GUIDE.md - ์ฑ ๋ก๊ณ ์ค์ ๊ฐ์ด๋
- SOCIAL_LOGIN_GUIDE.md - ์์ ๋ก๊ทธ์ธ ๋ฒํผ ๊ฐ์ด๋๋ผ์ธ
- assets/images/DOWNLOAD_INSTRUCTIONS.md - ๋ก๊ณ ๋ค์ด๋ก๋ ๋ฐฉ๋ฒ
-
์ฑ ์คํ
# iOS ์๋ฎฌ๋ ์ดํฐ flutter run -d ios # Android ์๋ฎฌ๋ ์ดํฐ flutter run -d android # ๋๋ ํธ์ ์คํฌ๋ฆฝํธ ์ฌ์ฉ ./run_ios.sh
- Google, Kakao, Apple ์์ ๋ก๊ทธ์ธ
- ๊ฐ ํ๋ซํผ์ ๊ณต์ ๋์์ธ ๊ฐ์ด๋๋ผ์ธ ์ค์
- 4๋จ๊ณ ์ค์ ํ๋ก์ธ์ค
- ์ข ๊ต, ์ฑ์์ฃผ์, ์๋ ๋ฅด๊ธฐ, ์ง๋ณ ์ ๋ณด ์ ๋ ฅ
- ๊ฑด๋๋ฐ๊ธฐ ์ต์ ์ ๊ณต
- ์ฌ์ฉ์ ์์ด ์ ํ ์์ฝ
- ์ฌ์ง ๋ถ์ / QR ์ค์บ ๋ฒํผ
- ์ต๊ทผ ๋ถ์ ๊ธฐ๋ก
- ์ถ์ฒ ์์ ๋ฆฌ์คํธ
- ์ฌ์ง ์ดฌ์ ๋๋ ๊ฐค๋ฌ๋ฆฌ ์ ํ
- AI Vision ๋ถ์ ๊ฒฐ๊ณผ
- ์์๋ช , ์ฌ๋ฃ
- ์๋ ๋ฅด๊ธฐ ์ํ๋
- ์ข ๊ต์ ์ ํ ์๋ฐ ์ฌ๋ถ
- ์ง๋ณ ๊ด๋ จ ์ฃผ์์ฌํญ
- ๋์ฒด ์์ ์ถ์ฒ
- ์ค์๊ฐ QR ์ฝ๋ ์ค์บ
- ์ ํ ์ ๋ณด ์์ธ ํ์
- ์์ ์ ๋ณด ๋ฐ ์์ ๋ ํ๊ฐ
- ๊ฐ์ธ ์์ด ์ ํ ์ ๋ณด ๊ด๋ฆฌ
- ์ค์๊ฐ ์ ์ฅ ๋ฐ ์ ๋ฐ์ดํธ
- ํ๋กํ ์ ๋ณด
- ๋ถ์ ํต๊ณ
- ์ฑ ์ค์ ๋ฐ ๋ก๊ทธ์์
- ์ค์ ์์ ๋ก๊ทธ์ธ ๊ตฌํ (Firebase Authentication)
- ๋ฐฑ์๋ ์๋ฒ ๊ตฌ์ถ ๋ฐ ์ฐ๋
- ๋ถ์ ๊ธฐ๋ก ์ ์ฅ/์กฐํ ๊ธฐ๋ฅ
- ์ฌ์ฉ์ ๋ฐ์ดํฐ ๋๊ธฐํ
- AI Vision API ์ฐ๋ (Google Cloud Vision / OpenAI GPT-4 Vision)
- OCR (๊ดํ ๋ฌธ์ ์ธ์) ๊ธฐ๋ฅ ๐
- ๊ณผ์/์ํ ํฌ์ฅ์ ์์ฌ๋ฃ๋ช ํ ์คํธ ์๋ ์ธ์
- ์์์ฑ๋ถํ ๋ฐ์ดํฐ ์๋ ์ถ์ถ
- ์๋ ๋ฅด๊ธฐ ์ ๋ฐ ์ฑ๋ถ ์๋ ํ์ง
- ํ๊ธ/์๋ฌธ ๋ค๊ตญ์ด ์ธ์
- ์ค์๊ฐ ์์ ์ธ์ ๋ฐ ๋ถ๋ฅ
- ์์ ์ ๋ณด ์ ํ๋ ํฅ์
- ์ฆ๊ฒจ์ฐพ๊ธฐ ๊ธฐ๋ฅ
- ํธ์ ์๋ฆผ
- ๋ค๊ตญ์ด ์ง์ (i18n)
- ๋คํฌ ๋ชจ๋
- ์ปค๋ฎค๋ํฐ ๊ธฐ๋ฅ
๐ก OCR ๊ธฐ๋ฅ: QR ์ฝ๋๊ฐ ์๋ ์ ํ๋ ํฌ์ฅ์ง์ ํ ์คํธ๋ฅผ ์ดฌ์ํ์ฌ ์๋์ผ๋ก ๋ถ์ํ ์ ์์ต๋๋ค!
์์ธํ ๋ด์ฉ์ OCR_PLAN.md ์ฐธ์กฐ
- ๐ PRESENTATION.md - ๋ํ/ํฌ์์์ฉ ํ๋ ์ ํ
์ด์
๐
- ๋น๊ฐ๋ฐ์๋ฅผ ์ํ ์ฌ์ด ์ค๋ช
- ์์ฐ ์๋๋ฆฌ์ค ํฌํจ
- ๋น์ฆ๋์ค ๊ฐ์น ์ค์ฌ
- ๊ฐ๋ฐ ๊ฐ์ด๋ - ์์ธํ ๊ฐ๋ฐ ๋ฌธ์
- ์นด๋ฉ๋ผ ๊ธฐ๋ฅ ๊ฐ์ด๋ - ์ค์ ์นด๋ฉ๋ผ ์ฌ์ฉ๋ฒ
- OCR ๊ฐ๋ฐ ๊ณํ - ํ ์คํธ ์ธ์ ๊ธฐ๋ฅ ๊ณํ
- ์์ ๋ก๊ทธ์ธ ๊ฐ์ด๋ - ๊ณต์ ๋์์ธ ๊ฐ์ด๋๋ผ์ธ
- ์ฑ ๋ก๊ณ ๊ฐ์ด๋ - ์ฑ ๋ก๊ณ ์ค์ ๋ฐฉ๋ฒ
- ์ด๋ฏธ์ง ์์ฐ ๊ฐ์ด๋ - ์ด๋ฏธ์ง ์์ฐ ์ถ๊ฐ ๋ฐฉ๋ฒ
์ด ํ๋ก์ ํธ๋ ํ์ฌ ๊ฐ๋ฐ ์ค์ ๋๋ค. ๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค๋ฅผ ๋ฐ๋ฆ ๋๋ค.
- ๊ฐ๋ฐ: FoodWallet Team
- ๋์์ธ: Apple-inspired Minimal Design
FoodWallet - ์์ ํ ์์ฌ๋ฅผ ์ํ ์ค๋งํธํ ์ ํ ๐ฝ๏ธ
