Ecommerce Template
Modern ecommerce template built with Next.js 16, React 19, Drizzle, Better Auth, Supabase, and Stripe.
Is that sale real? We check prices on phones, TVs, laptops, headphones and more at 30+ Australian stores every day, including JB Hi-Fi, Harvey Norman and The Good Guys, and keep the price history so y
CommerceTypeScript · JavaScriptGitHub @SpecifxxOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Is that sale real? We check prices on phones, TVs, laptops, headphones and more at 30+ Australian stores every day, including JB Hi-Fi, Harvey Norman and The Good Guys, and keep the price history so you can see a real deal.
Taken from the repository README
Loading the full README.
Read the full README ↗Price comparison for Australia, starting with mobile phones. Live at compareempire.com.
npm run scrape — reads the public phone listings of 17 stores (scripts/scrapers/)
into data/phones/raw/<retailer>.json: JB Hi-Fi, Harvey Norman, The Good Guys,
Mobileciti, Apple, Samsung, Telstra, Optus, Vodafone, amaysim, TeleChoice, Costco,
Umart, MSY, digiDirect, Betta and Mwave. A store that fails keeps yesterday's file.
Carrier listings are kind: "plan" (device repayments) and never mix into the
outright ranking. docs/stores/survey.md lists the 80+ stores checked and why the
others (Amazon, eBay, Kogan, Big W, Officeworks…) aren't scraped.npm run build:catalog — matches listings to phones by brand + model + storage
(src/lib/normalize.ts), drops refurbished/carrier-locked/outlier listings, writes
data/catalog.json, today's snapshot to data/phones/history/<date>.json and the chart
series to data/series.json.next build prerenders the home, category, brand, deal, browse, compare and guide pages;
product pages render on their first request and Vercel's CDN keeps them until the next deploy.
No database..github/workflows/refresh-prices.yml runs steps 1–2 every morning and commits the
data, which triggers one Vercel deploy a day.
npm install
npm run dev # http://localhost:3000
npm run refresh # re-scrape + rebuild the catalogue (≈3 min)
npm test && npm run typecheck && npm run lint
Write scripts/scrapers/<id>.ts returning RawOffer[], register it in
scripts/scrape.ts and src/lib/retailers.ts, then run npm run refresh and check
the new titles parse (tests/normalize.test.ts).