A role-aware campus activity platform for discovering clubs, managing events, and tracking registrations.
CampusConnect pairs a Spring Boot REST API with a responsive browser client. Students can explore and join activities, club managers can organize events, and administrators can inspect platform activity from role-specific dashboards.
- Search clubs and browse upcoming events.
- Register for events and review or cancel registrations.
- Create clubs and events as a manager, then inspect participant lists.
- Manage users and view aggregate statistics as an administrator.
- Explore the API through generated OpenAPI documentation.
- Start with representative in-memory data—no database setup required.
flowchart LR
Browser[Static web client] -->|JSON over HTTP| Controllers[Spring MVC controllers]
Controllers --> Services[Role-aware services]
Services --> Repositories[Spring Data JPA]
Repositories --> H2[(In-memory H2)]
Controllers --> OpenAPI[Swagger UI]
You need Java 17+ and Maven 3.9+.
git clone https://github.com/kofdarelli/CampusConnect.git
cd CampusConnect
mvn spring-boot:runOpen http://localhost:8081. API documentation is available at http://localhost:8081/swagger-ui.html, and the H2 console is at http://localhost:8081/h2-console using jdbc:h2:mem:campusconnect.
To build the runnable JAR instead:
mvn clean package
java -jar target/campusconnect-0.0.1-SNAPSHOT.jarThese credentials are seeded only for local demonstration:
| Role | Username | Password |
|---|---|---|
| Administrator | admin |
admin123 |
| Manager | alex.manager |
password |
| Manager | ryan.manager |
password |
| Student | lina.student |
password |
| Student | jad.student |
password |
| Student | john |
password |
Important
Authentication and authorization are demonstration-grade. Role identifiers are checked in the service layer, but the application does not yet use Spring Security, hashed passwords, or production sessions. Do not deploy it with real user data as-is.
| Capability | Endpoint |
|---|---|
| Login | POST /api/auth/login |
| Search clubs | GET /api/clubs?q= |
| Browse events | GET /api/events?clubId=&date=&keyword= |
| Create an event | POST /api/clubs/{clubId}/events?managerId= |
| Register for an event | POST /api/events/{id}/register |
| View registrations | GET /api/students/{studentId}/registrations |
| List users | GET /api/admin/users?adminId= |
| View statistics | GET /api/admin/stats?adminId= |
Swagger UI documents the full request and response surface while the app is running.
| Layer | Choice |
|---|---|
| Runtime | Java 17 |
| API | Spring Boot 3.2, Spring MVC, Bean Validation |
| Persistence | Spring Data JPA, H2 |
| API reference | SpringDoc OpenAPI |
| Client | HTML, CSS, and vanilla JavaScript |
| Build | Maven |
src/main/java/com/campusconnect/
├── controller/ REST endpoints
├── dto/ Request and response models
├── model/ JPA entities and roles
├── repository/ Spring Data repositories
└── service/ Business rules and role checks
src/main/resources/
├── static/ Browser client
└── application.properties
mvn verifyCI runs the same Maven verification on every push and pull request to main.
Read CONTRIBUTING.md before opening a pull request. Use the issue forms for reproducible bugs and focused feature proposals. Please report security concerns privately as described in SECURITY.md.
CampusConnect is available under the MIT License.
