← Todos los proyectos

Estilo y Confort

Una marca de muebles premium necesita un sitio que cargue al instante, posicione en Google y convierta visitantes en conversaciones — más un CMS privado para que la marca edite su propio catálogo.

AngularNestJSPrismaPostgreSQLTailwind CSSFirebase

Una marca de muebles de lujo no necesita un carrito de compras — necesita un showroom en la web. De esos que cargan al instante en un teléfono, se ven caros, posicionan en Google para las búsquedas correctas, y convierten a un visitante curioso en un mensaje de WhatsApp o una llamada. Estilo y Confort es justo eso: un sitio premium de generación de leads para muebles, respaldado por un CMS privado para que la marca gestione su propio catálogo sin tocar código nunca.

Qué hace

El sitio público es un catálogo inspiracional, no una tienda. Presenta el mundo de la marca — colecciones (por temporada y año), muebles individuales, telas premium, servicios, eventos y testimonios de clientes — cada uno con su propia página de detalle y un layout limpio guiado por imágenes.

No hay checkout. Cada camino está diseñado para terminar en una conversación: un mensaje de WhatsApp, una llamada o un formulario de contacto. Ese es el punto — para un producto de ticket alto, la conversión no es una transacción, es un lead.

Detrás vive un panel de administración privado. La marca inicia sesión y edita todo por sí misma — agrega una colección, publica un nuevo sofá, cambia telas, programa un evento, reordena lo destacado en la portada. Sin un desarrollador de por medio para el contenido del día a día.

Bajo el capó

El front es Angular 19 con renderizado del lado del servidor (SSR) y prerender (SSG) — así las páginas públicas son HTML real desde el momento en que llegan al navegador. Eso es lo que hace al sitio rápido en un teléfono y legible para el crawler de Google, algo innegociable para una marca que vive del posicionamiento.

Está construido como Angular debe construirse en 2026: standalone components, OnPush change detection en todo para rendimiento, rutas con lazy loading, y un UI kit propio reutilizable (botones, cards, carruseles, tabs, modales, breadcrumbs) sobre un design system con Tailwind, paleta y tipografía definidas. El SEO no es un agregado tardío — hay un servicio de SEO dedicado, metadata por página, un servicio JsonLd que emite datos estructurados schema.org FurnitureStore, un sitemap.xml y robots.txt generados, y accesibilidad WCAG integrada en los componentes.

El back es una API separada de NestJS + Prisma + PostgreSQL siguiendo Clean Architecture — casos de uso, repositorios, value objects y domain errors separados de la capa HTTP. Se divide deliberadamente en dos superficies: una API pública, de solo lectura (/public/**) que consume el sitio, y una API de admin protegida por JWT (/admin/**) que usa el dashboard. El contenido público solo aparece si pasa reglas de visibilidad estrictas — activo, sin soft-delete, y para productos, publicado y con una imagen principal válida.

Los detalles que delatan un producto real, no un demo: JWT con access + refresh tokens y rotación, role guards, Helmet, rate limiting (en memoria, listo para Redis con múltiples instancias), soft deletes en cada entidad crítica, DTOs con class-validator en cada endpoint, y una spec Swagger/OpenAPI. Las imágenes y el PDF del catálogo viven en Firebase Storage, subidas directo desde el navegador con signed URLs — la API emite la URL y nunca toca el binario.

El stack

  • Frontend — Angular 19 con SSR + prerender (SSG), standalone components, OnPush, RxJS, Angular Material + CDK, Tailwind CSS; desplegado en Firebase Hosting.
  • Backend — NestJS 11 en TypeScript strict, Prisma 7 sobre PostgreSQL, Swagger/OpenAPI, APIs pública/admin separadas.
  • Auth y seguridad — JWT access/refresh con Passport, role guards, bcrypt, Helmet, rate limiting (@nestjs/throttler, Redis opcional).
  • Almacenamiento — Firebase Storage con signed URLs para imágenes y PDF.
  • Ops — Docker; backend desplegado en Railway con migraciones ejecutadas como paso de release.

Vale la pena mencionar

Lo construí solo, de punta a punta — frontend, backend, diseño y despliegue — para una marca de muebles, con el sitio público y el CMS diseñados como dos sistemas que cooperan en lugar de un monolito. La apuesta de ingeniería interesante es esa separación: un sitio de marketing rápido y orientado al SEO que lee de una API endurecida, y un dashboard self-service para que la marca sea dueña de su propio contenido. Es el tipo de trabajo que tiene que impresionar a dos audiencias muy distintas a la vez — el cliente que quiere un showroom que venda, y el ingeniero que mira bajo el capó.

El código ahora es mío, y el build sigue viéndose como demo en vivo — abre el demo.

¿Un café y platicamos?

¿Te gustó lo que leíste? Construyo productos así de punta a punta — y siempre estoy para una buena plática. Hablemos del tuyo, o nomás intercambiamos ideas con un café.

Rentheria · Guadalajara, México