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:
Jp
2026-02-01 21:26:26 +08:00
parent f521970a65
commit 3dc74b6aa2
12 changed files with 81 additions and 23 deletions

9
.dockerignore Normal file
View File

@@ -0,0 +1,9 @@
node_modules
dist
data/*.db
.git
.gitignore
.env
Dockerfile
docker-compose.yml
README.md

21
Dockerfile Normal file
View 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"]

Binary file not shown.

View File

@@ -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;
}>; }>;
} }

View File

@@ -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: [],
};
} }
} }
}; };

View File

@@ -1 +1 @@
{"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,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAC5D,SAAS,CAAC,OAAO,EACjB,SAAS,CAAC,KAAK,EACf,SAAS,CAAC,GAAG,CACd,CAAC;YAEF,OAAO;gBACL,IAAI,EAAE,GAAG,CAAC,IAAI;gBACd,SAAS;gBACT,KAAK;gBACL,KAAK;gBACL,cAAc;gBACd,YAAY;gBACZ,SAAS;gBACT,gBAAgB;aACjB,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;YAUlD,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC;CACF,CAAA;AAzFY,kDAAmB;AASxB;IAFL,IAAA,YAAG,GAAE;IACL,IAAA,eAAM,EAAC,WAAW,CAAC;IACA,WAAA,IAAA,YAAG,GAAE,CAAA;IAAO,WAAA,IAAA,YAAG,GAAE,CAAA;;;;uDA+EpC;8BAxFU,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,CAyF/B"} {"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
View File

@@ -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
View File

@@ -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"}

File diff suppressed because one or more lines are too long

11
docker-compose.yml Normal file
View File

@@ -0,0 +1,11 @@
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
volumes:
- ./data:/app/data
environment:
- PORT=3000
- NODE_ENV=production

View File

@@ -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",

View File

@@ -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();