EDU_Recommender / server /src /routes.js
Omarrran's picture
Add EduRecommender HuggingFace Spaces app
5bd3663
/**
* API route definitions.
*
* GET /api/health β€” liveness probe
* GET /api/content β€” full content catalogue
* GET /api/users β€” mock user profiles
* POST /api/recommend β€” personalised top-3 recommendations
*/
import { Router } from "express";
import { CONTENT_ITEMS, USER_PROFILES } from "./data.js";
import { recommend } from "./recommender.js";
export const apiRouter = Router();
// ---------------------------------------------------------------------------
// Health
// ---------------------------------------------------------------------------
apiRouter.get("/health", (_req, res) => {
res.json({ status: "ok" });
});
// ---------------------------------------------------------------------------
// Content catalogue
// ---------------------------------------------------------------------------
apiRouter.get("/content", (_req, res) => {
res.json(CONTENT_ITEMS);
});
// ---------------------------------------------------------------------------
// User profiles
// ---------------------------------------------------------------------------
apiRouter.get("/users", (_req, res) => {
res.json(USER_PROFILES);
});
// ---------------------------------------------------------------------------
// Recommend
// ---------------------------------------------------------------------------
apiRouter.post("/recommend", async (req, res) => {
try {
const profile = req.body;
if (!profile.goal || !profile.interest_tags?.length) {
return res.status(400).json({
error: "A learning goal and at least one interest tag are required.",
});
}
const result = await recommend(profile);
res.json(result);
} catch (err) {
console.error("[recommend]", err.message);
res.status(500).json({ error: "Recommendation pipeline failed." });
}
});