pureme๋ Flutter์ Python(FastAPI)์ ๊ธฐ๋ฐ์ผ๋ก ํ ํ์ ๋ฐ์๊ตญ ๊ณ์ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ผ๋ก, ์ฌ์ฉ์๊ฐ ์์ ์ ํ์ ๋ฐฐ์ถ๋์ ๊ณ์ฐํ๊ณ ๋ชจ๋ํฐ๋งํ๋ฉฐ ์ ๊ฐํ ์ ์๋๋ก ๋์์ค๋๋ค. ๋ค์ํ ํ๋ ์์ญ์์์ ํ์ ๋ฐฐ์ถ์ ์ถ์ ํ๊ณ , ์ปค๋ฎค๋ํฐ์์ ์ํธ์์ฉ์ ํตํด ์ง์ ๊ฐ๋ฅํ ์ํ์ ์ฅ๋ คํฉ๋๋ค.
๐ ๏ธ ๊ฐ๋ฐ ํ๊ฒฝ
- IDE: Visual Studio Code
- ์ธ์ด ๋ฐ ํ๋ ์์ํฌ:
- Flutter: Dart
- Python: FastAPI
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: MySQL
- ํด๋ผ์ฐ๋ ์๋น์ค: Firebase
- ๋๋ฐ์ด์ค: AOS,IOS
-
ํ์ ๋ฐ์๊ตญ ๊ณ์ฐํ๊ธฐ
- ๊ตํต: ๋์ค๊ตํต, ์๋์ฐจ, ๋๋ณด, ์์ ๊ฑฐ ์ด์ฉ ์ ๋ฐ์๋๋ ํ์ ๋ฐฐ์ถ๋ ๊ณ์ฐ
- ๋ถ๋ฆฌ์๊ฑฐ: ์ฌํ์ฉ ํ๋์ผ๋ก ์ธํ ํ์ ์ ๊ฐ๋ ๊ณ์ฐ
- ์์ต๊ด: ์์ต๊ด์ ๋ฐ๋ฅธ ํ์ ๋ฐฐ์ถ๋ ๊ณ์ฐ
- ์๋์ง ์ฌ์ฉ: ๊ฐ์ ๋ด ์ ๊ธฐ, ๊ฐ์ค ์ฌ์ฉ๋์ ๊ธฐ๋ฐ์ผ๋ก ํ์ ๋ฐฐ์ถ๋ ๊ณ์ฐ
- ์ ๊ฐ๋ ํ์: ํ๊ท ๋ฐ์ดํฐ์ ๋น๊ตํ์ฌ ์ ๊ฐ๋ ํ์๋์ ๋๋ฌด ์ฌ์ ์์ ์ ๊ธฐ ์๋์ง ์ ์ฝ๋์ผ๋ก ์๊ฐํ
- ๊ฑธ์์ ํ์: ์ฌ์ฉ์์ ๊ฑด๊ฐ ์ฑ ๊ถํ์ ๋ฐ์ ๊ฑธ์์๋ฅผ ์๊ฐํ
-
์ปค๋ฎค๋ํฐ
- ์ฌ์ฉ์๋ค์ด ์์ ์ ํ์ ์ ๊ฐ ํ๋์ ๊ณต์
- ์ข์์, ๋๊ธ, ์ฌ์ง ์ ๋ก๋ ๊ธฐ๋ฅ
- ๋๋๊ธ ๊ธฐ๋ฅ์ผ๋ก ํ๋ฐํ ์ํต ๊ฐ๋ฅ
-
๋ญํน ํ์ด์ง
- ์ ์ฒด ์ฌ์ฉ์ ์ค ์์ 1-10์ ์ฌ์ฉ์ ํ์
- ๊ฐ์ธ์ ์์์ ์ ๊ฐ๋ ๋ณ๋๋ก ํ์ธ ๊ฐ๋ฅ
-
๋ง์ด ํ์ด์ง
- ์์ ์ด ์์ฑํ ๊ฒ์๊ธ ํ์ธ ๋ฐ ๊ฒ์๊ธ ์์ฑ
- ํ์ ์ ๋ณด ์์ ๋ฐ ๋น๋ฐ๋ฒํธ ๋ณ๊ฒฝ
- ํ์ ๋ฐ์๊ตญ ๋ถ์ ๋ฐ ์นดํ ๊ณ ๋ฆฌ๋ณ ํ์ ๋ฐ์๊ตญ ๋น๊ต ์ฐจํธ ์๊ฐํ
- ๊ธฐ๋ถ ์ฌ์ดํธ๋ก ์ด๋ํ๋ ๊ธฐ๋ถ ํญ
-
์ฑ ํต๊ณ
- ์ผ์ผ ์ ์ ์ ๋ฐ ๊ฐ์ ์๋ฅผ ์ฐจํธ๋ก ์๊ฐํ
-
Feed ๊ด๋ฆฌ
- ์ฌ์ฉ์๋ฅผ ๊ฒ์ํ๊ณ ๊ฒ์๊ธ์ ๊ฒํ
- ๊ฒ์๊ธ ์จ๊น ์ฒ๋ฆฌ ๋ฐ ์ญ์ ๊ธฐ๋ฅ
-
์ฌ์ฉ์ ๊ด๋ฆฌ
- ์ฌ์ฉ์๋ฅผ ๊ฒ์ํ๊ณ ๊ณ์ ์ ์ง(1์ผ, 1์ฃผ์ผ, 30์ผ) ๊ธฐ๋ฅ
-
์ ๊ณ ๊ด๋ฆฌ
- ์ ๊ณ ๋ ๊ฒ์๋ฌผ์ ํ์ธํ๊ณ ์กฐ์น
- Flutter: ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
- ํจํด: MVVM (Model-View-ViewModel) ์ํคํ
์ฒ
- Model: ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง ๊ด๋ฆฌ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ, API ์๋ต ๋ชจ๋ธ)
- View: ์ฌ์ฉ์ ์ธํฐํ์ด์ค ๊ตฌ์ฑ ์์ (Flutter ์์ ฏ)
- ViewModel: ๋ทฐ์ ๋ชจ๋ธ ๊ฐ์ ์ค์ฌ์ ์ญํ , ์ํ ๊ด๋ฆฌ ๋ฐ ๋ฐ์ดํฐ ๋ฐ์ธ๋ฉ
- Model: ๋ฐ์ดํฐ ๊ตฌ์กฐ ๋ฐ ๋น์ฆ๋์ค ๋ก์ง ๊ด๋ฆฌ (๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ชจ๋ธ, API ์๋ต ๋ชจ๋ธ)
- ์ฃผ์ ํจํค์ง
cloud_firestore: ^5.4.4
: Firebase Firestore ์ฐ๋์ ํตํด ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๊ธฐ๋ฅ ์ ๊ณตfirebase_core: ^3.6.0
: Firebase ์ด๊ธฐํ ๋ฐ ์ค์ ๊ด๋ฆฌfirebase_storage: ^12.3.2
: Firebase Storage๋ฅผ ํตํ ์ด๋ฏธ์ง ๋ฐ ํ์ผ ์ ์ฅget: ^4.6.6
: ์ํ ๊ด๋ฆฌ ๋ฐ ๋ผ์ฐํ ์ ์ํ GetX ํจํค์งget_storage: ^2.1.1
: ๋ก์ปฌ ์คํ ๋ฆฌ์ง ๊ด๋ฆฌhttp: ^1.2.2
: REST API ํต์ ์ ์ํ HTTP ํด๋ผ์ด์ธํธimage_picker: ^1.1.2
: ์ฌ์ฉ์๊ฐ ๊ธฐ๊ธฐ์์ ์ด๋ฏธ์ง๋ฅผ ์ ํํ๊ณ ์ ๋ก๋ํ ์ ์๋๋ก ์ง์like_button: ^2.0.5
: ๊ฒ์๊ธ์ ์ข์์ ๊ธฐ๋ฅ ๊ตฌํsyncfusion_flutter_charts: ^27.1.52
: ๋ฐ์ดํฐ ์๊ฐํ๋ฅผ ์ํ ์ฐจํธ ์ปดํฌ๋ํธwebview_flutter: ^4.8.0
: ์ฑ ๋ด์์ ์น ํ์ด์ง๋ฅผ ํ์ํ ์ ์๋ ์น๋ทฐ ํตํฉhealth: ^11.1.0
: ๊ฑด๊ฐ ๋ฐ์ดํฐ ์ ๊ทผ์ ์ํ ํจํค์งpermission_handler: ^10.0.0
: ๋ค์ํ ๊ถํ์ ๊ด๋ฆฌํ๊ณ ์์ฒญํ๋ ๊ธฐ๋ฅ ์ ๊ณต
- Python (FastAPI): ๊ณ ์ฑ๋ฅ API ์๋ฒ ๊ตฌ์ถ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: MySQL
- Firebase: ์ค์๊ฐ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ฐ ์คํ ๋ฆฌ์ง(๊ฒ์๊ธ ๋ฐ ๋๊ธ ๊ด๋ฆฌ)
git clone https://github.com/์ฌ์ฉ์์ด๋ฆ/pureme.Carbon_Footprint_App.git
cd pureme.Carbon_Footprint_Calculation-App
flutter pub get
- ์๋ฒ ์คํ
cd/ํ๋ก์ ํธ ๊ฒฝ๋ก/python
uvicorn pureme:app --reload