Villa Agency
A polished real-estate agency website with a property catalogue, category filters, dynamically generated listing pages, and a responsive contact experience.

Front-End Developer
Project context
A premium real-estate browsing experience built to make property listings easy to explore while remaining fast and responsive.
The problem
Create a premium real-estate browsing experience that makes listings easy to explore while keeping the implementation fast, maintainable, and effective across mobile, tablet, and desktop screens.
Technical approach
Built a static-first Astro site structured around reusable UI components and typed property data. The catalogue supports client-side category filtering, and Astro generates a dedicated page for each property at build time for a smooth, scalable browsing experience.
Design goal
Make property discovery understandable from the first screen. The landing page introduces the agency, the catalogue narrows the selection, and individual listing pages provide a stable destination for each property. This structure gives overview content and detailed content distinct responsibilities.
Content and page architecture
Property data is separated from the presentation layer using typed records. Astro uses those records to generate individual listing pages at build time. This keeps the catalogue and detail pages aligned while allowing the same interface components to be reused across the site.
Typed property data
TypeScript describes the property records consumed by the interface. Keeping records separate from components supports consistent rendering between catalogue cards and listing pages. A content change can be applied at its source instead of being repeated across multiple page templates.
Static page generation
Astro resolves dedicated property pages during the build. The browser receives a generated page for the selected listing rather than having to assemble its main content from a client-side application. Updates to these static records require another build to appear in the published site.
Browsing and interaction
Visitors can begin with the landing page, browse the catalogue by category, and open a dedicated property page for more information. Client-side filtering provides a focused interaction within a site whose main content is generated ahead of time. The contact, legal, and privacy pages complete the browsing experience.
Catalogue filtering
Category filtering runs in the browser and changes the set of visible properties. It provides a focused interaction within the catalogue while the listing page remains a separate route. This separates browsing a collection from reading an individual property.
Responsive interface
Bootstrap and CSS provide the responsive presentation, with Swiper included in the interface stack. The key design responsibility is to keep property images, descriptions, and navigation readable as available space changes between phone, tablet, and desktop layouts.
Key capabilities
- Responsive real-estate landing page
- Filterable property catalogue
- Data-driven, statically generated property pages
- Contact, legal, and privacy pages
Outcome
Streamlined property discovery with fast page loads and intuitive category-based filtering.
Scope and next steps
This project demonstrates the front-end of a real-estate platform. The documented scope covers browsing and presentation; it does not establish a live property-management backend or a booking service. Those capabilities would require a separate data source and operational workflows.
Engineering tradeoff
A static catalogue is straightforward to deploy and maintain for a controlled set of listings. It also makes publication a build-time operation. A frequently changing inventory would benefit from a managed content source and an explicit publishing workflow.



