# Campus Catalog ## Purpose The database is the source of truth for campus records. Runtime frontend code must not ship campus rows as constants. ## Backend Contract Public read-only campus catalog: - `GET /api/public/campuses` Response shape: ```json { "rows": [ { "id": "campus uuid", "name": "Tigers Campus", "code": "tigers", "mascot": "Tigers", "color": "bg-orange-500", "bgGradient": "from-orange-500 to-amber-500", "borderColor": "border-orange-500/30", "textColor": "text-orange-400", "bgLight": "bg-orange-500/10", "description": "Strength, courage & determination", "isOnline": false } ], "count": 1 } ``` Only active campuses are returned. The endpoint is intentionally read-only and does not replace the authenticated `/api/campuses` CRUD workflow. Campus identity, names, codes, mascot labels, online flag, descriptions, and branding tokens are campus data and belong in the `campuses` table. ## Seed Data Initial product campuses are seeded by: - `backend/src/db/seeders/20260608100000-product-campuses.js` The deleted generated sample-data seeder must not be reintroduced. Development or test-only rows belong in backend seeders or backend test fixtures, not frontend runtime constants.