diff --git a/backend/src/middleware/docs.js b/backend/src/middleware/docs.js index f4ce6a6..bd6e188 100644 --- a/backend/src/middleware/docs.js +++ b/backend/src/middleware/docs.js @@ -1,50 +1,63 @@ const express = require("express"); const path = require("path"); -// applies a bunch of middleware +// Root paths +const PROJECT_ROOT = path.join(__dirname, "../../../.."); + +const PATHS = { + core: path.join(PROJECT_ROOT, "oseda-course"), + cli: path.join(PROJECT_ROOT, "oseda-cli"), + lib: path.join(PROJECT_ROOT, "oseda-lib"), +}; + +// Route → file mapping +const DOC_ROUTES = { + "/api/docs/overview": path.join(PATHS.core, "README.md"), + + "/api/docs/cli": path.join(PATHS.cli, "README.md"), + "/api/docs/cli/usage": path.join(PATHS.cli, "Usage.md"), + + "/api/docs/contributing/getting-started": path.join( + PATHS.core, + "docs/COURSE_CONTRIBUTING.md" + ), + "/api/docs/contributing/guidelines": path.join( + PATHS.core, + "docs/CODE_OF_CONDUCT.MD" + ), + + "/api/docs/core/frontend": path.join( + PATHS.core, + "frontend/README.md" + ), + "/api/docs/core/backend": path.join( + PATHS.core, + "backend/README.md" + ), + "/api/docs/core/readme": path.join( + PATHS.core, + "README.md" + ), + + "/api/docs/lib": path.join(PATHS.lib, "README.md"), +}; /** - * Statically serves all documentation endpoints + * Registers all documentation routes * @param {Express} server */ const serveDocs = (server) => { - const overviewReadmePath = path.join(__dirname, "../../../README.md"); - - server.use("/api/docs/overview", express.static(overviewReadmePath)); - - - - // mount the readme at the top level - const cliReadmePath = path.join(__dirname, "../../../../oseda-cli/README.md"); - server.use("/api/docs/cli/", express.static(cliReadmePath)) - - const cliUsagePath = path.join(__dirname, "../../../../oseda-cli/Usage.md"); - server.use("/api/docs/cli/usage", express.static(cliUsagePath)) - - - const courseContributing = path.join(__dirname, "../../../docs/COURSE_CONTRIBUTING.md"); - server.use("/api/docs/contributing/getting-started", express.static(courseContributing)) - - const codeOfConduct = path.join(__dirname, "../../../docs/CODE_OF_CONDUCT.MD"); - server.use("/api/docs/contributing/guidelines", express.static(codeOfConduct)); - - const frontendReadme = path.join(__dirname, "../../../frontend/README.md"); - server.use("/api/docs/core/frontend", express.static(frontendReadme)); - - const backendReadme = path.join(__dirname, "../../../backend/README.md"); - server.use("/api/docs/core/backend", express.static(backendReadme)); - - const coreReadme = path.join(__dirname, "../../../README.md"); - server.use("/api/docs/core/readme", express.static(coreReadme)); - - const libReadme = path.join(__dirname, "../../../../oseda-lib/README.md"); - server.use("/api/docs/lib", express.static(libReadme)); - - - -} - + Object.entries(DOC_ROUTES).forEach(([route, filePath]) => { + server.get(route, (req, res) => { + res.sendFile(filePath, (err) => { + if (err) { + res.status(err.status || 500).send("Error loading document"); + } + }); + }); + }); +}; module.exports = { - serveDocs -} \ No newline at end of file + serveDocs, +};