EstateFlow is a full-stack web application designed to simplify property discovery, listing management, and user communication within a unified platform.
Built as part of an internship project, this system demonstrates a production-oriented architecture using Spring Boot (backend) and React + Vite (frontend), with secure authentication and role-based access control.
EstateFlow enables:
- Property owners to list and manage properties
- Tenants to explore listings and connect with owners
- Secure communication through an internal messaging system
- Personalized experience via favorites and role-based features
This project reflects real-world system design principles including:
- RESTful API architecture
- JWT-based authentication
- Modular frontend structure
- Scalable backend design
EstateFlow/
โ
โโโ backend/ # Spring Boot REST API
โโโ frontend/ # React + Vite application
โโโ docs/ # Architecture & planning
โโโ postman/ # API testing collection
โโโ README.md
- Java
- Spring Boot
- Spring Security
- JWT Authentication
- Spring Data JPA
- MySQL
- Lombok
- React
- Vite
- JavaScript
- Tailwind CSS
- Axios
- React Router
- Git
- Postman
- Docker (planned)
- JWT-based authentication
- Stateless session management
- BCrypt password hashing
- Role-based authorization (OWNER / TENANT)
- Protected API endpoints via Spring Security
- User logs in โ
/api/auth/login - Server returns JWT token
- Token stored on client
- Token attached in requests:
Authorization: Bearer <token>
- Backend validates token and sets user context
- Browse properties
- Register / Login
- Search properties
- Add to favorites
- Send messages
- Create listings
- Manage properties
- Receive messages
- Registration & login
- JWT authentication
- Profile management
- Input validation
- Create / update / delete listings
- Pagination support
- Owner-specific property management
- Search filters (location, price, type)
- Add/remove favorites
- Personalized property list
- Send messages to property owners
- Inbox & sent messages
- Conversation threads
- Read/unread status
- Upload property images
- File validation (type + size)
- Static file serving
src/
โ
โโโ api/ # Axios config
โโโ services/ # API service layer
โโโ context/ # Auth state management
โโโ hooks/ # Custom hooks
โโโ components/ # Reusable UI
โโโ pages/ # Application views
โโโ routes/ # Routing config
โ
โโโ App.jsx
โโโ main.jsx
- Centralized API handling via Axios
- Context-based authentication state
- Protected routes with role validation
- Component-driven UI structure
Supported filters:
- Location
- Price range
- Property type
Endpoints:
GET /api/properties/search/location
GET /api/properties/search/price
GET /api/properties/search/type
git clone <repository-url>
cd backendCREATE DATABASE estateflow;Update credentials in application.properties
mvn spring-boot:runServer:
http://localhost:8080
cd frontend
npm install
npm run devFrontend:
http://localhost:5173
Postman collection included:
postman/estateflow-api.postman_collection.json
- Register user
- Login user
- Create property
- Fetch properties
- Add favorite
- Send message
- JWT Authentication
- Role-based access control
- Property listing & management
- Image uploads
- Messaging system
- Favorites system
- Pagination & filtering
- Protected frontend routes
This project functions as a complete full-stack MVP for a property marketplace.
- Real-time chat (WebSocket)
- Notification system
- Advanced filtering (combined queries)
- Admin dashboard
- Cloud storage for images (S3 / Cloudinary)
- Dockerized deployment
Omkar Kadam BCA Student โ MSU Vadodara Aspiring Full Stack Developer