# Best Jeep Decals: I shipped a dark-first vinyl storefront for Jeep identity

Source: https://www.michaelchurley.com/blog/best-jeep-decals-convex-stripe-storefront  
Published: 2026-08-08  
Author: Michael C. Hurley  
Tags: best-jeep-decals, nextjs, convex, clerk, stripe, ecommerce, jeep, vinyl-decals, martech, hustle-launch

![Best Jeep Decals. Upgrade Your Off-Road Identity](/blog/best-jeep-decals-convex-stripe-storefront/screenshots/landing.png)

## Who

I kept seeing Jeep owners treat identity like an afterthought: a random sticker from a gas-station rack, peeling after one summer on a Wrangler hood.

The people I built for already know their JL from their JK, their Gladiator JT from an XJ Cherokee. They want hood blackouts, "rated" fender badges, side graphics that look like they belong on the trail, not clip art. They want USA vinyl that lasts 5–7 years outdoors, air-release installs, and a checkout that does not feel like 2014 Magento.

If you ship MarTech, Convex + Clerk + Stripe stacks, or local-commerce sites that have to take real money, this is for you. This is a private HurleyUS storefront (Best Jeep Decals), not a theme demo.

## What

I shipped a dark-first e-commerce site at [bestjeepdecals.com](https://www.bestjeepdecals.com). Orange accent. Italic wordmark. Hero that says the quiet part: **Upgrade Your Off-Road Identity.** Made in the USA badge. Shop All Decals / Browse Wrangler.

![Shop filters. vehicle fitment and price range](/blog/best-jeep-decals-convex-stripe-storefront/screenshots/shop.png)

Stack facts: **Next.js 16.2.6** (Turbopack) on Vercel, **React 19**, **Convex** for products/categories/carts/orders/reviews/wishlists/discounts/subscriptions, **Clerk** for auth, **Stripe** for checkout, webhooks, portal, and promo codes, **Resend** from `orders@bestjeepdecals.com`, **Sentry** + **PostHog** (+ GA). Tailwind 4, Phosphor icons, Zustand cart with persist + promo, Zod + React Hook Form on checkout/admin/newsletter. Package **0.1.0**. Private repo.

Seeded catalog: **30** SKUs at **$29.99** across Hood Decals, Fender Decals, Side Graphics. Compass/Tread/Explorer/Star hood blackouts, Beach/Trail/Squatch/Rescue rated badges, Renegade mountain set, Zombie Outbreak Response Team badge, Since 1941 left/right, and the rest under `public/products/png`. Shop filters cover category, $0–$200 price range, and fitment checkboxes for Wrangler JL/JK/TJ, Gladiator JT, Cherokee XJ, Grand Cherokee, Renegade, Compass.

![Empty cart. trust path still on-brand](/blog/best-jeep-decals-convex-stripe-storefront/screenshots/cart.png)

Admin lives under `(private)/admin` with `requireAdmin`. product CRUD (soft delete), orders, CSV export. Wishlist hearts persist in Convex. Reviews attach to products. Related products on PDPs. Billing defs include a **Decal of the Month Club** at **$14.99/mo** plus gift-card and rush-production add-ons. ROADMAP marks the Zod/RHF, Stripe+Resend, and Zustand modernization pass complete.

![Catalog collage from seeded PNGs](/blog/best-jeep-decals-convex-stripe-storefront/screenshots/catalog-grid.png)

## Where

The storefront lives on the open web: [www.bestjeepdecals.com](https://www.bestjeepdecals.com) (apex redirects to www). GitHub homepage still lists the Vercel alias `bestjeepdecalscom.vercel.app`. Code: private [HurleyUS/bestjeepdecals.com](https://github.com/HurleyUS/bestjeepdecals.com).

Public routes: shop, product, category, cart, checkout, wishlist. Auth under Clerk catch-alls. Robots.txt allows shop/product/category and blocks admin/api/sign-in/sign-up. Aug 8 added `X-Robots-Tag: index, follow` on Vercel so the deploy stops asking crawlers to ignore it.

Audience sits next to Jeep forums, jamborees, and every Instagram wrap account that still cannot take a Stripe payment without a third-party form.

## When

**2024-12-16.** Create Next App. Next day: shadcn init. Dec 27: a "ghostty released" commit. Three commits. Then silence through 2025.

**2026-01-08.** The product actually starts. OPPORTUNITIES.md. Homepage pass. Migrate to convex-nextfaster. **Build MVP e-commerce storefront.** Seed script and `.env.example` for production readiness.

**2026-02.** Superadmin email gate. then security move to a server component. Stripe webhook signature verification. Admin auth on product mutations. Cart wired with localStorage session and honest success toasts. Checkout rate limiting. Error and loading boundaries. Next.js thrash: bump to 16.1.6 for a CVE, temporary downgrade to 15.5.12 for middleware, Tailwind v3 to v4, dark-first production audit.

**2026-03-09–17.** Next 15 to 16 for real. Delete deprecated `middleware.ts`. Restore Clerk on `proxy.ts`. Trust signals on cart. Sentry 10 for Next 16. Revenue unlock doc. Google Analytics. robots + next-sitemap. Stripe webhook + order payment flow. Admin dashboard for products and orders. Soft delete. Edit product. CSV export. Promo codes. Shop filters with category, price, Jeep model (#26). Reviews. Wishlists. Related products. Missing catalog images filled in.

**2026-05-14–15.** Blacksmith CI gates on repeat until they stick. Convex URL and Clerk key fallbacks so CI builds do not cry. Deploy health check targets fixed.

**2026-05-22–26.** Redesign commits. Package update PR #28. Sentry instrumentation. dx-maxxing PR #29. Broken images chased. UX passes. **Real catalog seeded** (`24758dd`).

**2026-08-08.** Four commits to finish the clock: force `X-Robots-Tag: index, follow`, unblock that deploy in `next.config.ts`, pin Stripe to package default API version for build compatibility. HEAD `fd105bd`. **Ninety-nine commits** from empty Next scaffold to an indexable commerce deploy.

On 2026-09-08 the live `/` sometimes hit the error boundary during capture while `/shop` and `/cart` still painted the dark chrome. Convex/runtime weather, not a rewrite of the journey.

## Why

A Jeep without identity graphics is fine. A checkout that cannot take money, moderate reviews, or keep a wishlist is not a store. it is a mood board.

I wanted the full path: seeded catalog, model fitment filters, Zustand cart with promos, Stripe webhooks that create orders, Resend that tells you it shipped, admin that can soft-delete a SKU and export CSV, CI that builds without secret theater, and a robots header that admits the site wants to be found.

So I kept shipping until the redesign matched the trail aesthetic and the seed matched the PNG drawer. It is still 0.1.0. Decal Club and gift-card add-ons sit in billing defs waiting for the live Stripe dial. That is fine. The document model already holds products, carts, orders, reviews, wishlists, and subscriptions in one Convex project.

What would you put on a Wrangler hood first: a compass blackout, a tread pattern, or a beach-rated badge that starts arguments at the trailhead?
