Interior is an e-commerce platform with a Spring Boot backend and a React frontend. The backend uses JWT authentication, MySQL at runtime, H2 for tests, Cloudinary for media when configured, and local file fallback for uploads when Cloudinary is not configured.
Interior/
├── backend/
│ └── interior/ # Spring Boot API
├── front/ # React + Vite frontend
└── README.md
The backend endpoints are documented in backend/interior/API_GUIDE.md.
- JWT Bearer authentication
- Role-based access control for
ADMINandSTAFF - User signup, signin, social signin placeholders, password reset, and email verification
- Product, category, banner, cart, address, and order management
- Variant and variant size management
- VNPay order flow placeholder endpoints
- Cloudinary upload support with local file fallback
cd backend/interior
./mvnw spring-boot:runOn Windows:
cd backend/interior
.\mvnw spring-boot:runcd backend/interior
./mvnw testThe backend runtime config is in backend/interior/src/main/resources/application.properties.
Important values:
spring.datasource.urlspring.datasource.usernamespring.datasource.passwordjwt.secretjwt.expirationcloudinary.cloud-namecloudinary.api-keycloudinary.api-secretspring.mail.usernamespring.mail.password
The frontend is in front/ and uses Vite. Point its API client to the backend base URL.
See backend/interior/API_GUIDE.md for the implemented endpoints, auth rules, and request payloads.
- Uploaded files fall back to the local
uploads/directory when Cloudinary is not configured. - Test context uses H2 and test-only credentials so the app can start without external services.