How souptik-mu/fsp_project works
Purpose and Entry Points
This is a full-stack PG (paying-guest accommodation) discovery and management system. The Spring Boot backend exposes domain APIs for authentication, PG listings, amenities, reviews, favorites, search, recommendations, users, and administration. The Vite/React frontend currently has a minimal single-page entry and home page.
• Backend bootstrap: backend/src/main/java/com/example/backend/BackendApplication.java
• Frontend bootstrap: frontend/src/main.jsx, frontend/src/App.jsx
• Initial UI route/content: frontend/src/pages/Home.jsx
HTTP/API Layer
Controllers form the backend’s external boundary and route client requests into domain services. Separate controllers indicate distinct API surfaces for identity, listing lifecycle, user interactions, discovery, and administrative operations.
• Listing APIs: backend/src/main/java/com/example/backend/controllers/PGController.java
• Identity/admin APIs: backend/src/main/java/com/example/backend/controllers/AuthController.java, backend/src/main/java/com/example/backend/controllers/AdminController.java
• Discovery/engagement APIs: backend/src/main/java/com/example/backend/controllers/SearchController.java, backend/src/main/java/com/example/backend/controllers/RecommendationController.java, backend/src/main/java/com/example/backend/controllers/FavouriteController.java
Core Accommodation Domain
PG is the central persisted listing entity. Its associated amenity mapping, user favorites, and reviews model the primary tenant-facing listing experience. Request/response DTOs establish an API boundary around listing mutation and representation.
• Core entities: backend/src/main/java/com/example/backend/entity/PG.java, backend/src/main/java/com/example/backend/entity/PGAmenity.java, backend/src/main/java/com/example/backend/entity/Amenity.java
• Listing API models: backend/src/main/java/com/example/backend/DTO/request/CreatePG.java, backend/src/main/java/com/example/backend/DTO/request/UpdatePG.java, backend/src/main/java/com/example/backend/DTO/response/PGResponse.java
• Listing orchestration: backend/src/main/java/com/example/backend/service/PGService.java
Identity and Authorization Domain
Users have persisted identity and role state; authentication logic is isolated behind a service and controller. Role, gender, food, and room-type enums constrain key business attributes rather than leaving them as unrestricted values.
• Identity components: backend/src/main/java/com/example/backend/entity/User.java, backend/src/main/java/com/example/backend/service/AuthService.java, backend/src/main/java/com/example/backend/service/UserService.java
• Authorization/domain enums: backend/src/main/java/com/example/backend/enums/Role.java, backend/src/main/java/com/example/backend/enums/Gender.java
• User response boundary: backend/src/main/java/com/example/backend/DTO/response/UserResponse.java
Engagement and Discovery Flow
A typical consumer flow is: authenticate or identify a user; search/browse PGs; retrieve recommendations; inspect amenity details and reviews; then create or remove favorites. Controllers delegate to services, which access repositories for persistence.
• Engagement records/services: backend/src/main/java/com/example/backend/entity/Favorite.java, backend/src/main/java/com/example/backend/entity/Review.java, backend/src/main/java/com/example/backend/service/FavouriteService.java
• Discovery endpoints: backend/src/main/java/com/example/backend/controllers/SearchController.java, backend/src/main/java/com/example/backend/controllers/RecommendationController.java
• Review handling: backend/src/main/java/com/example/backend/controllers/ReviewController.java, backend/src/main/java/com/example/backend/service/ReviewService.java
Persistence Boundary
Spring Data-style repository interfaces isolate database access from services. The object model covers users, listings, amenities and their associations, reviews, and favorites.
• Principal repositories: backend/src/main/java/com/example/backend/repository/PGRepository.java, backend/src/main/java/com/example/backend/repository/UserRepository.java, backend/src/main/java/com/example/backend/repository/ReviewRepository.java
• Relationship repositories: backend/src/main/java/com/example/backend/repository/PGAmenityRepository.java, backend/src/main/java/com/example/backend/repository/FavouriteRepository.java
Runtime and Infrastructure
The backend is a Maven-managed Java/Spring Boot process, configured through application properties; its database/provider and authentication mechanism cannot be determined from the supplied tree. The frontend is a Node-based Vite React application and is expected to communicate with backend HTTP endpoints.
• Backend build/runtime configuration: backend/pom.xml, backend/src/main/resources/application.properties
• Frontend runtime/build configuration: frontend/package.json, frontend/vite.config.js
Components 18
React frontend
- Vite React app
frontend/src/main.jsx - Home page · Current initial single-page content.
frontend/src/pages/Home.jsx
Spring HTTP API
- Spring Boot app
backend/src/main/java/com/example/backend/BackendApplication.java - Listing API
backend/src/main/java/com/example/backend/controllers/PGController.java - Identity & admin API
backend/src/main/java/com/example/backend/controllers/AuthController.java - Discovery API · Search and recommendation endpoints.
backend/src/main/java/com/example/backend/controllers/SearchController.java - Engagement API · Favorites and reviews endpoints.
backend/src/main/java/com/example/backend/controllers/FavouriteController.java
Application services
- PG service · Orchestrates listing lifecycle and API models.
backend/src/main/java/com/example/backend/service/PGService.java - Auth & user services
backend/src/main/java/com/example/backend/service/AuthService.java - Discovery logic
- Favorites & reviews
backend/src/main/java/com/example/backend/service/FavouriteService.java
Persistence
- PG & amenities · Central accommodation listing and amenity association.
backend/src/main/java/com/example/backend/entity/PG.java - Users & roles · Persisted identity with constrained role and profile attributes.
backend/src/main/java/com/example/backend/entity/User.java - Favorites & reviews
backend/src/main/java/com/example/backend/entity/Favorite.java - PG repository
backend/src/main/java/com/example/backend/repository/PGRepository.java - User repository
backend/src/main/java/com/example/backend/repository/UserRepository.java - Engagement repositories · Review, favorite, and PG-amenity persistence.
backend/src/main/java/com/example/backend/repository/ReviewRepository.java
Other components
- Database · Provider is not specified.
Connections 20
- Vite React app → Home page: renders
- Vite React app → Spring Boot app: HTTP API calls
- Spring Boot app → Listing API: serves
- Spring Boot app → Identity & admin API: serves
- Spring Boot app → Discovery API: serves
- Spring Boot app → Engagement API: serves
- Listing API → PG service: delegates
- Identity & admin API → Auth & user services: delegates
- Discovery API → Discovery logic: delegates
- Engagement API → Favorites & reviews: delegates
- PG service → PG repository: reads and writes
- Auth & user services → User repository: reads and writes
- Discovery logic → PG repository: queries listings
- Favorites & reviews → Engagement repositories: reads and writes
- PG repository → PG & amenities: persists
- User repository → Users & roles: persists
- Engagement repositories → Favorites & reviews: persists
- PG & amenities → Database: stored in
- Users & roles → Database: stored in
- Favorites & reviews → Database: stored in