Muebles San Francisco JYN: corporate site + admin catalog
This project combines commercial presentation and operational autonomy. The public side (home, catalog, about, contact) is paired with a private admin area so staff can manage and publish catalog content without constant engineering intervention.
Challenge
Build a bilingual platform that supports both customer-facing discovery and secure internal catalog management.
Solution
Implemented a domain-oriented architecture with Next.js App Router, Prisma/PostgreSQL, and next-intl. Public pages consume clean catalog view models, while the admin area runs server actions with Zod validation and route revalidation.
Results
- - Consistent bilingual corporate presence for end customers
- - Catalog operations handled by admins without code edits
- - Controlled publication flow via publishedAt
- - Modular technical base ready for future features
Technical system profile
Overview
Bilingual web platform for Muebles San Francisco JYN with two surfaces: a public commercial website and a private admin panel to manage catalog categories and items.
Problem solved
- - Unifies corporate presence and catalog operations in one platform
- - Enables publishing/updating categories and items without manual deploy workflows
- - Keeps multilingual navigation, SEO, and content consistent
- - Separates customer-facing experience from internal operations
Stack and technologies
- - Next.js 15 + React 19 + TypeScript
- - Tailwind CSS v4 with semantic design tokens
- - Prisma + PostgreSQL
- - next-intl for es/en localization
- - Server Actions + Zod
- - Formspree for contact form
- - Zustand for focused UI state
How it is organized
- - app/: thin routes, layouts, and page composition
- - features/: domain modules (catalog, admin, team, suppliers)
- - shared/: reusable UI and shared infrastructure
- - i18n/: routing, request config, localized navigation
- - Layer flow: Route -> Feature -> Service -> Repository -> Prisma
Main workflow
- - Middleware applies i18n and admin route protection
- - Locale layout mounts global shell and structured SEO
- - Public pages consume catalog view models
- - Admin panel runs validated/normalized server actions
- - Public cached routes are revalidated after admin writes
Key modules
- - Catalog: repository/service/mapper with publication filters
- - Admin: forms, CRUD actions, Zod validation
- - i18n: es/en locales with localized links/messages
- - SEO: centralized metadata, canonical, alternates, sitemap, robots
- - Contact: RHF form pipeline to Formspree
Strengths
- - Clear domain separation and maintainability
- - Strong SEO and internationalization foundation
- - Complete DevOps workflow with CI and deployment docs
- - Data model prepared for catalog growth
Risks / technical debt
- - Two auth strategies coexist (Better Auth and manual admin cookie)
- - Potential auth-client technical debt from partial integration
- - Single-password admin guard may need stronger hardening
- - Bilingual content operations require strict editorial discipline
Do you need to build or improve a software system?
I can help you translate business needs into a robust, maintainable technical solution.