npm install
DATABASE_URL = "YOUR URL"
JWT_SECRET = YOUR_SECRET_KEY
npm run dev
- AUTH Route
User Register: POST /auth/register
User Login: POST /auth/login
\
- Profile Route
Create Profile : POST /profile
Edit Profile : PATCH /profile/:userId
Get Profile : GET /profile/:userId
User Total Nutrition : GET /profile/nutrition/:userId
User Progress Nutrition : GET /profile/nutrition/progress/:userId
\
- Food Route
Food Nutrition Text Tracker : POST /food/nutrition
Food Recommendation : GET /food/recommendation
\
- History Route
Get User History : GET /history/:userId
\
-Login Route
email (unique, email format, required)
password (string, required)
- Register Route
name (string, required)
email (unique, email format, required)
password (string, required)
- Profile Route
userId String @unique
gender String
dateOfBirth String (year/month/date)
allergies String?
weight Float
height Float
- Food Nutrition Text Route
userId (string, required)
foodName (string, required)
- History Route
userId (string, required)
Register User -> POST /auth/register
{
"status": 200,
"message": "Success",
"data": {
"id": "20aefb60-905b-443e-9189-e74eb5c246ca",
"name": "mayu",
"email": "mayu@gmail.com",
"password": "$2a$08$c7ohbZar4gRBTARnr1e5guy/flMP9H1Yc6HANNu3q4Y5/Zvg5IC2.",
"role": "user",
"createdAt": "2024-06-14T04:46:25.371Z",
"updatedAt": "2024-06-14T04:46:25.371Z",
"isEmailVerified": false
}
}
Login User -> POST /auth/login
{
"status": 200,
"message": "Success",
"data": {
"id": "20aefb60-905b-443e-9189-e74eb5c246ca",
"name": "mayu",
"email": "mayu@gmail.com",
"password": "$2a$09$wZ./bDz1aYkA46ZFHAuRSe3XGMH1b2zFZzN5fCDNmjBfBEXtQMThu",
"role": "admin",
"createdAt": "2024-07-05T12:54:34.000Z",
"updatedAt": "2024-07-05T12:54:34.000Z",
"isEmailVerified": false
}
}
Create Profile -> POST /profile/
{
"status": 200,
"message": "Success",
"data": {
"profile": {
"id": "bbea0edc-0831-485e-8592-37099e9959ad",
"userId": "5fb3aa47-f976-4781-9c95-a6e65e8d9194",
"gender": "male",
"dateOfBirth": "2003-12-20",
"allergies": "Tidak Punya",
"weight": 57,
"height": 172,
"createdAt": "2024-07-07T04:13:33.490Z",
"updatedAt": "2024-07-07T04:13:33.490Z"
},
"dailyNutrition": {
"id": "6d5c96c4-4d10-4577-aad8-00bd18646e17",
"userId": "5fb3aa47-f976-4781-9c95-a6e65e8d9194",
"dailyCalorie": 1575.766,
"dailyCarbohydrate": 236.3649,
"dailySugar": 50,
"dailyFat": 315.1532,
"dailyProtein": 45.6,
"createdAt": "2024-07-07T04:13:34.551Z",
"updatedAt": "2024-07-07T04:13:34.551Z"
}
}
}
Get Profile -> GET /profile/:userId
{
"status": 200,
"message": "Success",
"data": {
"id": "55eb2d39-22ac-465e-a633-4efb2b2701cf",
"userId": "20aefb60-905b-443e-9189-e74eb5c246ca",
"gender": "male",
"dateOfBirth": "2003-12-20",
"allergies": "Tidak Punya",
"weight": 57,
"height": 172,
"createdAt": "2024-07-07T03:12:47.691Z",
"updatedAt": "2024-07-07T03:12:47.691Z",
"user": {
"name": "mayu",
"email": "mayu@gmail.com"
}
}
}
Edit Profile -> PATCH /profile/:userId
{
"status": 200,
"message": "Success",
"data": {
"profile": {
"id": "55eb2d39-22ac-465e-a633-4efb2b2701cf",
"userId": "20aefb60-905b-443e-9189-e74eb5c246ca",
"gender": "male",
"dateOfBirth": "2000-12-20",
"allergies": "Tidak Punya",
"weight": 58,
"height": 175,
"createdAt": "2024-07-07T03:12:47.691Z",
"updatedAt": "2024-07-10T04:32:34.506Z"
},
"newNutrition": {
"id": "21894711-8342-441f-a457-009966dfccba",
"userId": "20aefb60-905b-443e-9189-e74eb5c246ca",
"dailyCalorie": 1584.275,
"dailyCarbohydrate": 237.64125,
"dailySugar": 50,
"dailyFat": 316.855,
"dailyProtein": 46.40000000000001,
"createdAt": "2024-07-07T03:12:48.774Z",
"updatedAt": "2024-07-10T04:32:35.590Z"
}
}
}
Get Total Nutrition -> GET /profile/nutrition/:userId
{
"status": 200,
"message": "Success",
"data": {
"dailyCalorie": 1575.766,
"dailyProtein": 45.6,
"dailyFat": 315.1532,
"dailyCarbohydrate": 236.3649,
"dailySugar": 50
}
}
Get Progress Nutrition -> GET /profile/nutrition/progress/:userId
{
"status": 200,
"message": "Success",
"data": {
"totalCalories": 0,
"totalCarbohydrate": 0,
"totalProtein": 0,
"totalFat": 0,
"totalSugar": 0
}
}
Nutrition Text Tracker -> POST /food/nutrition
{
"status": 200,
"message": "Success",
"data": {
"foodInfo": {
"foodName": "Nasi Padang",
"foodInformation": "Nasi Padang adalah hidangan khas Minangkabau, Sumatera Barat, yang terkenal dengan cita rasa rempah dan beragam lauk pauknya.",
"calorie": "300",
"sugar": "10",
"carbohydrate": "40",
"fat": "15",
"protein": "20"
},
"progressNutrition": {
"totalCalories": 1200,
"totalCarbohydrate": 180,
"totalProtein": 85,
"totalFat": 70,
"totalSugar": 40
}
}
}
Get Food Recommendation -> GET /food/recommendation/:userId
{
"status": 200,
"message": "Success",
"data": {
"food1": {
"foodName": "Salmon Panggang dengan Sayuran",
"information": "Salmon kaya akan protein dan asam lemak omega-3, baik untuk kesehatan jantung. Panggang salmon dengan sedikit minyak zaitun dan tambahkan sayuran seperti brokoli, asparagus, atau kembang kol.",
"calorie": "300",
"sugar": "0",
"carbohydrate": "10",
"fat": "20",
"protein": "30"
},
"food2": {
"foodName": "Salad Quinoa dengan Sayuran dan Biji-bijian",
"information": "Quinoa adalah sumber protein dan serat yang baik. Campurkan quinoa dengan sayuran seperti tomat, mentimun, dan selada, serta biji-bijian seperti chia seed dan biji bunga matahari.",
"calorie": "250",
"sugar": "5",
"carbohydrate": "30",
"fat": "10",
"protein": "15"
},
"food3": {
"foodName": "Smoothie Buah dengan Susu Almond",
"information": "Smoothie ini kaya akan vitamin dan mineral dari buah-buahan. Gunakan buah-buahan seperti pisang, stroberi, dan blueberry, dan tambahkan susu almond untuk tambahan protein.",
"calorie": "200",
"sugar": "20",
"carbohydrate": "30",
"fat": "5",
"protein": "10"
}
}
}
Get History -> GET /history/:userId
{
"status": 200,
"message": "Success",
"data": [
{
"id": "17a0b27f-f545-45a0-ba78-03f013fa1310",
"userId": "20aefb60-905b-443e-9189-e74eb5c246ca",
"foodName": "Nasi Padang",
"foodInformation": "Nasi Padang adalah hidangan khas Sumatera Barat yang terdiri dari nasi putih dan berbagai lauk pauk, seperti rendang, ayam goreng, ikan bakar, dan sayur-sayuran.",
"totalCalorie": 350,
"totalCarbohydrate": 50,
"totalSugar": 10,
"totalFat": 20,
"totalProtein": 25,
"date": "2024-07-08T04:16:50.683Z"
}
]
}