MealMate๋ ๊ฐ์ธ์ ์ ์ฒด ์ ๋ณด์ ๋ชฉํ์ ๋ง์ถ ๊ณผํ์ ์ธ ์๋จ ๊ด๋ฆฌ๋ฅผ ์ง์ํ๋ Android ๋ค์ดํฐ๋ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋๋ค. Harris-Benedict ๊ณต์์ ๊ธฐ๋ฐ์ผ๋ก ํ ์ ๋ฐํ ์นผ๋ก๋ฆฌ ๊ณ์ฐ๊ณผ ์ ๋ถ ๊ณต๊ณต API๋ฅผ ํ์ฉํ ์ ๋ขฐํ ์ ์๋ ์์ ์ ๋ณด๋ฅผ ์ ๊ณตํฉ๋๋ค.
- ํ๋์ธ์ ์์ต๊ด ๊ด๋ฆฌ ์ด๋ ค์: ๋ฐ์ ์ผ์ ์์์ ์ฒด๊ณ์ ์ธ ์๋จ ๊ด๋ฆฌ์ ํ์์ฑ ์ฆ๋
- ๊ฐ์ธ ๋ง์ถคํ ์นผ๋ก๋ฆฌ ๊ณ์ฐ: ์ฑ๋ณ, ๋์ด, ํ๋๋, ๋ชฉํ๋ฅผ ๊ณ ๋ คํ ๊ณผํ์ ์ ๊ทผ
- ์ ๋ขฐํ ์ ์๋ ์์ ์ ๋ณด: ์ ๋ถ ๊ณต๊ณต ๋ฐ์ดํฐ ๊ธฐ๋ฐ์ ์ ํํ ์ํ ์์ ์ ๋ณด
- ์ผ์ฃผ์ผ ๋จ์ ์งํ๋ฅ ์ถ์ : ์ง์์ ์ธ ๋๊ธฐ๋ถ์ฌ๋ฅผ ์ํ ์๊ฐ์ ํผ๋๋ฐฑ
- ๐งฎ ๊ณผํ์ ์นผ๋ก๋ฆฌ ๊ณ์ฐ: Harris-Benedict ๊ณต์ ๊ธฐ๋ฐ ๊ธฐ์ด๋์ฌ์จ(BMR) ์ฐ์ถ
- ๐ฑ ์ง๊ด์ ์ธ UI/UX: Material Design ๊ธฐ๋ฐ์ ์ฌ์ฉ์ ์นํ์ ์ธํฐํ์ด์ค
- ๐ ์ค์๊ฐ ๋ฐ์ดํฐ ์๊ฐํ: MPAndroidChart๋ฅผ ํ์ฉํ ์ผ์ฃผ์ผ ์นผ๋ก๋ฆฌ ๋ฌ์ฑ๋ฅ ์ฐจํธ
- ๐๏ธ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค: Room์ ํ์ฉํ ์คํ๋ผ์ธ ๋ฐ์ดํฐ ๊ด๋ฆฌ
- ๐ ๊ณต๊ณต API ์ฐ๋: ์ ๋ถ ์ํ์์ฝํ์์ ์ฒ ์์์ฑ๋ถ API ํ์ฉ
- ๐๏ธ ํ๋์ ์ํคํ ์ฒ: MVVM ํจํด, Hilt ์์กด์ฑ ์ฃผ์ , DataBinding ์ ์ฉ
๐ฑ View Layer (Activity/Fragment)
โ๏ธ DataBinding
๐ฎ ViewModel Layer (LiveData + Repository)
โ๏ธ Dependency Injection (Hilt)
๐๏ธ Model Layer (Room Database + API)
- ์ธ์ด: Java 11
- UI Framework: Android SDK (API 24-33)
- ์ํคํ ์ฒ: MVVM Pattern + Repository Pattern
- ์์กด์ฑ ์ฃผ์ : Dagger Hilt 2.44
- ๋ฐ์ดํฐ๋ฒ ์ด์ค: Room 2.5.1 (SQLite ๊ธฐ๋ฐ)
- ๋คํธ์ํน: Retrofit 2.9.0 + Gson Converter
- ์ฐจํธ: MPAndroidChart v3.1.0
- UI ์ปดํฌ๋ํธ: Material CalendarView 1.4.3
- ๋น๋ ๋๊ตฌ: Gradle, Android Studio
// ๋จ์ฑ: BMR = (10 ร ์ฒด์ค) + (6.25 ร ํค) - (5 ร ๋์ด) + 5
// ์ฌ์ฑ: BMR = (10 ร ์ฒด์ค) + (6.25 ร ํค) - (5 ร ๋์ด) - 161
์ต์ข
์นผ๋ก๋ฆฌ = BMR ร ํ๋์ง์ ร ๋ชฉ์ ์ง์- ํ๋ ์ง์: ์ข์(1.2) ~ ๋งค์ฐ ํ๋์ (1.9)
- ๋ชฉ์ ์ง์: ๋ค์ด์ดํธ(0.8), ์ฒด์ค์ ์ง(1.0), ๋ฒํฌ์ (1.2)
# ํ์ ๋๊ตฌ
- Android Studio Arctic Fox ์ด์
- JDK 11 ์ด์
- Android SDK API 24-33
- Gradle 7.0 ์ด์# ํ๋ก์ ํธ ํด๋ก
git clone <repository-url>
cd MealMate
# Android Studio์์ ํ๋ก์ ํธ ์ด๊ธฐ
# File -> Open -> ํ๋ก์ ํธ ํด๋ ์ ํ# Gradle ๋๊ธฐํ ํ ๋น๋
./gradlew build
# ๋๋ฐ์ด์ค/์๋ฎฌ๋ ์ดํฐ์ ์ค์น
./gradlew installDebug๐ ์ฌ์ฉ์ ๋ง์ถค ์ ๋ณด
โโโ ๐ค ์ฌ์ฉ์๋ช
+ ๋ชฉ์ (๋ค์ด์ดํธ/๋ฒํฌ์
/์ฒด์ค์ ์ง)
โโโ โ๏ธ ํ์ฌ ์ฒด์ค / ๋ชฉํ ์ฒด์ค
โโโ ๐ ์ผ์ฃผ์ผ ์นผ๋ก๋ฆฌ ๋ฌ์ฑ๋ฅ ์ฐจํธ
๐ ์ค๋์ ์๋จ
โโโ โ๏ธ ์์นจ์์ฌ ์ฒดํฌ๋ฆฌ์คํธ
โโโ ๐
์ ์ฌ์์ฌ ์ฒดํฌ๋ฆฌ์คํธ
โโโ ๐ ์ ๋
์์ฌ ์ฒดํฌ๋ฆฌ์คํธ
- Material CalendarView: ๋ ์ง๋ณ ์๋จ ๊ธฐ๋ก ์กฐํ
- ์๊ฐ ๋ทฐ: ์๋จ ์๋ฃ ์ฌ๋ถ ์๊ฐ์ ํ์
- ๋ ์ง ์ ํ: ํน์ ๋ ์ง ์๋จ ์์ธ ๋ณด๊ธฐ
- ์ค์๊ฐ ๊ฒ์: ์ ๋ถ API ๊ธฐ๋ฐ ์์ ๊ฒ์
- ์์ ์ ๋ณด: ์นผ๋ก๋ฆฌ, ํ์ํ๋ฌผ, ๋จ๋ฐฑ์ง, ์ง๋ฐฉ ์ ๋ณด
- ์ฆ๊ฒจ์ฐพ๊ธฐ: ์์ฃผ ๋จน๋ ์์ ์ ์ฅ ๊ธฐ๋ฅ
- ๊ฐ์ธ ์ ๋ณด ๊ด๋ฆฌ: ํค, ๋ชธ๋ฌด๊ฒ, ๋์ด, ์ฑ๋ณ ์์
- ๋ชฉํ ์ค์ : ๋ค์ด์ดํธ/๋ฒํฌ์ /์ฒด์ค์ ์ง ์ ํ
- ํ๋๋ ์ค์ : 5๋จ๊ณ ํ๋ ์์ค ์ ํ
CREATE TABLE user (
userIndex INTEGER PRIMARY KEY AUTOINCREMENT,
name TEXT NOT NULL,
height REAL,
weight REAL,
targetWeight REAL,
age INTEGER,
gender INTEGER, -- 1: ๋จ์ฑ, 2: ์ฌ์ฑ
activityLevel INTEGER, -- 1-5: ์ข์~๋งค์ฐํ๋์
purpose INTEGER, -- 1: ๋ค์ด์ดํธ, 2: ๋ฒํฌ์
, 3: ์ฒด์ค์ ์ง
bmr REAL -- ๊ณ์ฐ๋ ๊ธฐ์ด๋์ฌ์จ
);CREATE TABLE meal (
mealIndex INTEGER PRIMARY KEY AUTOINCREMENT,
mealDate TEXT NOT NULL,
mealCnt INTEGER, -- ์์ฌ ๋ฒํธ (1: ์์นจ, 2: ์ ์ฌ, 3: ์ ๋
)
checked INTEGER, -- 0: ๋ฏธ์๋ฃ, 1: ์๋ฃ
mealPreset TEXT -- ํ๋ฆฌ์
์ด๋ฆ
);CREATE TABLE food (
foodIndex INTEGER PRIMARY KEY AUTOINCREMENT,
foodName TEXT NOT NULL,
food1serving REAL, -- 1ํ ์ ๊ณต๋(g)
foodKcal REAL, -- ์นผ๋ก๋ฆฌ(kcal)
foodCarbohydrates REAL, -- ํ์ํ๋ฌผ(g)
foodProtein REAL, -- ๋จ๋ฐฑ์ง(g)
foodFat REAL, -- ์ง๋ฐฉ(g)
food_company TEXT, -- ์ ์กฐ์ฌ/๊ตฌ๋ถ
foodLike INTEGER -- 0: ์ผ๋ฐ, 1: ์ฆ๊ฒจ์ฐพ๊ธฐ
);Base URL: http://apis.data.go.kr/1471000/FoodNtrIrdntInfoService1/
Endpoint: getFoodNtrItdntList1
Parameters:
- serviceKey: ์ธ์ฆํค
- desc_kor: ์ํ๋ช
(ํ๊ธ)
- type: json (์๋ต ํ์){
"header": {
"resultCode": "00",
"resultMsg": "NORMAL SERVICE."
},
"body": {
"totalCount": 1,
"items": [{
"DESC_KOR": "์๋ฐฅ",
"SERVING_WT": 210.0,
"NUTR_CONT1": 310.0, // ์นผ๋ก๋ฆฌ
"NUTR_CONT2": 68.9, // ํ์ํ๋ฌผ
"NUTR_CONT3": 6.5, // ๋จ๋ฐฑ์ง
"NUTR_CONT4": 0.6 // ์ง๋ฐฉ
}]
}
}- ์ง๊ด์ฑ: ๋ณต์กํ ๊ธฐ๋ฅ์ ๋จ์ํ๊ณ ๋ช ํํ๊ฒ ํํ
- ์ผ๊ด์ฑ: Material Design ๊ฐ์ด๋๋ผ์ธ ์ค์
- ์ ๊ทผ์ฑ: ๋ชจ๋ ์ฐ๋ น๋๊ฐ ์ฝ๊ฒ ์ฌ์ฉํ ์ ์๋ ์ธํฐํ์ด์ค
- ํผ๋๋ฐฑ: ์ฌ์ฉ์ ํ๋์ ๋ํ ์ฆ๊ฐ์ ์ธ ์๊ฐ์ ํผ๋๋ฐฑ
<!-- Primary Colors -->
<color name="orange">#FF8C00</color>
<color name="white">#FFFFFF</color>
<color name="trans">#F5F5F5</color>
<!-- Semantic Colors -->
<color name="black_40">#666666</color>
<color name="success">#4CAF50</color>
<color name="warning">#FF9800</color>- ๋ค์ํ ํ๋ฉด ํฌ๊ธฐ ์ง์: ์ค๋งํธํฐ, ํ๋ธ๋ฆฟ ๋์
- ์ ์ํ UI: ์ธ๋ก/๊ฐ๋ก ํ๋ฉด ๋ชจ๋ ์๋ ์กฐ์
- ํฐ์น ์นํ์ : ์ต์ 48dp ํฐ์น ์์ญ ๋ณด์ฅ
- LazyLoading: RecyclerView๋ฅผ ํตํ ํจ์จ์ ์ธ ๋ฆฌ์คํธ ๋ ๋๋ง
- ๋ฐ์ดํฐ ์บ์ฑ: Room์ ํ์ฉํ ๋ก์ปฌ ๋ฐ์ดํฐ ์บ์ฑ
- ์ด๋ฏธ์ง ์ต์ ํ: Vector Drawable ์ฌ์ฉ์ผ๋ก ๋คํด์๋ ์ง์
- ๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ: ViewModel + LiveData๋ก ๋ฉ๋ชจ๋ฆฌ ๋์ ๋ฐฉ์ง
APK Size: ~8MB (์ต์ ํ ํ)
- ProGuard ์ ์ฉ์ผ๋ก ์ฝ๋ ๋๋
ํ ๋ฐ ํฌ๊ธฐ ์ถ์
- ๋ฏธ์ฌ์ฉ ๋ฆฌ์์ค ์ ๊ฑฐ
- Vector Drawable ํ์ฉ
src/test/ # ๋จ์ ํ
์คํธ
โโโ ExampleUnitTest.java
โโโ model/
โโโ BenedictCalculatorTest.java
src/androidTest/ # ๊ณ์ธก ํ
์คํธ
โโโ ExampleInstrumentedTest.java
โโโ database/
โโโ DatabaseTest.java
- ์นผ๋ก๋ฆฌ ๊ณ์ฐ ์ ํ์ฑ: Benedict ๊ณต์ ๊ณ์ฐ ๊ฒ์ฆ
- ๋ฐ์ดํฐ๋ฒ ์ด์ค CRUD: Room ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ์ฐ ํ ์คํธ
- API ํต์ : Retrofit ๋คํธ์ํฌ ํธ์ถ ํ ์คํธ
- UI ์ํธ์์ฉ: Espresso๋ฅผ ํ์ฉํ UI ํ ์คํธ
- ๋ก์ปฌ ๋ฐ์ดํฐ ์ ์ฅ: ๊ฐ์ธ์ ๋ณด๋ ๋๋ฐ์ด์ค ๋ด๋ถ์๋ง ์ ์ฅ
- API ํค ๋ณด์: Constants ํด๋์ค๋ฅผ ํตํ ๋ฏผ๊ฐ ์ ๋ณด ๊ด๋ฆฌ
- ๋ฐ์ดํฐ ์ํธํ: Room ๋ฐ์ดํฐ๋ฒ ์ด์ค SQLCipher ์ ์ฉ ๊ฐ๋ฅ
- ๊ถํ ์ต์ํ: ํ์ํ ๊ถํ๋ง ์์ฒญ (INTERNET, ACCESS_NETWORK_STATE)
์์ง ์ ๋ณด: ์ด๋ฆ, ํค, ๋ชธ๋ฌด๊ฒ, ๋์ด, ์ฑ๋ณ
์ ์ฅ ์์น: ์ฌ์ฉ์ ๋๋ฐ์ด์ค ๋ก์ปฌ ์ ์ฅ์
์ธ๋ถ ์ ์ก: ์์ (๋ชจ๋ ๋ฐ์ดํฐ๋ ๋ก์ปฌ์์ ์ฒ๋ฆฌ)
๋ฐ์ดํฐ ์ญ์ : ์ฑ ์ ๊ฑฐ ์ ๋ชจ๋ ๋ฐ์ดํฐ ์๋ ์ญ์
MealMate/
โโโ app/
โ โโโ src/main/
โ โ โโโ java/com/anonymous/mealmate/
โ โ โ โโโ api/ # ๐ ๋คํธ์ํฌ API ๋ ์ด์ด
โ โ โ โ โโโ ChartApiHelper.java
โ โ โ โ โโโ FoodApiHelper.java
โ โ โ โโโ constants/ # ๐ ์์ ์ ์
โ โ โ โ โโโ Constants.java
โ โ โ โ โโโ UserHashMap.java
โ โ โ โโโ feature/ # ๐ง ํต์ฌ ๋น์ฆ๋์ค ๋ก์ง
โ โ โ โ โโโ BenedictCalculator.java
โ โ โ โ โโโ Date.java
โ โ โ โ โโโ MealMateApplication.java
โ โ โ โโโ model/ # ๐ ๋ฐ์ดํฐ ๋ชจ๋ธ ๋ ์ด์ด
โ โ โ โ โโโ dao/ # ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ ๊ทผ ๊ฐ์ฒด
โ โ โ โ โโโ database/ # ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ค์
โ โ โ โ โโโ dto/ # ๐ฆ ๋ฐ์ดํฐ ์ ์ก ๊ฐ์ฒด
โ โ โ โ โโโ entity/ # ๐๏ธ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ํฐํฐ
โ โ โ โ โโโ repository/ # ๐ ๋ฐ์ดํฐ ์ ์ฅ์ ํจํด
โ โ โ โโโ service/ # โ๏ธ ์๋น์ค ๋ ์ด์ด
โ โ โ โโโ view/ # ๐จ ํ๋ ์ ํ
์ด์
๋ ์ด์ด
โ โ โ โ โโโ activity/ # ๐ฑ ์กํฐ๋นํฐ
โ โ โ โ โโโ adapter/ # ๐ ์ด๋ํฐ ํจํด
โ โ โ โ โโโ dialog/ # ๐ฌ ๋ค์ด์ผ๋ก๊ทธ
โ โ โ โ โโโ fragment/ # ๐งฉ ํ๋๊ทธ๋จผํธ
โ โ โ โโโ viewmodel/ # ๐ฎ ๋ทฐ๋ชจ๋ธ (MVVM)
โ โ โโโ res/ # ๐ฑ ๋ฆฌ์์ค ํ์ผ
โ โ โโโ drawable/ # ๐จ ๋๋ก์ด๋ธ ๋ฆฌ์์ค
โ โ โโโ font/ # ๐ค ํฐํธ ๋ฆฌ์์ค
โ โ โโโ layout/ # ๐ ๋ ์ด์์ XML
โ โ โโโ menu/ # ๐ ๋ฉ๋ด ๋ฆฌ์์ค
โ โ โโโ values/ # ๐พ ๊ฐ ๋ฆฌ์์ค
โ โ โโโ mipmap-*/ # ๐ผ๏ธ ์ฑ ์์ด์ฝ
โ โโโ build.gradle # ๐ง ๋ชจ๋ ๋น๋ ์ค์
โโโ gradle/ # ๐ ๏ธ Gradle ๋ํผ
โโโ build.gradle # ๐๏ธ ํ๋ก์ ํธ ๋น๋ ์ค์
โโโ settings.gradle # โ๏ธ ํ๋ก์ ํธ ์ค์
โโโ README.md # ๐ ํ๋ก์ ํธ ๋ฌธ์
- ์์ ๊ธฐ๋ฅ: ์น๊ตฌ์ ์๋จ ๊ณต์ ๋ฐ ๊ฒฝ์
- AI ์ถ์ฒ: ๋จธ์ ๋ฌ๋ ๊ธฐ๋ฐ ๊ฐ์ธ ๋ง์ถค ์๋จ ์ถ์ฒ
- ์ด๋ ์ฐ๋: ์๋ชจ ์นผ๋ก๋ฆฌ ๊ณ์ฐ ๋ฐ ํตํฉ ๊ด๋ฆฌ
- ์์์ฌ ์๋ด: ์ ๋ฌธ๊ฐ ์๋ด ์๋น์ค ์ฐ๋
- iOS ๋ฒ์ : Swift ๊ธฐ๋ฐ iOS ์ ํ๋ฆฌ์ผ์ด์ ๊ฐ๋ฐ
- ์น ์ ํ๋ฆฌ์ผ์ด์ : React ๊ธฐ๋ฐ ์น ๋ฒ์ ์ ๊ณต
- ๋ฐฑ์๋ API: Spring Boot ๊ธฐ๋ฐ ํด๋ผ์ฐ๋ ์๋น์ค
- Jetpack Compose: ์ต์ UI ํ๋ ์์ํฌ ๋์
- Kotlin ๋ง์ด๊ทธ๋ ์ด์ : ์ฝํ๋ฆฐ ์ธ์ด๋ก ์ ์ง์ ์ ํ
- GraphQL: ํจ์จ์ ์ธ ๋ฐ์ดํฐ ์ฟผ๋ฆฌ ์์คํ
- ์คํ๋ผ์ธ ์ฐ์ : Progressive Web App ๊ธฐ๋ฅ
IDE: Android Studio 2023.1.1+
์ธ์ด: Java 11
๋น๋ ๋๊ตฌ: Gradle 8.0+
๋ฒ์ ๊ด๋ฆฌ: Git
์์กด์ฑ ๊ด๋ฆฌ: Gradle Dependency Management
// ํต์ฌ Android
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.9.0'
// ์ํคํ
์ฒ ์ปดํฌ๋ํธ
implementation 'androidx.room:room-runtime:2.5.1'
implementation 'com.google.dagger:hilt-android:2.44'
// ๋คํธ์ํน
implementation 'com.squareup.retrofit2:retrofit:2.9.0'
implementation 'com.squareup.retrofit2:converter-gson:2.9.0'
// UI ์ปดํฌ๋ํธ
implementation 'com.github.PhilJay:MPAndroidChart:v3.1.0'
implementation 'com.prolificinteractive:material-calendarview:1.4.3'# ๋๋ฒ๊ทธ ๋น๋
./gradlew assembleDebug
# ๋ฆด๋ฆฌ์ค ๋น๋
./gradlew assembleRelease
# ํ
์คํธ ์คํ
./gradlew test
./gradlew connectedAndroidTest
# ์ ์ ๋ถ์
./gradlew lint# ์๋ช
๋ APK ์์ฑ
./gradlew assembleRelease
# APK ์์น
app/build/outputs/apk/release/app-release.apk- ์ด์ ๋ฑ๋ก: ๋ฒ๊ทธ ๋ฆฌํฌํธ ๋๋ ๊ธฐ๋ฅ ์ ์
- ํฌํฌ: ํ๋ก์ ํธ๋ฅผ ๊ฐ์ธ ๊ณ์ ์ผ๋ก ํฌํฌ
- ๋ธ๋์น ์์ฑ: feature/๊ธฐ๋ฅ๋ช ๋๋ bugfix/๋ฒ๊ทธ๋ช
- ์ปค๋ฐ: ๋ช ํํ ์ปค๋ฐ ๋ฉ์์ง ์์ฑ
- ํ ๋ฆฌํ์คํธ: ์์ธํ ์ค๋ช ๊ณผ ํจ๊ป PR ์์ฑ
// ํด๋์ค๋ช
: PascalCase
public class MealCheckViewModel { }
// ๋ฉ์๋๋ช
: camelCase
public void calculateBMR() { }
// ์์: UPPER_SNAKE_CASE
public static final int MEAL_BREAKFAST = 1;
// ๋ณ์๋ช
: camelCase
private User currentUser;- Android Developer Documentation
- Material Design Guidelines
- Harris-Benedict Formula
- ์ํ์์ฝํ์์ ์ฒ ๊ณต๊ณต๋ฐ์ดํฐ
- โ ์์ ํ MVVM ์ํคํ ์ฒ ๊ตฌํ
- โ ๊ณผํ์ ์นผ๋ก๋ฆฌ ๊ณ์ฐ ์์คํ ๊ตฌ์ถ
- โ ์ ๋ถ ๊ณต๊ณต API ์ฐ๋ ์ฑ๊ณต
- โ ์ง๊ด์ ์ธ UI/UX ๋์์ธ ์์ฑ
- โ ๋ก์ปฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ต์ ํ
๐ฏ Project Goals: ๊ฐ์ธ ๋ง์ถคํ ์๋จ ๊ด๋ฆฌ โ ๊ฑด๊ฐํ ๋ผ์ดํ์คํ์ผ ์ง์
๐ Key Technologies: Android Native, MVVM, Room Database, Retrofit API
๐ Impact: ๊ณผํ์ ์ ๊ทผ์ ํตํ ์ฒด๊ณ์ ์ธ ์๋จ ๊ด๋ฆฌ ์๋ฃจ์
Made with โค๏ธ for Healthy Lifestyle Management