Projects

Umbral Properties

Brand and data are fictional, to protect the client.

The problem

The agency relied on listing portals and messages to show its properties, without a website of its own it could update unaided.

What was built

A website with search by neighborhood, operation, type, rooms and price, a page per property with photos and WhatsApp inquiries, valuation requests, and an admin panel to add and publish properties.

Technical details

A React and TypeScript SPA (Vite, Tailwind, shadcn/ui) with its own REST API in Express, Prisma and PostgreSQL, both on Vercel. In the admin panel, properties are saved as drafts with lenient validation, and checked against a strict Zod schema when published.

Photos are uploaded straight to Cloudinary with a signature generated by the backend. Vercel’s serverless functions accept up to 4.5 MB per request, so the backend only receives the URLs. When a property is edited, the images left unused are deleted. Prisma goes through the pooler in transaction mode and uses a direct connection only for schema changes: without that, the serverless functions failed with “prepared statement does not exist”. The panel adds sales statistics by month, type and neighborhood, in pesos and dollars separately.

Tour · Umbral Properties

On the site, properties are filtered, one is opened with its gallery and an appraisal is requested, which goes out through WhatsApp. In the admin panel, a new property is entered with its photos, saved as a draft and then published: it shows up first in the site's listing.

Technologies

  • React
  • TypeScript
  • Tailwind CSS
  • Express
  • Prisma
  • PostgreSQL