# Appalachian Estate Sales: I rebuilt the Elementor site in Next before the gallery existed

Source: https://www.michaelchurley.com/blog/appestatesales-elementor-to-next-wnc-liquidation  
Published: 2026-08-08  
Author: Michael C. Hurley  
Tags: appalachian-estate-sales, appestatesales, elementor, nextjs, western-north-carolina, waynesville, estate-sales, local-business, convex, resend, martech, hustle-launch

![Appalachian Estate Sales homepage, live capture](/blog/appestatesales-elementor-to-next-wnc-liquidation/screenshots/home.png)

## Who

I build local sites for operators who already have customers and an Elementor habit. Appalachian Estate Sales is Rene' Rickman Ballard's liquidation and downsizing practice in Waynesville: Haywood through Henderson Counties, phone on the header, Facebook already running the sale calendar.

The audience for the business is families mid-transition: bereavement, assisted living moves, divorce. The audience for this write-up is anyone shipping an Elementor-to-App-Router rebuild who still needs lead capture to work on day two.

## What

I rebuilt the marketing site as **Next.js 16.1.7** (App Router), React 19, Tailwind v4, Bun, shadcn/ui, under private `Hustle-Launch/appestatesales-com`. Package.json still names the app `web` at **0.1.0**.

![Convex schema: leads and subscribers](/blog/appestatesales-elementor-to-next-wnc-liquidation/screenshots/schema.png)

What exists in code and on the live host:

- Seven routes: home, about-rene, estate-sale-services, estate-sales-process, previous-estate-sales, upcoming-estate-sales, contact-us
- Layout stack: Header (logo + porch swing + phone), cyan Sidebar nav, Footer contact form, floating mobile bar
- Design tokens pulled from the Elementor screenshots: cream ground, cyan nav, coral subscribe/CTA
- Markdown under `content/` as the copy source of truth
- Schema.org LocalBusiness + FAQ JSON-LD (`app/schema.ts`) pointing at `https://appestatesales.com`
- Convex tables `leads` and `subscribers` with email indexes
- `/api/contact` and `/api/subscribe` writing Convex + Resend (notify@uncap.us to AES Gmail + a michaelmonetized lead alias)
- Sentry project `appestatesales`, PostHog provider slot, Blacksmith `ship.yml` prebuilt deploy
- Estate Sale Liquidator Pros badge on the home article

What is still a stand-in: Previous and Upcoming pages embed the Facebook Page plugin for `estate.tag.sales.wnc`. There is no Convex-backed sales gallery yet. README migration checklist still marks Convex and Resend as "coming soon" even though both paths are in the tree.

![Shipped pages vs Facebook-embed gap](/blog/appestatesales-elementor-to-next-wnc-liquidation/screenshots/stack-gap.png)

## Where

Live: [www.appestatesales.com](https://www.appestatesales.com/). HTTP 200 on pack day, `X-Robots-Tag: index, follow`. Apex redirects 307 to www. Vercel alias `appestatesalescom.vercel.app` serves the same prerender.

`vercel.json` turns **off** git auto-deploy for `main`/`master`; production moves through Blacksmith + `vercel deploy --prebuilt`.

Geography in schema and copy: Waynesville NC 28786, serving Haywood, Buncombe, Jackson, Macon, Swain, Henderson. Social sameAs: Facebook + Instagram.

One liquidator's marketing site for Appalachian Estate Sales.

## When

**2026-03-17.** Init (`916df66`). Same afternoon: images + Resend contact wiring, Convex and Vercel link, test deploy, styling/logo pass, standards.css + shadcn forms, Schema.org LocalBusiness + FAQ. Densest product day.

**2026-03-18.** viewTransition typing fix, sidebar styles, styling cleanup, Convex wiring cleanup, mobile bar "needs work", polish, Resend audience-id fix, build optimizations.

**2026-03-19 10:08 AM ET.** `669a106`: Facebook embed done. Upcoming/previous now lean on the social feed.

**May 13–15.** shipprep standards install (twice) then revert (twice). Churn, not product.

**2026-05-21.** Apply shipprep observability and Blacksmith deploys; harden Sentry runtime (env-driven DSN, no default PII).

**2026-08-08 6:54 AM ET.** `7a87d72`: set `X-Robots-Tag` to `index, follow` on Vercel. HEAD. Twenty-four commits on `main`.

![Commit journey March through August](/blog/appestatesales-elementor-to-next-wnc-liquidation/screenshots/journey.png)

## Why

Elementor migrations fail two ways: pixel-perfect CSS with a dead contact form, or a modern stack with a blank homepage. I aimed at the honest middle: familiar cream/cyan layout clients recognize, seven pages of real copy, and lead capture that actually posts to Convex and Resend.

The sales calendar still lives on Facebook. The robots header asks Google to index a site whose previous-sales gallery is an iframe. That gap is the field note.

**Engagement Q:** If you run estate sales in Western North Carolina, would you trust a Next rebuild that still embeds your Facebook page for the calendar, or do you refuse to ship until Convex owns upcoming and previous sales?
