Nestify is a full-stack PG (Paying Guest) Management System built with Spring Boot backend and React frontend. It enables PG owners (admins) to manage rooms, tenants, payments, and complaints, while tenants can browse available PGs, track payments, and raise complaints — all through a modern web interface.
Login • Tenant Dashboard • Find PG (Tenant view) • Admin Dashboard • Room Management • PG Listing Form (Admin)
Full documentation is available in the Project Wiki, including:
- Getting Started — setup & run instructions
- Architecture — tech stack & system design
- Features — full feature list
- API Reference — REST endpoints
- Roadmap — planned enhancements
- Contributing — how to contribute
- FAQ — troubleshooting
- Automate PG management operations via a web application
- Implement secure JWT-based authentication and authorization
- Role-based access for Admin and Tenant
- Build a scalable REST API backend with React frontend
- JWT-based secure login
- Role-based access control (ADMIN / TENANT)
- BCrypt password encryption
- Add, update, delete rooms
- Track room availability
- Assign rooms to tenants
- Register and manage tenants
- View tenant details
- Track rent payments
- Mark payments as paid
- Filter pending payments
- Tenants can raise complaints
- Admin can update complaint status (OPEN → IN_PROGRESS → RESOLVED)
- Admin can register their PG listing with photos, price, rules and contact
- Tenants can browse and search available PGs by city or name
- Java 21
- Spring Boot 3.2
- Spring Security + JWT
- Spring Data JPA / Hibernate
- MySQL
- Maven
- React 18 (Vite)
- Tailwind CSS
- Axios
- React Router DOM
nestify-pg-management/ ├── src/main/java/com/nestify/pg/ │ ├── config/ → SecurityConfig (JWT filter, role rules), CorsConfig (env-based origins) │ ├── controller/ → REST API endpoints (Auth, Room, Tenant, Complaint, Payment, PgListing) │ ├── entity/ → JPA entities (User, Room, Tenant, Complaint, Payment, PgListing, Role) │ ├── repository/ → Spring Data JPA repositories │ ├── service/ → Business logic (incl. PgListingService) │ ├── exception/ → GlobalExceptionHandler (centralized error responses) │ └── util/ → JwtUtil (token generate/validate) ├── src/main/resources/ │ └── application.properties ├── frontend/ │ ├── src/ │ │ ├── pages/ → React pages │ │ ├── assets/ → Static assets │ │ ├── api.js → Axios client │ │ └── AuthContext.jsx → JWT auth state │ └── vite.config.js ├── .env.example → Environment variable template ├── .gitignore └── pom.xml
React Frontend (port 5173)
↓ HTTP/REST
Spring Boot Backend (port 8080)
↓ JPA
MySQL Database
- Clone the repository:
git clone https://github.com/prashantpiyush1111/Nestify-PG-Management-System.git- Open in Eclipse or IntelliJ
- Configure MySQL in
src/main/resources/application.properties:
spring.datasource.url=jdbc:mysql://localhost:3306/nestify_db
spring.datasource.username=root
spring.datasource.password=yourpassword- Run as Spring Boot App (port 8080)
cd frontend
npm install
npm run devOpen: http://localhost:5173
| Role | Username | Password |
|---|---|---|
| Admin | admin | admin123 |
| Tenant | tenant1 | tenant123 |
- Email/SMS notifications
- Payment gateway integration
- Google Maps integration for PG location
- Image upload via Cloudinary or S3
- Mobile app using React Native
Prashant Maurya B.Tech CSE | IEC College of Engineering and Technology GitHub: @prashantpiyush1111
MIT License





