diff --git a/api/app.js b/api/app.js index be1c1d7..0e483f1 100644 --- a/api/app.js +++ b/api/app.js @@ -5,6 +5,7 @@ const cors = require('cors'); const swaggerUi = require('swagger-ui-express'); const YAML = require('yamljs'); const path = require('path'); +const favicon = require('serve-favicon'); // Import middleware const { requestIdMiddleware } = require('./middleware/requestId'); @@ -22,6 +23,9 @@ const app = express(); // Request ID middleware (must be first) app.use(requestIdMiddleware); +// Favicon middleware +app.use(favicon(path.join(__dirname, 'favicon.ico'))); + // Global rate limiting middleware // Limits each IP to 1000 requests per 15 minutes app.use(rateLimitMiddleware); diff --git a/api/favicon.ico b/api/favicon.ico new file mode 100644 index 0000000..8a93757 Binary files /dev/null and b/api/favicon.ico differ diff --git a/api/package-lock.json b/api/package-lock.json index de530d8..43075ff 100644 --- a/api/package-lock.json +++ b/api/package-lock.json @@ -17,6 +17,7 @@ "express-rate-limit": "^8.2.1", "morgan": "^1.10.1", "pg": "^8.16.3", + "serve-favicon": "^2.5.1", "swagger-ui-express": "^5.0.1", "yamljs": "^0.3.0" }, @@ -7233,6 +7234,48 @@ "node": ">= 0.8" } }, + "node_modules/serve-favicon": { + "version": "2.5.1", + "resolved": "https://registry.npmjs.org/serve-favicon/-/serve-favicon-2.5.1.tgz", + "integrity": "sha512-JndLBslCLA/ebr7rS3d+/EKkzTsTi1jI2T9l+vHfAaGJ7A7NhtDpSZ0lx81HCNWnnE0yHncG+SSnVf9IMxOwXQ==", + "license": "MIT", + "dependencies": { + "etag": "~1.8.1", + "fresh": "~0.5.2", + "ms": "~2.1.3", + "parseurl": "~1.3.2", + "safe-buffer": "~5.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/serve-favicon/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/serve-favicon/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/serve-static": { "version": "1.16.2", "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", diff --git a/api/package.json b/api/package.json index 310fcd2..af5a7a2 100644 --- a/api/package.json +++ b/api/package.json @@ -29,6 +29,7 @@ "express-rate-limit": "^8.2.1", "morgan": "^1.10.1", "pg": "^8.16.3", + "serve-favicon": "^2.5.1", "swagger-ui-express": "^5.0.1", "yamljs": "^0.3.0" },