A comprehensive full-stack property management system built with Java Spring Boot and modern web technologies
- π― Overview
- β¨ Features
- π οΈ Technology Stack
- π Quick Start
- π Project Structure
- π¨ Design Patterns
- π Demo Accounts
- π API Documentation
- πΌοΈ Screenshots
- π₯ Team
- π License
This Property Management System is a comprehensive full-stack web application designed to streamline property sales, rentals, and management processes. Built as a university project, it demonstrates enterprise-level Java development practices, design patterns, and modern web technologies.
- ποΈ Full-Stack Architecture: Java Spring Boot backend with vanilla JavaScript frontend
- π Role-Based Security: Multi-role user system with Spring Security
- π± Responsive Design: Modern UI with CSS Grid and Flexbox
- π¨ Design Patterns: Implementation of 5 key design patterns
- ποΈ Robust Database: MySQL with proper relationships and constraints
- π§ Email Notifications: Automated email system for important events
- Multi-Role System: BUYER, SELLER, RENTER, AGENT, ADMIN
- Secure Authentication: BCrypt password encryption
- Profile Management: User registration, login, and profile updates
- Demo Accounts: Pre-configured accounts for testing
- Dual Property Types: Support for both sales and rentals
- Advanced Search: Filter by location, price, type, and status
- Image Management: Upload and manage property images
- Status Tracking: AVAILABLE, SOLD, RENTED, MAINTENANCE
- Seller Dashboard: Manage your property listings
- Appointment Scheduling: Book property visits with date/time selection
- Conflict Detection: Automatic detection of booking conflicts
- Status Management: PENDING, CONFIRMED, CANCELLED
- Multi-User Views: Different views for buyers and sellers
- Agreement Creation: Create and manage rental agreements
- Status Tracking: ACTIVE, EXPIRED, TERMINATED
- Extension System: Extend existing rental agreements
- Expiration Monitoring: Track expiring agreements
- Property Inquiries: Send and manage property inquiries
- Offer System: Submit, accept, reject, or counter offers
- Status Tracking: OPEN, RESOLVED, ARCHIVED for inquiries
- Email Notifications: Automated notifications for important events
- Java 21 - Latest LTS version with modern features
- Spring Boot 3.2.0 - Rapid application development framework
- Spring Security - Authentication and authorization
- Spring Data JPA - Database operations and ORM
- MySQL 8.0+ - Relational database management
- Maven - Dependency management and build tool
- HTML5 - Semantic markup and modern structure
- CSS3 - Advanced styling with Grid and Flexbox
- Vanilla JavaScript - ES6+ features and modern syntax
- Fetch API - RESTful API communication
- MySQL - Primary database
- JPA/Hibernate - Object-relational mapping
- Foreign Key Constraints - Data integrity
- Enum Types - Status management
- JDK 21 or higher
- MySQL 8.0 or higher
- Maven 3.6 or higher
- Git for version control
-
Clone the repository
git clone https://github.com/your-username/property-management-system.git cd property-management-system -
Setup MySQL Database
CREATE DATABASE property_sales_db;
-
Configure Database Connection
Update
src/main/resources/application.properties:spring.datasource.url=jdbc:mysql://localhost:3306/property_sales_db?createDatabaseIfNotExist=true spring.datasource.username=your_username spring.datasource.password=your_password
-
Run the Application
mvn spring-boot:run
-
Access the Application
- Open your browser to
http://localhost:8080 - Use demo accounts or register new users
- Open your browser to
property-management-system/
βββ π src/main/java/com/university/propertysales/
β βββ π entity/ # JPA entities
β β βββ User.java
β β βββ Property.java
β β βββ Booking.java
β β βββ RentalAgreement.java
β β βββ Inquiry.java
β β βββ Offer.java
β βββ π repository/ # Data repositories
β βββ π service/ # Business logic
β βββ π controller/ # REST controllers
β βββ π dto/ # Data Transfer Objects
β βββ π mapper/ # Entity-DTO mappers
β βββ π config/ # Configuration classes
β βββ π pattern/ # Design patterns
β βββ π factory/ # Factory Method Pattern
β βββ π singleton/ # Singleton Pattern
β βββ π decorator/ # Decorator Pattern
β βββ π observer/ # Observer Pattern
β βββ π strategy/ # Strategy Pattern
βββ π src/main/resources/
β βββ π static/ # Frontend files
β β βββ π css/ # Stylesheets
β β βββ π js/ # JavaScript files
β β βββ *.html # HTML pages
β βββ application.properties # Configuration
βββ π database/ # Database scripts
β βββ schema.sql # Database schema
β βββ migration_add_images.sql # Image support migration
βββ π uploads/ # File uploads
βββ π README.md # This file
This project demonstrates the implementation of 5 key design patterns:
- Location:
pattern/factory/ - Purpose: Creates different notification types
- Implementation:
NotificationFactorywith Email, SMS, Push, In-App notifications
- Location:
pattern/singleton/EmailConfiguration.java - Purpose: Single email configuration instance
- Features: Thread-safe, prevents cloning/deserialization
- Location:
pattern/decorator/ - Purpose: Dynamically adds features to property descriptions
- Components: Basic property + decorators (Premium Location, Luxury Amenities, Furnished)
- Location:
pattern/observer/ - Purpose: Notifies observers when property status changes
- Observers: Email notifications, audit logs, market updates
- Location:
pattern/strategy/ - Purpose: Different pricing calculation algorithms
- Strategies: Standard, Premium, Discount pricing
# Test all patterns
GET /api/design-patterns/demo?propertyId=1
# Test individual patterns
GET /api/design-patterns/demo/factory
GET /api/design-patterns/demo/singleton
GET /api/design-patterns/demo/decorator
GET /api/design-patterns/demo/observer?propertyId=1
GET /api/design-patterns/demo/strategy?propertyId=1| Role | Username | Password | Description |
|---|---|---|---|
| π Admin | admin |
admin123 |
Full system access |
| π Seller | seller |
seller123 |
Property management |
| π Buyer | buyer |
buyer123 |
Property browsing and booking |
| π€ Agent | agent |
agent123 |
Property agent access |
POST /api/users/register # Register new user
POST /api/users/login # User login
GET /api/users/{id} # Get user by ID
PUT /api/users/{id} # Update userGET /api/properties # List all properties (with filters)
POST /api/properties # Create property
GET /api/properties/{id} # Get property details
PUT /api/properties/{id} # Update property
DELETE /api/properties/{id} # Delete property
POST /api/properties/upload # Upload property imagesPOST /api/bookings # Create booking
GET /api/bookings/buyer/{buyerId} # Get bookings by buyer
PUT /api/bookings/{id}/status # Update booking statusPOST /api/rentals # Create rental agreement
GET /api/rentals/tenant/{tenantId} # Get agreements by tenant
PATCH /api/rentals/{id}/extend # Extend agreement
GET /api/rentals/expiring # Get expiring agreementsPOST /api/inquiries # Create inquiry
GET /api/inquiries/sender/{senderId} # Get inquiries by sender
PATCH /api/inquiries/{id}/status # Update inquiry statusPOST /api/offers # Create offer
POST /api/offers/{id}/accept # Accept offer
POST /api/offers/{id}/counter # Counter offer
GET /api/offers/buyer/{buyerId} # Get offers by buyerThis project serves as an excellent example of:
- Enterprise Java Development with Spring Boot
- Design Pattern Implementation in real-world scenarios
- Full-Stack Web Development with modern technologies
- Database Design with proper relationships
- RESTful API Development with comprehensive endpoints
- Security Implementation with Spring Security
- Modern Frontend Development with responsive design
- IntelliJ IDEA (recommended) or Eclipse
- Spring Boot plugin for IDE
- MySQL Workbench for database management
- Follow Java naming conventions
- Use Spring Boot best practices
- Implement proper error handling
- Write comprehensive comments
- Email Notifications - Automated email system
- File Upload - Property image management
- Advanced Search - Map integration and filters
- Payment Integration - Online payment processing
- Mobile App - React Native or Flutter
- Real-time Chat - WebSocket implementation
- Analytics Dashboard - Property statistics
- API Documentation - Swagger/OpenAPI integration
Project Group 2025-Y2-S1-MLB-B7G2-01
| Name | IT Number |
|---|---|
| Pathirana P.M.K.H | IT24101797 |
| Wathuthanthiri W.M.R.V | IT24101677 |
| Maddegoda M.V.S | IT24101739 |
| Dissanayake D.M.N.T | IT24102280 |
| Gunasinghe N.A.L | IT24101721 |
- Backend Development: Java Spring Boot, MySQL, REST APIs
- Frontend Development: HTML5, CSS3, JavaScript ES6+
- Database Design: MySQL schema and relationships
- Design Patterns: Implementation of 5 key patterns
- Documentation: Comprehensive project documentation
This project is developed as a university assignment and is for educational purposes.



