Web Project · Automotive

Car Dealership & Rental

High-end web experience for the automotive industry. OBSIDIAN is a supercar dealership with a 3D showroom where customers rotate the car, change its paint and check its specs; its luxury rent a car version showcases the fleet with a full-screen video hero. Built with Next.js 16, React Three Fiber, Tailwind CSS v4 and Motion.

Página web para concesionario de autos con showroom 3D
🏁

3D Showroom

Three.js in the browser

Key Features

What keeps customers looking at the car

🏎️

Interactive 3D Hero

A Ferrari 458 on a reflective floor with studio lighting; the camera reacts to mouse movement and scroll with parallax.

🎨

Paint Configurator

Showroom with a Ferrari 458 Italia, Lamborghini Urus and Porsche 911 Carrera 4S that can be rotated and repainted live with each brand's official colors.

📋

Spec Sheets

Power, 0–100 km/h, top speed, engine and price for each model, all read from a single typed data source.

🗂️

Filterable Inventory

Editorial inventory grid with category filters so customers quickly find the type of car they want.

🎬

Rent a Car with Video

Luxury car rental landing page with a full-screen video that keeps playing even when the browser pauses it or the tab changes.

📅

Private Viewing

Form to book a showroom visit, plus atelier and services sections with animated counters and parallax images.

Tech Stack

Real-time 3D graphics and a modern frontend

🧊Three.js
⚛️React Three Fiber
🛠️Drei
🗜️Draco (GLB)
🎞️Motion
🌀Lenis

Challenges and Solutions

Technical problems solved during development

1

Heavy 3D Models

Fully detailed car models were too heavy to load quickly on a web page, especially on mobile.

Solution: Draco-compressed .glb files with a self-hosted decoder, plus a preloader that shows loading progress.
2

Three Models, Three Orientations

Each model came from a different author with its own scale and rotation, so they didn't line up in the showroom.

Solution: Normalization on load: every car is scaled to a common size and gets a correction rotation defined in the model data.
3

Repainting Without Breaking the Car

Repainting the model also affected glass, wheels and chrome parts.

Solution: Only the body material, identified by name, is changed, keeping the studio environment reflections.
4

Background Video Stopping

Browsers pause background videos when switching tabs or saving battery, leaving the hero frozen.

Solution: A watchdog that retries playback after each pause, when the tab becomes visible again and every second, without blocking the UI.

Source Code

Explore my projects on GitHub. This one includes the 3D scenes, the car data model and the site sections.

🧊Three.js
▲Next.js 16
📱Responsive
View GitHub

Do you run a car dealership or rental business?

I can build your automotive business website with a 3D showroom, inventory and bookings