This real estate application is developed using .NET, SQL, and React.js. The application allows users to browse properties, subscribe to plans, chat with property owners, and rate properties. It supports various types of properties, including homes, shops, land, and PGs (Paying Guest accommodations).
- User Registration and Authentication: Users can register and log in to the application.
- Property Listings: Users can browse properties for sale, rent, or lease.
- Subscription Plans: Users can subscribe to different plans to receive notifications about new properties.
- Chat: Users can chat with property owners.
- Ratings: Users can rate and review properties.
- Notifications: Users receive notifications about new property arrivals based on their subscription.
UserId: Unique identifier for the userName: Name of the userEmail: Email address of the userPhoneNumber: Phone number of the userAddress: Address of the userCity: City of the userState: State of the userZipCode: Zip code of the userProfileImageUrl: URL of the user's profile imageIsActive: Indicates if the user is activeIsVerified: Indicates if the user is verifiedTenantVerificationCode: Tenant verification codeVerificationCode: Verification codePropertiesOwned: List of properties owned by the userSubscriptions: List of subscriptions the user hasRatings: List of ratings given by the userChats: List of chats involving the userTenantVerificationNumber: Unique verification number for the tenant
UserId: Unique identifier for the userPassword: User's password
UserSubscriptionId: Unique identifier for the user subscriptionUserId: Unique identifier for the userSubscriptionId: Unique identifier for the subscription planSubscriptionDate: Date when the subscription startedExpiryDate: Date when the subscription expiresUser: The user who subscribedSubscription: The subscription plan
SubscriptionId: Unique identifier for the subscription planName: Name of the subscription planPrice: Price of the subscription planPriceUnit: Unit of the price (e.g., USD, EUR)ValidityInDays: Number of days the subscription is validIsFeatured: Indicates if the subscription plan is featuredIsActive: Indicates if the subscription plan is activeUserSubscriptions: List of user subscriptions for this plan
PropertyId: Unique identifier for the propertyTitle: Title of the propertyDescription: Description of the propertyPrice: Price of the propertyPriceUnit: Unit of the price (e.g., USD, EUR)Landmark: Landmark near the propertyStreet: Street address of the propertyCity: City where the property is locatedState: State where the property is locatedCountry: Country where the property is locatedZipCode: Zip code of the propertyLatitude: Latitude of the propertyLongitude: Longitude of the propertyCategory: Category of the property (e.g., Home, Shop, Land, PG)Type: Type of the property (e.g., Rent, Sale, Lease)OwnerId: Unique identifier for the owner of the propertyStatus: Status of the property (e.g., Active, Inactive, Sold, Rented)Amenities: List of amenities available at the propertyFeatures: List of features of the propertyMediaFiles: List of media files related to the propertyRatings: List of ratings for the propertyChats: List of chats related to the property
AmenityId: Unique identifier for the amenityName: Name of the amenityDescription: Description of the amenityIsPaid: Indicates if the amenity is paidPropertyId: Unique identifier for the propertyProperty: The property associated with the amenity
Area: Area of the homeNumberOfBedrooms: Number of bedrooms in the homeNumberOfBathrooms: Number of bathrooms in the homeYearBuilt: Year the home was builtFurnishingStatus: Furnishing status of the home (e.g., Furnished, SemiFurnished, Unfurnished)FloorNumber: Floor number of the homeHomeStatus: Status of the home (e.g., ReadyToMove, UnderConstruction)
Area: Area of the shopBusinessType: Type of business (e.g., Retail, Restaurant, Other)RentPrice: Rent price of the shopRentPriceUnit: Unit of the rent priceSalePrice: Sale price of the shopSalePriceUnit: Unit of the sale priceLeasePrice: Lease price of the shopLeasePriceUnit: Unit of the lease price
LandArea: Area of the landZoningInformation: Zoning information of the landLandType: Type of the land (e.g., Residential, Commercial, Agricultural)
RoomTypes: Types of rooms availableOccupancy: Occupancy detailsFacilities: Facilities availableRentPrice: Rent price for the PGRentPriceUnit: Unit of the rent priceLeasePrice: Lease price for the PGLeasePriceUnit: Unit of the lease price
MediaFileId: Unique identifier for the media fileTitle: Title of the media fileDescription: Description of the media fileType: Type of media file (e.g., Image, Video)PropertyId: Unique identifier for the propertyProperty: The property associated with the media file
ChatId: Unique identifier for the chatPropertyId: Unique identifier for the propertySenderUserId: Unique identifier for the sender userReceiverId: Unique identifier for the receiver userMessage: Chat messageTimestamp: Timestamp of the chatIsRead: Indicates if the message has been read
RatingId: Unique identifier for the ratingPropertyId: Unique identifier for the propertyRatingValue: Rating valueComments: Comments about the ratingUserId: Unique identifier for the user who gave the rating
- PropertyStatus: Active, Inactive, Sold, Rented
- PropertyCategory: Home, Shop, Land, PG
- PropertyType: Rent, Sale, Lease
- FurnishingStatus: Furnished, SemiFurnished, Unfurnished
- ConstructionStatus: ReadyToMove, UnderConstruction
- Direction: North, South, East, West
- OwnershipType: Freehold, Leasehold
- BusinessType: Retail, Restaurant, Other
- MediaType: Image, Video
- LandType: Residential, Commercial, Agricultural
classDiagram
class User {
int UserId
string Name
string Email
string PhoneNumber
string Address
string City
string State
string ZipCode
string ProfileImageUrl
bool IsActive
bool IsVerified
int TeneantVerificationCode
int verificationCode
ICollection~Property~ PropertiesOwned
ICollection~UserSubscription~ Subscriptions
ICollection~Rating~ Ratings
ICollection~Chat~ Chats
}
class UserAuth {
int UserId
string Password
}
class UserSubscription {
int UserSubscriptionId
int UserId
int SubscriptionId
DateTime SubscriptionDate
DateTime ExpiryDate
User User
Subscription Subscription
}
class Subscription {
int SubscriptionId
string Name
decimal Price
string PriceUnit
int ValidityInDays
bool IsFeatured
bool IsActive
ICollection~UserSubscription~ UserSubscriptions
}
class Property {
int PropertyId
string Title
string Description
decimal Price
string PriceUnit
string Landmark
string Street
string City
string State
string Country
string ZipCode
double Latitude
double Longitude
PropertyCategory Category
PropertyType Type
int OwnerId
PropertyStatus Status
ICollection~Amenity~ Amenities
ICollection~PropertyFeature~ Features
ICollection~MediaFile~ MediaFiles
ICollection~Rating~ Ratings
ICollection~Chat~ Chats
}
class Amenity {
int AmenityId
string Name
string Description
bool IsPaid
int PropertyId
Property Property
}
class Home {
int Area
int NumberOfBedrooms
int NumberOfBathrooms
int YearBuilt
FurnishingStatus FurnishingStatus
int FloorNumber
HomeStatus HomeStatus
}
class Shop {
int Area
BusinessType BusinessType
decimal? RentPrice
string RentPriceUnit
decimal? SalePrice
string SalePriceUnit
decimal? LeasePrice
string LeasePriceUnit
}
class Land {
double LandArea
string ZoningInformation
LandType LandType
}
class PG {
int RoomTypes
int Occupancy
ICollection~Facility~ Facilities
decimal? RentPrice
string RentPriceUnit
decimal? LeasePrice
string LeasePriceUnit
}
class MediaFile {
int MediaFileId
string Title
string Description
MediaType Type
int PropertyId
Property Property
}
class Chat {
int ChatId
int PropertyId
int SenderUserId
int ReceiverId
string Message
DateTime TimeStamp
bool IsRead
}
class Rating {
int RatingId
int PropertyId
int RatingValue
string Comments
int UserId
}
class PropertyStatus {
<<enumeration>>
Active
Inactive
Sold
Rented
}
class PropertyCategory {
<<enumeration>>
Home
Shop
Land
PG
}
class PropertyType {
<<enumeration>>
Rent
Sale
Lease
}
class FurnishingStatus {
<<enumeration>>
Furnished
SemiFurnished
Unfurnished
}
class ConstructionStatus {
<<enumeration>>
ReadyToMove
UnderConstruction
}
class Direction {
<<enumeration>>
North
South
East
West
}
class OwnershipType {
<<enumeration>>
Freehold
Leasehold
}
class BusinessType {
<<enumeration>>
Retail
Restaurant
Other
}
class MediaType {
<<enumeration>>
Image
Video
}
class LandType {
<<enumeration>>
Residential
Commercial
Agricultural
}
Property <|-- Home
Property <|-- Shop
Property <|-- Land
Property <|-- PG
PropertyStatus -- Property
PropertyCategory -- Property
PropertyType -- Property
FurnishingStatus -- Home
ConstructionStatus -- Home
BusinessType -- Shop
LandType -- Land
MediaType -- MediaFile
User --> UserSubscription : "1..* owns"
UserSubscription --> Subscription : "many to 1"
Property --> Amenity : "1 has many"
Property --> MediaFile : "1 has many"
Property --> Rating : "1 has many"
Property --> Chat : "1 has many"
Amenity --> Property : "many to 1"
MediaFile --> Property : "many to 1"
Chat --> Property : "many to 1"
Rating --> Property : "many to 1"
User --> Property : "1 owns many"
User --> Rating : "1 gives many"
User --> Chat : "1 participates in many"
User --> UserAuth : "1 has"