
Project description
Promotional site template focused on lash extensions. It includes a service catalog with sample prices, a contact form, an interactive OpenStreetMap map, and responsive navigation. Business copy, map coordinates, and form destination are configurable via a data module with placeholders, a carousel on the home page, and a footer with contact and social links.
Key features
Next.js App Router with `[lang]` routes and `generateStaticParams` for English and Spanish
Locale detection via middleware (`Accept-Language`) and explicit URL prefixes
Per-locale JSON dictionaries and server-oriented service content
Embedded map with Leaflet and OSM; client-only loading to avoid SSR issues
Contact form posting to FormSubmit (configurable destination in data)
Responsive UI: sticky nav, mobile menu, service grid, and animated home carousel
Per-page SEO metadata via `generateMetadata` and configurable title prefixes
Tailwind CSS plus CSS Modules where needed; Inter via `next/font`
Challenges and solutions
Internationalization and routing
Aligning initial locale redirects, stable `/en` and `/es` routes, and JSON-driven copy without duplicating layout, while keeping SEO and shareable URLs in good shape.
Leaflet without SSR
The map needs the DOM and does not play well with server rendering; it is loaded with dynamic import and `ssr: false` so React Leaflet mounts only on the client.
Contact without a custom backend
Form submission is delegated to FormSubmit to avoid API routes or a mail server in the repo, with the destination documented in the data module.
Screenshots


Technologies used
Other projects

Leberp — ERP ecosystem
B2B cloud ERP (sales, warehouse, logistics, treasury, purchasing, analytics, and POS): React SPA, Electron desktop client, and .NET backend on Azure.

Ice Climber Remake
Cross-platform remake of the classic NES Ice Climber, with advanced 2D physics, dynamic lighting, and automated deployment.