Real Estate Listings Website
A filter that lives only in JavaScript cannot be shared, bookmarked, or found by Google — and a property search is nothing but a filter.
- PHP
- MySQL
About this project
A property portal for a small agency — listings with filters and pagination, property detail pages with a gallery, an enquiry form, and an admin for properties and enquiries. Seeded with sixteen Pune properties across ten localities.
A property portal is a filter: budget, bedrooms, locality, buy or rent. The naive build does all of that in client-side JavaScript over a list already in the page, which is fast to write and broken in ways that cost the agent business. The URL never changes, so a buyer who finds three good 2BHKs in Kothrud under ₹60 lakh cannot send that search to whoever is deciding with them. The back button leaves the page instead of undoing a filter. And Google only ever sees the unfiltered list, so the long-tail searches people actually type can never rank. Here the filters live in the query string, the server does the filtering with prepared statements, the form works with JavaScript disabled, and each combination gets its own title and canonical URL. The proof curls a filtered URL with no browser anywhere and shows the server returning three rows while the naive page returns all sixteen.
What you will learn
- Keep filter state in the URL so a search is shareable, bookmarkable and crawlable
- Build a dynamic WHERE clause with prepared statements and no string concatenation
- Give each filter combination a correct title and canonical URL
- Design an empty state that suggests loosening the tightest filter
- Handle Indian property conventions — BHK, lakh/crore, carpet vs built-up area
Before you start
- PHP basics, and comfort building a SQL WHERE clause from user input
- PHP 8.1+ and MySQL 8 (or MariaDB 10.4+)
- No Composer, no Node — deploys to cPanel shared hosting as files
New to PHP? The free PHP course covers everything this project assumes.
Academic integrity notice
These projects are provided for learning, experimentation and reference. Understand the code, modify it for your own requirements, and acknowledge external work according to your institution’s academic policies. Priodemy does not supply work to be submitted as your own.
Features
- Server-side filtering with filters in the query string — no JavaScript required to search
- Each filter combination gets a descriptive title tag and a canonical URL
- A "share this search" box, because that is the entire point of the design
- A real empty state that suggests loosening the tightest filter
- Indian property conventions throughout — BHK, lakh and crore, carpet vs built-up area
- Admin property CRUD with sold/rented status, plus an enquiries inbox
Technology stack
Track: Web Development · Level: Major project
What is included
- The full site and admin — commented throughout
- schema.sql with sixteen seeded Pune properties across ten localities
- proof.php — curls filtered URLs with no browser and compares against ground-truth SQL
Delivered as a 155 KB ZIP. SHA-256 published under Changelog so you can verify it.
System requirements
- Operating system
- Any
- Runtime
- PHP 8.1+ and MySQL 8 / MariaDB 10.4+. No Composer, no Node.
Licence
Learn from it, change it, and use it in your own coursework and personal projects. Do not resell it or pass it off as your own original work.
- Personal and educational use
- Modifying the code however you like
- Using it as the basis of your own coursework, with honest acknowledgement
- Putting your modified version in a portfolio or on your own GitHub
- Reselling or redistributing the project, modified or not
- Presenting it as your own original work
- Commercial deployment — see the Commercial licence
Support window: 6 months from download.
Frequently asked
Why does it matter whether filtering happens on the server?
Three reasons the agent feels directly. A client-side filter leaves the URL unchanged, so a buyer cannot send their shortlist to whoever is deciding with them. The back button leaves the page instead of undoing a filter. And Googlebot's first pass sees only the unfiltered list, so "2 BHK for sale in Kothrud" — exactly the query a buyer types — can never rank. The proof fetches a filtered URL with no browser involved and shows the server returning three rows against the naive page's sixteen.
Does the search work without JavaScript?
Yes — that is the test the project is built to pass. The filter form is a plain GET form, the server reads the query string, and the results come back rendered. JavaScript is used only for conveniences like the copy-link button.
Are the property photos real?
No, and the project does not pretend otherwise. Every listing ships a hand-drawn SVG illustration labelled "Placeholder — replace with a real photograph", so the site looks complete out of the box and nobody accidentally ships a stock image they have no licence for. Swap in real photos through the admin.
Changelog
- First release
SHA-256b2a8c7570f16fb04b2679902908f429ea8efb2577a9d4042b3dc7a50c6a50878