Open-Source Cold Email & Warmup Platform
Warmbly is the open-source platform for cold email: warm your mailboxes, send campaigns, and triage every reply. Run it on our cloud or self-host the whole thing.
Create, edit and manage the HTML content embedded on Garber dealership websites.
MarketingGitHub @rnorcrossOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗A small CMS for the HTML content the Garber marketing team embeds on dealership websites (Dealer.com content pages, homepage sections, About Us sets and similar).
.html file) to bring it under version control.Repo: push this folder to a GitHub repo, for example rnorcross/garber-content-studio.
Vercel: Add New → Project → import the repo. Framework preset: Next.js. Don't deploy yet.
Database: in the Vercel project, Storage → Create → Neon Postgres, and connect it to the project. This adds DATABASE_URL.
Image storage: Storage → Create → Blob, and connect it to the project. This adds BLOB_READ_WRITE_TOKEN. Uploads go straight from the browser to Blob (no size limit from the serverless function), are stored durably, and are served from Vercel's CDN at permanent URLs.
Environment variables (Project → Settings → Environment Variables):
| Name | Value |
|---|---|
ANTHROPIC_API_KEY | An API key from console.anthropic.com |
AUTH_SECRET | Any random string of 32+ characters (openssl rand -base64 48) |
ADMIN_EMAIL | The first admin's email, e.g. [email protected] |
ADMIN_PASSWORD | A first-sign-in password for that admin (change it after) |
ADMIN_NAME | Optional, e.g. Robert Norcross |
ANTHROPIC_MODEL | Optional, defaults to claude-sonnet-5-5 |
Load the content: open https://<your-app>.vercel.app/setup, enter ADMIN_EMAIL / ADMIN_PASSWORD, and click Run setup. It creates the tables, your admin account, the 35 shared images (uploaded to Blob), and 150 pages — the four Garber Buick originals plus every template for every Garber dealership. Safe to run again; it only adds what's missing, and after the first run only a signed-in admin can run it. (The same thing from a terminal: npx vercel env pull .env.local --environment=production, then npm run db:migrate && npm run db:seed.)
Sign in with ADMIN_EMAIL / ADMIN_PASSWORD and change the password under Account. Add teammates from Team; each gets a temporary password and picks their own on first sign-in.
cp .env.example .env.local # fill in values; a local Postgres works for DATABASE_URL
npm install
npm run db:migrate && npm run db:seed
npm run dev
Every page is a fragment, not a full document: optional social-share meta tags, the Work Sans font link, one <style> block, then one wrapper <div class="gcs-…">. No header or footer, since Dealer.com supplies those. Paste the whole thing into the content area of the Dealer.com page.
Embedded images (data: URIs) work but make the paste heavy. The Images tab lists every image, flags embedded ones, and Host all embedded images uploads them to the media library and swaps in the hosted URLs (the Garber Buick About page drops from about 3 MB to about 116 KB). Any image can also be replaced by uploading, picking from the library, or pasting a URL.
Each dealership's Open Graph image defaults to assets.garberauto.com/assets/open-graph/open-graph-<store>.jpg. The dealership page shows whether that file exists and lets an admin pick or upload a different one.
Without BLOB_READ_WRITE_TOKEN (local development), uploads are saved under .data/uploads instead.
scripts/build-seed.mjs documents how the Garber Buick pages were converted from the preview site; it isn't needed again.lib/dealer-pages.mjs builds each store's version of the five templates from the Garber Buick originals:
Not pre-built: Garber Chevrolet Webster and Garber Subaru (now Parker Automotive, which uses different styling) and the two "(Overall)" campus rows. The Automall CDJR and Ford pages use the Automall campus photo; the Curtis Garber stores have no storefront photo yet, so their About page shows the original Garber building alone.