Domus is a classic PHP theme with theme.json, built on DEV3's shared theme core and the DEV3 Theme Toolkit plugin. The theme owns presentation, the property templates and its 3D preset. The toolkit owns functionality: the property, agent and neighbourhood post types, property search, stored requests, Elementor widgets with block twins, the DEV3 Motion controls, WooCommerce extras and the demo importer.
Key design decisions
- Listings as plain post meta. Price, status, beds, baths, area, coordinates and the agent are simple meta fields. A numeric copy of the price is indexed for price searches and sorting, and any importer that writes post meta can fill them from a feed.
- Status drives the interface. Six statuses (for sale, for rent, new development, under offer, sold, let agreed) set the card badge, the archive tabs and whether the property page shows a mortgage estimate or a rental affordability note.
- Requests without a forms plugin. The Request Form widget stores viewing, valuation and contact requests privately in the dashboard and emails them, sending viewing requests to the listing's agent as well. Each form has a nonce, a honeypot and a rate limit.
- Privacy by default. The map loads from OpenStreetMap only after the visitor clicks, and fonts are self-hosted, so a property page makes no third-party requests on load.
- Motion as a control panel. Every Elementor widget and container gets a DEV3 Motion panel (split headings, mask wipes, parallax, counters, stacked cards, a pinned horizontal rail), with matching CSS classes for the block editor.
- One 3D accent, loaded late. The model house is a small procedural three.js scene on a transparent canvas. It loads only when it scrolls near, pauses offscreen, turns with the scroll and falls back to a still poster.