CampusCore is a production-like university operations platform built as a release-verified microservices portfolio. It brings together a Next.js product shell, NestJS domain services, bilingual UX, student payments, operator observability, and Kubernetes handoff assets without changing the public auth/session contract.
Live domain note:
https://tienson.io.vnis Cloudflare-managed. It resolves to CampusCore only when a production origin or the documented Cloudflare Tunnel/local edge is running. If the domain is unavailable, use the local edge workflow in docs/CLOUDFLARE.md or run the stack locally from the commands below.
- Current release:
v1.4.1 - Release notes: docs/releases/v1.4.1.md
- Published topology: 9 images across GHCR and Docker Hub
- Verification posture: CI quality gate, CD publish, manifest verification, image smoke, edge E2E, and security scan
core-api: audit logs, finance-context, compatibility shadow, public healthauth-service: auth, sessions, users, roles, permissions, JWT cookie + CSRF contractnotification-service: inbox, unread count, websocket/notificationsfinance-service: invoices, payments, scholarships, finance eventsacademic-service: public academic APIs and academic master dataengagement-service: announcements and support ticketspeople-service: public owner ofstudentsandlecturersanalytics-service: public owner of/api/v1/analytics/*frontend: Next.js 15 standalone runtimenginx: single public edge
Frontend-facing paths stay stable:
/api/v1/students/*->people-service/api/v1/lecturers/*->people-service/api/v1/notifications/*,/socket.io/*->notification-service/api/v1/finance/*->finance-service- public academic routes ->
academic-service - announcements and support tickets ->
engagement-service /api/v1/analytics/*->analytics-service/api/v1/auth/*,/api/v1/users/*,/api/v1/roles/*,/api/v1/permissions/*->auth-service/health->core-api
Not public:
/internal/*/api/v1/internal/*- internal readiness endpoints
Browser auth contract:
cc_access_tokencc_refresh_tokencc_csrfX-CSRF-Token
Legacy bearer support remains for compatibility.
The canonical internal service paths are:
/api/v1/internal/academic-context/*/api/v1/internal/auth-context/*/api/v1/internal/finance-context/*
All backend services now share packages/platform-auth as the internal source of truth for:
cc_access_token,cc_refresh_token,cc_csrfX-CSRF-TokenX-Service-TokenX-Health-Key- shared cookie helpers, JWT claim normalization, and auth wrappers
These routes are service-to-service only and require X-Service-Token.
- Branch pushes run CI only
- Public registries publish only from
vX.Y.Ztags latestmoves only with a semver release
Current public images:
campuscore-backendcampuscore-auth-servicecampuscore-notification-servicecampuscore-finance-servicecampuscore-academic-servicecampuscore-engagement-servicecampuscore-people-servicecampuscore-analytics-servicecampuscore-frontend
- Runtime inventory:
node scripts/run-container-inventory.mjs - Cloudflare/local edge handoff: docs/CLOUDFLARE.md
- README.md
- README.vi.md
- docs/releases/TEMPLATE.md
- docs/releases/v1.4.1.md
- k8s/README.md
- docs/ARCHITECTURE.md
- docs/OPERATIONS.md
- docs/SECURITY.md
- docs/RELEASE.md
- DOCKER_HUB.md
