Student Equipment Reservation Tool

Java backend and React frontend with admin CSV import for bulk records, validation, and role-based reservation flows.

JavaSpringReactJWTMariaDB

Overview

This app solves a practical scheduling problem for student organizations sharing limited gear. I focused on making checkout and return actions straightforward for users while giving administrators stronger controls for inventory and data quality. The main engineering challenge was handling bulk record imports safely without corrupting existing reservations.

Highlights

  • Created reservation workflows with guardrails for availability and conflicting bookings.
  • Built an admin CSV import path with field validation and row-level error feedback.
  • Implemented role-based flows for student users versus administrative staff.
  • Connected React UI states to backend validation responses for faster correction.

Architecture

  • Spring API layer handles reservation rules, status transitions, and persistence.
  • React frontend uses form-driven pages for reservation creation and management.
  • JWT-secured endpoints enforce role checks at both route and service layers.
  • MariaDB stores reservations, equipment inventory, and user-role associations.

Key Learnings

  • CSV ingestion pipelines need clear validation ordering and actionable errors.
  • Availability logic is easier to trust when modeled as explicit state transitions.
  • Good admin UX matters as much as end-user UX in operations-heavy systems.
  • Shared contract types reduce frontend-backend mismatch defects.

Outcomes

  • Primary users: Students and department admins
  • Bulk ingest: CSV import with per-row validation feedback