feat(docker): add Docker support and enhance dashboard data
- Add Dockerfile and docker-compose.yml for containerized deployment - Update server to listen on all network interfaces for Docker compatibility - Add .dockerignore to exclude unnecessary files from build context - Enhance dashboard controller with additional user data, trends, and suggestions - Update package.json scripts for proper Docker build workflow
This commit is contained in:
9
.dockerignore
Normal file
9
.dockerignore
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
node_modules
|
||||||
|
dist
|
||||||
|
data/*.db
|
||||||
|
.git
|
||||||
|
.gitignore
|
||||||
|
.env
|
||||||
|
Dockerfile
|
||||||
|
docker-compose.yml
|
||||||
|
README.md
|
||||||
21
Dockerfile
Normal file
21
Dockerfile
Normal file
@@ -0,0 +1,21 @@
|
|||||||
|
FROM node:18-alpine
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
# Install build dependencies for native modules (sqlite3)
|
||||||
|
RUN apk add --no-cache python3 make g++
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
|
||||||
|
RUN npm install
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
# Ensure data directory exists
|
||||||
|
RUN mkdir -p data
|
||||||
|
|
||||||
|
RUN npm run build
|
||||||
|
|
||||||
|
EXPOSE 3000
|
||||||
|
|
||||||
|
CMD ["npm", "start"]
|
||||||
BIN
data/sessions.db
BIN
data/sessions.db
Binary file not shown.
18
dist/dashboard/dashboard.controller.d.ts
vendored
18
dist/dashboard/dashboard.controller.d.ts
vendored
@@ -9,6 +9,7 @@ export declare class DashboardController {
|
|||||||
constructor(utilsService: UtilsService, userGoalModel: typeof UserGoal, weightLogModel: typeof WeightLog);
|
constructor(utilsService: UtilsService, userGoalModel: typeof UserGoal, weightLogModel: typeof WeightLog);
|
||||||
getDashboard(req: any, res: Response): Promise<{
|
getDashboard(req: any, res: Response): Promise<{
|
||||||
user: any;
|
user: any;
|
||||||
|
current_user: any;
|
||||||
nutrition: {
|
nutrition: {
|
||||||
calories: number;
|
calories: number;
|
||||||
protein: number;
|
protein: number;
|
||||||
@@ -34,19 +35,16 @@ export declare class DashboardController {
|
|||||||
fat: number;
|
fat: number;
|
||||||
water: number;
|
water: number;
|
||||||
};
|
};
|
||||||
macroPercentages: {
|
macro_percentages: {
|
||||||
protein: number;
|
protein: number;
|
||||||
carbs: number;
|
carbs: number;
|
||||||
fat: number;
|
fat: number;
|
||||||
};
|
};
|
||||||
} | {
|
suggestions: any[];
|
||||||
user?: undefined;
|
calorie_trend: any[];
|
||||||
nutrition?: undefined;
|
weight_trend: {
|
||||||
water?: undefined;
|
date: Date;
|
||||||
goals?: undefined;
|
weight_kg: number;
|
||||||
weightLogToday?: undefined;
|
}[];
|
||||||
weightChange?: undefined;
|
|
||||||
remaining?: undefined;
|
|
||||||
macroPercentages?: undefined;
|
|
||||||
}>;
|
}>;
|
||||||
}
|
}
|
||||||
|
|||||||
26
dist/dashboard/dashboard.controller.js
vendored
26
dist/dashboard/dashboard.controller.js
vendored
@@ -61,22 +61,42 @@ let DashboardController = class DashboardController {
|
|||||||
fat: goals.target_fat_g - nutrition.fat,
|
fat: goals.target_fat_g - nutrition.fat,
|
||||||
water: goals.target_water_ml - water.total_ml,
|
water: goals.target_water_ml - water.total_ml,
|
||||||
};
|
};
|
||||||
const macroPercentages = this.utilsService.getMacroPercentages(nutrition.protein, nutrition.carbs, nutrition.fat);
|
const macro_percentages = this.utilsService.getMacroPercentages(nutrition.protein, nutrition.carbs, nutrition.fat);
|
||||||
|
const suggestions = this.utilsService.suggestFoodsForMacros(remaining.protein, remaining.carbs, remaining.fat);
|
||||||
|
const calorie_trend = await this.utilsService.getCalorieTrend(req.user.id);
|
||||||
|
const weight_trend = await this.utilsService.getWeightTrend(req.user.id);
|
||||||
return {
|
return {
|
||||||
user: req.user,
|
user: req.user,
|
||||||
|
current_user: req.user,
|
||||||
nutrition,
|
nutrition,
|
||||||
water,
|
water,
|
||||||
goals,
|
goals,
|
||||||
weightLogToday,
|
weightLogToday,
|
||||||
weightChange,
|
weightChange,
|
||||||
remaining,
|
remaining,
|
||||||
macroPercentages,
|
macro_percentages,
|
||||||
|
suggestions,
|
||||||
|
calorie_trend,
|
||||||
|
weight_trend,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
catch (err) {
|
catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
req.flash('error_msg', 'Error loading dashboard');
|
req.flash('error_msg', 'Error loading dashboard');
|
||||||
return {};
|
return {
|
||||||
|
user: req.user,
|
||||||
|
current_user: req.user,
|
||||||
|
nutrition: { calories: 0, protein: 0, carbs: 0, fat: 0, meals: [] },
|
||||||
|
water: { total_ml: 0, logs: [] },
|
||||||
|
goals: null,
|
||||||
|
weightLogToday: null,
|
||||||
|
weightChange: null,
|
||||||
|
remaining: { calories: 0, protein: 0, carbs: 0, fat: 0, water: 0 },
|
||||||
|
macro_percentages: { protein: 0, carbs: 0, fat: 0 },
|
||||||
|
suggestions: [],
|
||||||
|
calorie_trend: [],
|
||||||
|
weight_trend: [],
|
||||||
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|||||||
2
dist/dashboard/dashboard.controller.js.map
vendored
2
dist/dashboard/dashboard.controller.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"dashboard.controller.js","sourceRoot":"","sources":["../../src/dashboard/dashboard.controller.ts"],"names":[],"mappings":"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"}
|
{"version":3,"file":"dashboard.controller.js","sourceRoot":"","sources":["../../src/dashboard/dashboard.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAA8E;AAC9E,4EAAwE;AACxE,0DAAsD;AACtD,+DAAqD;AACrD,iEAAuD;AACvD,iDAAgD;AAKzC,IAAM,mBAAmB,GAAzB,MAAM,mBAAmB;IAC9B,YACU,YAA0B,EACH,aAA8B,EAC7B,cAAgC;QAFxD,iBAAY,GAAZ,YAAY,CAAc;QACH,kBAAa,GAAb,aAAa,CAAiB;QAC7B,mBAAc,GAAd,cAAc,CAAkB;IAC/D,CAAC;IAIE,AAAN,KAAK,CAAC,YAAY,CAAQ,GAAG,EAAS,GAAa;QACjD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAGlD,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YACrF,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;YAGhF,IAAI,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACjF,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,KAAK,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;oBACtC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE;oBACnB,gBAAgB,EAAE,GAAG;oBACrB,cAAc,EAAE,GAAG;oBACnB,YAAY,EAAE,EAAE;oBAChB,eAAe,EAAE,IAAI;iBACf,CAAC,CAAC;YACZ,CAAC;YAGD,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBACvD,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE;aAC9C,CAAC,CAAC;YAEH,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;YAClC,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;YAC3C,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;YAE3D,MAAM,kBAAkB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;gBAC3D,KAAK,EAAE,EAAE,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,YAAY,EAAE;aACnD,CAAC,CAAC;YAEH,IAAI,YAAY,GAAG,IAAI,CAAC;YACxB,IAAI,cAAc,IAAI,kBAAkB,EAAE,CAAC;gBACzC,YAAY,GAAG,cAAc,CAAC,SAAS,GAAG,kBAAkB,CAAC,SAAS,CAAC;YACzE,CAAC;YAGD,MAAM,SAAS,GAAG;gBAChB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,QAAQ;gBAC7D,OAAO,EAAE,KAAK,CAAC,gBAAgB,GAAG,SAAS,CAAC,OAAO;gBACnD,KAAK,EAAE,KAAK,CAAC,cAAc,GAAG,SAAS,CAAC,KAAK;gBAC7C,GAAG,EAAE,KAAK,CAAC,YAAY,GAAG,SAAS,CAAC,GAAG;gBACvC,KAAK,EAAE,KAAK,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ;aAC9C,CAAC;YAGF,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAC7D,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,GAAG,CACd,CAAC;YAGF,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CACzD,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,GAAG,CACd,CAAC;YAGF,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC3E,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAEzE,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,IAAI;gBACtB,SAAS;gBACT,KAAK;gBACL,KAAK;gBACL,cAAc;gBACd,YAAY;gBACZ,SAAS;gBACT,iBAAiB;gBACjB,WAAW;gBACX,aAAa;gBACb,YAAY;aACb,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,yBAAyB,CAAC,CAAC;YAElD,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,YAAY,EAAE,GAAG,CAAC,IAAI;gBACtB,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE;gBACnE,KAAK,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;gBAChC,KAAK,EAAE,IAAI;gBACX,cAAc,EAAE,IAAI;gBACpB,YAAY,EAAE,IAAI;gBAClB,SAAS,EAAE,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE;gBAClE,iBAAiB,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE;gBACnD,WAAW,EAAE,EAAE;gBACf,aAAa,EAAE,EAAE;gBACjB,YAAY,EAAE,EAAE;aACjB,CAAC;QACJ,CAAC;IACH,CAAC;CACF,CAAA;AA7GY,kDAAmB;AASxB;IAFL,IAAA,YAAG,GAAE;IACL,IAAA,eAAM,EAAC,WAAW,CAAC;IACA,WAAA,IAAA,YAAG,GAAE,CAAA;IAAO,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDAmGpC;8BA5GU,mBAAmB;IAF/B,IAAA,mBAAU,EAAC,WAAW,CAAC;IACvB,IAAA,kBAAS,EAAC,wCAAkB,CAAC;IAIzB,WAAA,IAAA,uBAAW,EAAC,0BAAQ,CAAC,CAAA;IACrB,WAAA,IAAA,uBAAW,EAAC,4BAAS,CAAC,CAAA;qCAFD,4BAAY;GAFzB,mBAAmB,CA6G/B"}
|
||||||
2
dist/main.js
vendored
2
dist/main.js
vendored
@@ -31,7 +31,7 @@ async function bootstrap() {
|
|||||||
const expressApp = app.getHttpAdapter().getInstance();
|
const expressApp = app.getHttpAdapter().getInstance();
|
||||||
expressApp.locals.round = Math.round;
|
expressApp.locals.round = Math.round;
|
||||||
const PORT = process.env.PORT || 3000;
|
const PORT = process.env.PORT || 3000;
|
||||||
await app.listen(PORT);
|
await app.listen(PORT, '0.0.0.0');
|
||||||
console.log(`Application is running on: ${await app.getUrl()}`);
|
console.log(`Application is running on: ${await app.getUrl()}`);
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|||||||
2
dist/main.js.map
vendored
2
dist/main.js.map
vendored
@@ -1 +1 @@
|
|||||||
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAE3C,6CAAyC;AACzC,2CAA2C;AAC3C,qCAAqC;AACrC,uCAAuC;AACvC,sDAAsD;AACtD,kDAAkD;AAClD,6BAA6B;AAG7B,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAExD,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAyB,sBAAS,CAAC,CAAC;IAGxE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAG1D,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAGzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAG5B,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAGnC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGpD,GAAG,CAAC,GAAG,CACL,OAAO,CAAC;QACN,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC5D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ;QAC1C,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE;KAC7C,CAAC,CACH,CAAC;IAGF,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAG5B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAGjB,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAErC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,EAAE,CAAC"}
|
{"version":3,"file":"main.js","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":";;AAAA,uCAA2C;AAE3C,6CAAyC;AACzC,2CAA2C;AAC3C,qCAAqC;AACrC,uCAAuC;AACvC,sDAAsD;AACtD,kDAAkD;AAClD,6BAA6B;AAG7B,MAAM,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC,OAAO,CAAC,CAAC;AAExD,KAAK,UAAU,SAAS;IACtB,MAAM,GAAG,GAAG,MAAM,kBAAW,CAAC,MAAM,CAAyB,sBAAS,CAAC,CAAC;IAGxE,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;IAG1D,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACzD,GAAG,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;IAGzB,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IACxB,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAG5B,GAAG,CAAC,GAAG,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,CAAC;IAGnC,GAAG,CAAC,aAAa,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;IAGpD,GAAG,CAAC,GAAG,CACL,OAAO,CAAC;QACN,KAAK,EAAE,IAAI,WAAW,CAAC,EAAE,EAAE,EAAE,aAAa,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAC5D,MAAM,EAAE,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,QAAQ;QAC1C,MAAM,EAAE,KAAK;QACb,iBAAiB,EAAE,KAAK;QACxB,MAAM,EAAE,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE;KAC7C,CAAC,CACH,CAAC;IAGF,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;IAC/B,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IAG5B,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;IAGjB,MAAM,UAAU,GAAG,GAAG,CAAC,cAAc,EAAE,CAAC,WAAW,EAAE,CAAC;IACtD,UAAU,CAAC,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IAErC,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,CAAC;IACtC,MAAM,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;IAClC,OAAO,CAAC,GAAG,CAAC,8BAA8B,MAAM,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAClE,CAAC;AACD,SAAS,EAAE,CAAC"}
|
||||||
2
dist/tsconfig.tsbuildinfo
vendored
2
dist/tsconfig.tsbuildinfo
vendored
File diff suppressed because one or more lines are too long
11
docker-compose.yml
Normal file
11
docker-compose.yml
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
version: '3.8'
|
||||||
|
services:
|
||||||
|
web:
|
||||||
|
build: .
|
||||||
|
ports:
|
||||||
|
- "3000:3000"
|
||||||
|
volumes:
|
||||||
|
- ./data:/app/data
|
||||||
|
environment:
|
||||||
|
- PORT=3000
|
||||||
|
- NODE_ENV=production
|
||||||
@@ -4,11 +4,10 @@
|
|||||||
"description": "Calorie Tracker - Filipino Food Edition",
|
"description": "Calorie Tracker - Filipino Food Edition",
|
||||||
"main": "server.js",
|
"main": "server.js",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server.js",
|
"build": "tsc",
|
||||||
"dev": "nodemon server.js",
|
"start": "node dist/main.js",
|
||||||
"seed": "node scripts/seed.js",
|
"start:dev": "nodemon --watch 'src/**/*.ts' --exec \"ts-node\" src/main.ts",
|
||||||
"start:nest": "ts-node src/main.ts",
|
"seed": "ts-node scripts/seed.ts"
|
||||||
"start:dev:nest": "nodemon --watch 'src/**/*.ts' --exec \"ts-node\" src/main.ts"
|
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@nestjs/common": "^11.1.12",
|
"@nestjs/common": "^11.1.12",
|
||||||
|
|||||||
@@ -54,7 +54,7 @@ async function bootstrap() {
|
|||||||
expressApp.locals.round = Math.round;
|
expressApp.locals.round = Math.round;
|
||||||
|
|
||||||
const PORT = process.env.PORT || 3000;
|
const PORT = process.env.PORT || 3000;
|
||||||
await app.listen(PORT);
|
await app.listen(PORT, '0.0.0.0');
|
||||||
console.log(`Application is running on: ${await app.getUrl()}`);
|
console.log(`Application is running on: ${await app.getUrl()}`);
|
||||||
}
|
}
|
||||||
bootstrap();
|
bootstrap();
|
||||||
|
|||||||
Reference in New Issue
Block a user