Campus Connect API
A university course project focused on the backend rules behind campus clubs and events, implemented as a documented Spring Boot REST API.
- Timeline
- November 2025
Technologies used
- Java 17
- Spring Boot
- Spring Data JPA
- H2
- SpringDoc OpenAPI
- Maven
The backend was the project
Campus Connect began as a university course project about helping students discover clubs and events. The interface was exploratory, so this entry focuses on the part I can stand behind: the Java API and the domain rules it encodes.
The service separates student, club manager, and administrator responsibilities across controllers and service classes. Students can discover clubs and events, join clubs, and register for events. Managers can maintain their clubs and event programmes. Administrators can review the system as a whole.
Turning campus activity into explicit contracts
The API is built with Java 17 and Spring Boot 3.2.5. Spring Web exposes the REST surface, Spring Data JPA handles persistence, Jakarta Validation guards request shapes, and SpringDoc generates an inspectable OpenAPI contract.
Seven controller groups cover users, authentication, clubs, events, registrations, notifications, and administration. That separation kept the HTTP layer readable while service classes owned rules such as membership uniqueness, event capacity, registration timing, and account state.
Rules before writes
Registration is more than inserting a row. The service checks that the student and event exist, that the account is active, that the event is still open, that capacity remains, and that the student has not already registered. Club membership follows the same pattern, with database constraints acting as a final guard against duplicates.
What the prototype proves
The project demonstrates a complete backend slice: relational entities, repository queries, service-level policy, REST controllers, validation, seeded data, generated documentation, and email notification hooks. Filterable event discovery supports optional club, date, and keyword parameters, while administrator statistics summarize the current prototype state.
What I would change next
This is still a course prototype, not a production authentication system. Password handling and client-supplied actor identifiers should be replaced with Spring Security, hashed credentials, and server-derived identities. Capacity enforcement should move into a transactional database operation to prevent concurrent registrations from exceeding a limit. I would also replace the in-memory database, queue outbound email, and add controller and service tests.
The repository link is intentionally withheld. The source history contains a provider credential that should be rotated and removed from history before the code is shared.
Tags
More University projects
University
AI Workflow DSL
A Python DSL and table-driven LL(1) parser for multi-agent workflows, with generated grammar docs and source-aware syntax errors.
University
AUBus Premium
A PyQt5 carpooling prototype for AUB students, backed by a threaded TCP server, SQLite ride matching, and live driver notifications.
Explore other projects
Mobile
Audiobooks for Android
A native Android audiobook library with offline downloads, persistent listening progress, and background playback.
Web
Dros
A local-first React study app that turns AI-generated and imported MCQs into repeatable practice with immediate feedback.
Web
Notion Study Reminder
A dependency-free Node.js service that turns a Notion study schedule into Beirut-time email reminders.