Campus bike rental platform with a React frontend and Spring Boot backend. The system supports rider and admin workflows including authentication, fleet operations, rental lifecycle management, payments, debt tracking, and audit logging.
- Authentication and authorization
- Bike fleet management
- Rental lifecycle (immediate/reserved)
- Payment and debt handling
- Admin monitoring and audit logs
- Live tracking and map-assisted UX
- Rider: browse/rent/return bikes, manage profile, pay outstanding balances
- Admin: manage bikes, users, payment/debt visibility, and audit operations
- Frontend: React + Vite SPA
- Backend: Spring Boot REST API
- Database: PostgreSQL with Flyway migrations
- Deployment: Render (frontend + backend), GitHub Actions CI/CD
.
├── backend/ # Spring Boot backend service
│ ├── src/main/java/...
│ ├── src/main/resources/
│ └── README.md
├── frontend/ # React + Vite frontend service
│ ├── src/
│ ├── public/
│ └── README.md
├── docker-compose.yml # Local full-stack compose (frontend/backend/db)
├── render.yaml # Render blueprint for production services
└── .github/workflows/ci-cd.yml
- Java 21 / Spring Boot 3.3.x
- Spring Security with token auth filter
- JPA + Flyway + PostgreSQL
- Domain modules: auth, user, bike, rental, payment, notification, audit
Backend details:
- See
backend/README.md
- React 19 / Vite 7
- Zustand state management
- Axios API client
- React Router and Leaflet maps
Frontend details:
- See
frontend/README.md
docker compose up -d --buildLocal URLs:
- Frontend:
http://localhost:5173 - Backend API:
http://localhost:8080 - Health via frontend proxy:
http://localhost:5173/api/health
Backend:
cd backend
./mvnw spring-boot:runFrontend:
cd frontend
npm ci
npm run devThe project is deployed with two Render web services:
bike-rental-backendusingbackend/Dockerfilebike-rental-frontendusingfrontend/Dockerfile
Backend service:
SPRING_PROFILES_ACTIVE=prodDB_URL=jdbc:postgresql://<host>:5432/<db>DB_USERNAME=<username>DB_PASSWORD=<password>
Frontend service:
API_UPSTREAM=bike-rental-backend:8080
Workflow:
.github/workflows/ci-cd.yml
Pipeline behavior:
- Build and verify backend
- Build frontend
- Validate deploy hook secrets
- Trigger Render deploy hooks for frontend and backend on push to
main
Required repository secrets:
RENDER_FRONTEND_DEPLOY_HOOK_URLRENDER_BACKEND_DEPLOY_HOOK_URL
After deployment:
- Open frontend domain root (
/) - Verify API health through frontend proxy (
/api/health) - Confirm login, bike browse, and rental flow
- Render free tier can sleep when idle.
- Keep migration scripts as source of truth for schema changes.
- For architecture deep-dives, use
backend/README.mdandfrontend/README.md.