Contents

Key takeaways

  • Complete rewrite of an old PHP, Flash and MyISAM site into a PHP 8 platform with an API.
  • One area per role: buyer, agent, adviser, introducer, developer, owner, administration.
  • Sales tracking by status, cascading commissions, PDF invoices and Stripe payments.
  • Automatic import of programmes from 9 developers and export to the major property portals.
  • iOS and Android apps with nearby search, push notifications and biometric login.

Neuf-Immo is a real-estate platform focused on new-build property. It brings buyers, estate agents, advisers, business introducers and developers together in one tool, with programmes in France and Spain. Ahmed Sanoko designed and built it as lead full-stack developer, from design to production: public website, logged-in areas for each role, API and iOS and Android apps.

From an old website to a complete platform

The old Neuf-Immo relied on a single 4,241-line PHP router, 891 templates, Flash animations and a database in which 51 of 57 tables still used MyISAM, an engine without transactions. The blog ran on WordPress and the forum on phpBB.

Rather than patching it, the platform was rewritten: a new database schema, PHP 8 code organised into services, an in-house forum and blog, and a single API for the site and the apps. The useful listings from the old site were brought over in a targeted, checked way, without importing the old database as it was.

The public website: finding the right programme

  • Multi-criteria search: free text, region, department, city, property type, price, area, number of rooms, tax scheme, unit availability, sorting.
  • Typo-tolerant search: a phonetic algorithm adapted to French finds a city even when misspelt or typed without accents.
  • Programme pages with a gallery, available, reserved and sold units, energy ratings (DPE and GES), a neighbourhood map, and a detailed page for each unit.
  • 12 tax and financial simulators: Pinel, Malraux, property deficit, Denormandie, Censi-Bouvard, split ownership, LMP, LMNP, financial simulator, PTZ, notary fees and yield.
  • Practical pages: listings by city, older properties, renovation estimate, sell a property, request a property, call-back request.
  • Directory of estate agents and sales agents, partner pages and testimonials.
  • Content: blog, in-house forum, investment guides (life annuity, SCI, bare ownership, Spain…).
  • Chat assistant built into the site, and embeddable on other pages.
  • Three languages: French, English and Spanish.
New-build programme page with gallery and units
New-build programme page with gallery and units

An area for every role

The heart of Neuf-Immo is its logged-in areas. Each role has its dashboard and tools, with permissions managed by level.

  • Buyer: purchases, favourites, saved searches, financing request, PDF sheets, referrals, messaging with their adviser.
  • Estate agent: sales, pending and paid commissions, builders and buyers in their network.
  • Adviser and introducer: tracking of their clients and sales; the adviser can also email their network.
  • Developer or builder: publishing programmes and units, photos, location, PDF product sheet, sales and commission rate.
  • Owner and sponsor: their properties and their referrals.
  • Administration: global dashboard (properties, units, sales, overdue invoices, commissions), visual editor for public pages, account takeover for support, audit log of actions.

Sales tracking

Each sale follows a precise path: new, interested, call-back, reserved, bank, notary, firm sale, then locked, or cancelled. Moving to "reserved" updates the unit automatically. A locked sale can only be reopened by the administration.

Sales tracking with the status of each sale
Agent area: sales tracking with the workflow status

Commissions and invoices

Commissions are calculated in cascade. The introducer takes their share first, the rest is split between the adviser and the agent, and the site's share is taken from the agent's. Rates come from each person's profile and VAT is configurable. The engine guarantees that the distributed total always comes back to 100%, and it is covered by a dedicated test script. Invoices are generated as PDFs, and both subscriptions and network invoices can be paid online with Stripe.

Communication

  • Internal messaging with groups, attachments, pinned conversations and a presence indicator.
  • Emails to the network with a rich-text editor, recipients chosen by role and 45 email templates.
  • 20 PDF document templates: product sheets, contracts by role, mandates, viewing and reservation forms…

The iOS and Android apps

The apps, published on the App Store and Google Play, use the same API as the website. They offer a dedicated journey for each role: buyer, agent, adviser, introducer, owner, seller, sponsor, partner and guest.

  • search for programmes nearby, within an adjustable radius, using geolocation;
  • results with energy ratings, sorting by proximity or price, and maps;
  • sales, commissions, invoices, mandates and documents for professionals;
  • network messaging;
  • push notifications;
  • biometric login;
  • switching to the web area without logging in again.
Search results with energy ratingsSales tracking by status in the appPending, invoiced and paid commissions
Results with energy ratings, sales tracking, commissions per sale

The technical challenges

Feeding the platform without manual entry

A new-build site lives on its programmes. Neuf-Immo automatically imports the programmes of 9 developer partners, each with its own format, through one connector per partner. Images are downloaded, converted to WebP, resized and deduplicated. In the other direction, units can be exported to SeLoger, Le Figaro, Leboncoin and ParuVendu.

Keeping the data clean

A single scheduler runs the background tasks: daily imports, backups, newsletter, invoice reminders, mandate expiry, detection of suspicious listings, spotting images carrying a competitor's watermark, integrity checks on documents and data, technical and business reports.

Distance search and maps

Nearby search is computed directly by MySQL with a spherical distance function, within a radius of 1 to 200 km. Property addresses are converted to coordinates when entered, and municipalities come from the official French government database.

Moving from the app to the web securely

Some steps end on the website. The app requests a single-use ticket; the server only keeps its SHA-256 hash, with a short validity, then opens the web session and redirects the user. No password to type again, and nothing reusable if it is intercepted.

Security and monitoring

  • sign-in with Google, Facebook or Apple;
  • reCAPTCHA v3 with a score threshold on public forms;
  • CSRF tokens on forms, request rate limiting;
  • enforced HTTPS;
  • error tracking with Sentry.

SEO and sharing

Programme pages publish schema.org structured data (RealEstateListing with offer and address), the home page declares an internal search engine, and the sitemap covers programmes, blog, agents, cities and forum. Social sharing images are drawn by the server for each page, then cached.

The tech stack

  • Server: PHP 8, MySQL, Composer, Dompdf for PDFs, PHPMailer for emails.
  • Front end: Tailwind CSS compiled into three stylesheets (public, home, admin), Leaflet and Google Maps for maps.
  • Mobile: React Native with Expo, React Navigation, over-the-air updates.
  • Services: Stripe, Google, Facebook and Apple OAuth, reCAPTCHA, Expo push notifications, OpenAI, Gemini, Sentry.
  • Deployment: a signed GitHub webhook that updates only the changed files and clears the PHP cache.

What this project shows

Neuf-Immo shows the ability to design a complete business platform, with several roles, money flows (commissions, invoices, payments), data imports and exports with partners, and mobile apps published on both stores. It was designed and taken all the way to production by Ahmed as lead full-stack developer.

Do you have a real-estate platform or a multi-role tool to build? Get in touch. You can also see all the screenshots of the project.

Frequently asked questions

Can one platform serve very different roles?

Yes. Neuf-Immo gives each role (buyer, agent, adviser, introducer, developer, owner, administration) its own area, with permissions managed by level, on a single database.

Can developers' programmes be imported automatically?

Yes. Here, one connector per partner reads its format, imports programmes and units every day and processes the images, with no manual entry.

Can commissions be calculated automatically?

Yes. The Neuf-Immo engine splits the commission between introducer, adviser, agent and site according to each profile's rates, handles VAT and generates PDF invoices.