Himanshu-Website

🏎️ Himanshu’s Ultimate Garage

β€œIf you can dream it, you can park it here.”

🌐 Live at β†’ himanshudhiman.website

A dark, cinematic showcase of the world’s most insane cars β€” built with the latest web tech so it’s fast, beautiful, and actually impressive to show your friends.


πŸ€™ What Even Is This?

This is a personal car showcase website. You scroll through a grid of hypercars, supercars, F1 machines, and luxury tanks. There’s:

And yes, the Eeco has infinite horsepower. Non-negotiable.


⚑ Tech Stack (what is all this stuff?)

Tech What it does
Next.js 16 The framework β€” handles routing, server rendering, and builds
React 19 The UI library β€” components, hooks, all that
TypeScript JavaScript but smarter β€” catches bugs before you even run the code
Tailwind CSS v4 Utility CSS classes right in your JSX β€” no more writing CSS files for everything
Vercel Hosting + Analytics + Speed Insights β€” all in one dashboard

Why App Router? (not Pages Router)

App Router is the new way Next.js works. Your files in /app become routes automatically. Server Components (most of the page) run on the server and ship zero JavaScript to the browser β€” which means your site loads faster. Only the interactive bits (cursor, filters, cards) ship JS.

Why TypeScript?

Because guessing sucks. TypeScript tells you exactly what properties an object has. If you try to access car.horsepwer (note the typo), TypeScript yells at you before the app even starts. Once you get used to it, you’ll never go back.


πŸš€ Running It Locally

Prerequisites: Node.js 18+ installed

# 1. Install dependencies
npm install

# 2. Start the dev server on port 6217
npm run dev

Then open http://localhost:6217 in your browser. Or just hit F5 in VS Code β€” it starts the server and opens the browser automatically.

Other commands:

npm run build   # Build for production
npm run start   # Run the production build locally
npm run lint    # Check for code problems

🏠 Project Structure

himanshu/
β”‚
β”œβ”€β”€ app/                    ← Next.js App Router
β”‚   β”œβ”€β”€ layout.tsx          ← Root HTML shell (fonts, metadata, analytics)
β”‚   β”œβ”€β”€ page.tsx            ← Home page (Server Component)
β”‚   └── globals.css         ← Tailwind + custom animations
β”‚
β”œβ”€β”€ components/             ← Reusable UI pieces
β”‚   β”œβ”€β”€ Preloader.tsx       ← Loading screen (fades after 3.5s)
β”‚   β”œβ”€β”€ CustomCursor.tsx    ← The pink dot + ring cursor
β”‚   β”œβ”€β”€ Hero.tsx            ← Full-screen title section
β”‚   β”œβ”€β”€ GarageSection.tsx   ← Owns filter state (wraps Nav + GarageGrid)
β”‚   β”œβ”€β”€ Nav.tsx             ← Category filter pill bar
β”‚   β”œβ”€β”€ GarageGrid.tsx      ← The car card grid
β”‚   β”œβ”€β”€ CarCard.tsx         ← Individual car card with 3D tilt
β”‚   └── Footer.tsx          ← Visitor counter footer
β”‚
β”œβ”€β”€ data/
β”‚   └── cars.json           ← ← ← ADD CARS HERE
β”‚
β”œβ”€β”€ public/
β”‚   └── images/             ← Car images (served at /images/filename.jpg)
β”‚
β”œβ”€β”€ types/
β”‚   └── index.ts            ← TypeScript types (Car, Filter, etc.)
β”‚
β”œβ”€β”€ vercel.json             ← Vercel deployment + cache + security headers
└── tsconfig.json           ← TypeScript config

πŸš— Adding Your Own Cars

Open data/cars.json and add a new entry to the cars array. Here’s the template:

{
  "name": "Your Car Name",
  "category": "supercar",
  "image": "/images/your-image.jpg",
  "alt": "Description of what's in the image",
  "description": "A sentence or two about the car.",
  "specs": {
    "horsepower": "500 hp",
    "topSpeed": "200 mph / 322 km/h"
  }
}

Category must be one of:

For the image:

  1. Drop the image into the public/images/ folder
  2. Reference it as "/images/your-filename.jpg" in the JSON
  3. Or just paste a URL from the internet (like "https://...")

Tip: Use WebP format for images β€” they’re ~30% smaller than JPG and look identical.


πŸ“Š Analytics & Monitoring

The site uses two Vercel tools to track performance. Both are already wired up in app/layout.tsx β€” you just need to enable them in your dashboard.

Vercel Analytics (visitor tracking)

Go to vercel.com β†’ your project β†’ Analytics tab β†’ Enable

You’ll see:

Vercel Speed Insights (performance)

Go to vercel.com β†’ your project β†’ Speed Insights tab β†’ Enable

You’ll see Core Web Vitals measured from REAL users: | Metric | What it means | |——–|β€”β€”β€”β€”β€”| | LCP | How fast the main content loads | | FID | How quickly the page responds to clicks | | CLS | Whether things jump around as the page loads | | FCP | When the first thing appears on screen | | TTFB | How fast your server responds |

Both tools only collect data on the live Vercel deployment β€” they’re completely silent when running locally.


🌍 Deploying to Vercel

The site is live at himanshudhiman.website β€” already deployed!

Every time you push to main, Vercel automatically rebuilds and redeploys. Zero manual steps.

Setting up from scratch (if you fork this):

  1. Push your code to GitHub
  2. Go to vercel.com β†’ sign in with GitHub
  3. Click β€œAdd New Project” β†’ select this repo
  4. Vercel auto-detects Next.js β€” click Deploy
  5. Live at yourproject.vercel.app in ~60 seconds
  6. Add your custom domain in Project Settings β†’ Domains

πŸ› οΈ VS Code Play Button

Press F5 (or click the play button in the Run & Debug panel) to:

  1. Auto-start npm run dev in the background
  2. Wait for Next.js to be ready
  3. Open http://localhost:6217 in Microsoft Edge automatically

If you prefer Chrome, open .vscode/launch.json and change "msedge" to "chrome".


πŸ’‘ Things To Try / Ideas


πŸ“„ License

Do whatever you want with this. It’s your project. Show it off.


πŸ“¬ Contact

Got questions, collabs, or just want to talk cars?

βœ‰οΈ contact@himanshudhiman.website


Built by Himanshu. Live at himanshudhiman.website.