Skip to content
Auctionyx Auctionyx

Next.js 15 · React 19 · Tailwind CSS v4

A complete auction website. Backend included.

Auctionyx is a production-grade auction platform with three sites in one: a public saleroom with live proxy bidding, a bidder account area and a full admin dashboard. The backend that runs it is built in: PostgreSQL, automatic closing, invoices with card payments, e-mail and image uploads. Try it on demo data in two commands, then connect a database and take real bids.

  • Runs with zero setup
  • TypeScript strict
  • Light & dark
  • PostgreSQL backend
A red 1961 Aston Martin DB4 coupé on a showroom floor Live 00:48

Lot C01 · Classic & Vintage Motor Car Auction

1961 Aston Martin DB4 Coupé

Current bid

$304,000

You’re leading

7 bids Next minimum $309,000 Reserve met

Your maximum $330,000 — private, bids for you

  1. You auto$304,000
  2. Bidder B60A6$299,000
  3. Bidder A80A5$249,600

Anti-snipe Late bid — clock reset to 2:00

You’ve been outbid Lot C01 is now $335,000

  • 1955 Mercedes-Benz 300 SL GullwingMotor cars
  • Omega Speedmaster Professional wristwatchWatches
  • Bottles of 1982 Château PétrusFine wine
  • An abstract landscape painting in redsArt
  • A white villa among palm treesEstates
  • A signed yellow football shirt, number 17Memorabilia
  • A Cartier Tank wristwatchWatches
  • A Lamborghini MiuraMotor cars
  • The case back of a Rolex SubmarinerWatches

Read this first

Who Auctionyx is for

Auctionyx is a complete auction website with its backend. It is built for auction houses and dealers who want their own online saleroom, and for the developers and agencies who build one for a client.

What you get

  • Every page, form and dashboard screen, finished and responsive
  • A complete backend on PostgreSQL: accounts, bidding, automatic closing, winners and invoices
  • Stripe card payments, e-mail (SMTP or Resend) and image uploads
  • Realistic demo data, and one command that clears it before you launch

What you provide

  • A PostgreSQL database. A free managed one (Neon, Supabase) is enough to start.
  • An e-mail provider and, for card payments, your own Stripe account.
  • A Node.js 20+ host: Vercel, a VPS or Docker. Not for PHP or cPanel-only hosting.
  • Someone comfortable running a few terminal commands to install it. The guide walks through every step.

One template, three sites

Everything an auction house needs on screen

Bidders browse and bid. Members manage their bids and invoices. Staff run the whole saleroom. All three are built, connected and styled as one product.

A saleroom that sells

The homepage, events, catalogue and lot pages visitors land on and bid from.

  • Homepage with search, live and upcoming sales, departments and featured lots
  • Catalogue with search, category and status filters, sorting and pagination
  • Lot pages with gallery, estimate, provenance, condition report and bid history
  • Approximate price in the visitor’s own currency
  • Lot enquiries, “Sell with us” consignments, contact and legal pages
The full Auctionyx homepage: hero with search, live and upcoming auction events, departments, how it works, featured lots, statistics, testimonials and a call to action

A home for every bidder

Everything a registered bidder needs after they place their first bid.

  • Register, sign in, password reset and e-mail verification
  • Optional two-factor (TOTP) sign-in
  • My bids, grouped by leading, outbid, won and lost
  • Watchlist and a notifications inbox
  • Invoices with buyer’s premium, tax and a pay button
My bids: lots grouped under Leading, Outbid and Won, each showing the bidder's maximum and the current price The invoices page in the bidder account The bidder account dashboard

Run the whole saleroom

A real back office, not a settings page: events, lots, people, money and records.

  • KPIs, a “needs attention” queue, lots ending soon, recent activity
  • Events and lots with lifecycle controls and image galleries
  • Bidders: approve, suspend, set bid limits, grant admin roles
  • Invoices, enquiries, consignments and a full audit log
  • Sales reports with CSV export, and site settings
The admin dashboard with paid and outstanding totals, live lots, registered bidders, a needs-attention list and lots ending soon The admin lots table Editing a lot in the admin dashboard Sales reports in the admin dashboard

The bidding engine

Bidding that behaves like a real saleroom

Bidders set a private maximum and the system bids for them, one step at a time, only as high as it has to. Here is exactly what happens.

Current price

$105

Ben leads. The price went only one step past Ana’s maximum.

  1. 1

    Ana bids $60, with a private maximum of $100

    The price is $60. Nobody else can see her $100.

  2. 2

    Ben bids $70, maximum $90

    Ana’s maximum is higher, so her proxy bids back automatically at $95, one step past Ben. Ana still leads.

  3. 3

    Ben comes back: $100, maximum $150

    Ben now beats Ana’s $100, so the price becomes $105, not $150. Ana gets a “you’ve been outbid” notification.

  • Anti-snipe soft close

    A bid in the last five minutes pushes the end time out to two minutes from now, so nobody wins by bidding in the final second. Both times are editable in settings.

  • Reserve prices stay secret

    The public sees only “reserve met” or “not met”, never the amount. When a bidder’s maximum covers the reserve, the price rises to meet it, as it does on eBay.

  • A double-click never bids twice

    Every bid carries a request ID. A retry places nothing new, and a changed bid under the same ID is refused.

  • Live, and honest about time

    The countdown is synced to server time, the panel refreshes on its own, and bidders see “You’re leading” or “You’ve been outbid” at a glance.

These rules run for real in the built-in backend, inside database transactions, and in the demo data so you can try them first. They are also written up in docs/spec/, with a table of worked examples, for anyone who connects their own backend.

Feature list

Built in, not bolted on

The details that usually get cut from a template are the ones an auction site lives on.

  • No hard-coded content

    Site name, menus, homepage sections and legal pages are edited in the admin dashboard, not in React files.

  • Watchlist

    Bidders follow lots and get told before they end.

  • Invoices

    Hammer, buyer’s premium and tax, exact to the cent. Paid by card through Stripe, or marked paid by hand.

  • Two-factor sign-in

    Optional TOTP, e-mail verification and password reset.

  • Notifications

    Outbid, won and watched-lot alerts in an inbox and by e-mail.

  • Consignments

    “Sell with us” requests land in the admin inbox.

  • SEO ready

    Metadata, Open Graph, sitemap, robots.txt and Product structured data.

  • Safe to launch

    The admin dashboard lists anything still missing before launch — demo accounts, e-mail, the scheduler, image storage — and a production server never serves the demo data by accident.

  • Light, dark, system

    Both themes designed, not inverted.

  • Accessible

    Keyboard and screen-reader friendly markup throughout.

Backend included

Demo data today. Real auctions with one line.

Every piece of data flows through one typed API client. Out of the box it answers from the built-in demo data. Set DATABASE_URL and the built-in backend runs your auctions on PostgreSQL — same site, same screens.

Pages & components UI only — never fetch
Services one function per API call
API client validates every response with Zod
Built-in demo API JSON data + working auction engine
Built-in backend PostgreSQL · payments · e-mail
.env.local
# Nothing to set. The demo data answers.
DATABASE_URL=
  • Bids you can trust with money

    Every bid runs in one database transaction that locks the lot. A double-click is recorded once, and prices are exact decimals, never floating point.

  • Closes on time, every time

    Sales open and close by themselves. Winners are picked only when the reserve is met, then invoiced and e-mailed — never twice, even on several servers.

  • Or bring your own backend

    Prefer Laravel, Django or Go? Set API_BASE_URL instead. Every endpoint is documented, and a wrong response names the field that is wrong.

Screens

Captured from the template as it ships

The real template running on its own demo data. Nothing here is a mock-up, and you can open every one of these pages in the live demo.

Phone first

Most bids arrive from a phone

Every screen is designed for a thumb as well as a mouse, from the catalogue to the admin tables. It holds up down to a 320-pixel screen with no sideways scrolling.

  • Bid panel and countdown stay readable on small screens
  • Touch-sized controls and a proper mobile menu
  • Fast: pages are rendered on the server
The Auctionyx homepage on a phone
A lot page on a phone, with the photo gallery and description

Stack & quality

A modern stack, engineered to last

The same checks we run before a release ship with the template, so your team can keep running them.

  • Next.js 15App Router
  • React 19Server Components
  • TypeScriptstrict mode
  • Tailwind CSS v4design tokens
  • PostgreSQLDrizzle ORM
  • Stripecard payments
  • Zodruntime contracts
  • Vitestunit & contract tests
  • Playwrightend-to-end tests
  • GitHub ActionsCI workflow

Bundle budget

A check fails the build when page JavaScript grows past its limit.

Secret scan

The client bundle is scanned so a server key can never ship to browsers.

Three kinds of docs

An offline HTML guide for site owners, developer and backend guides, and the bidding rules spec.

Quick start

Running in two commands

No database and no .env file needed to see everything working. Sign in with a demo account and explore both sides, locally or on the live demo. Ready for real bids? Add DATABASE_URL, then run pnpm db:setup and pnpm admin:create.

Admin
admin@demo.test
Bidder
bidder@demo.test
Password
demo1234
Sign in on the live demo

The public demo resets every six hours. Accounts and site settings are locked; bidding, watching and catalogue editing all work.

Requires Node.js 20+ and pnpm 9, plus PostgreSQL for real auctions. Deploys to Vercel, a VPS or Docker.

Terminal
$ pnpm install
Packages installed ✓
$ pnpm dev
▲ Next.js 15  ready on http://localhost:3000
Demo API loaded · auctions live ✓

Pricing

Choose your plan

Full source code with the backend included. Sold directly by WaaFaa — pay monthly, yearly, or once for life.

  • Single site

    For your own auction house.

    $9/month $29/year $99one payment

    Buy for 1 site
  • Unlimited sites

    For studios with many auction clients.

    $49/month $149/year $499one payment

    Buy unlimited

Compare plans and see everything included · Prices in US dollars; any sales tax or VAT is added at checkout. 7-day money-back guarantee (terms at checkout). Secure checkout and licence delivery by Freemius.

Every plan includes

Full source code, backend included

Public site, bidder account, admin dashboard, the PostgreSQL backend (payments, e-mail, uploads, scheduler), demo data, API contract, bidding spec and documentation. Only need the front end for a backend you already have? A front-end-only edition is also available — ask us.

You may

  • Run as many production auction websites as your plan covers, yours or your clients’
  • Modify the code, use the built-in backend or connect your own
  • Host it anywhere you control

You may not

  • Resell or share the source as a template or starter kit
  • Publish the source in a public repository
Ask a question first

Support by email

Help with installation (database set-up included) and bug fixes, within 1–2 business days, Monday to Friday, Bangladesh time (GMT+6).

Updates

Included while a monthly or yearly plan is active, and for good with lifetime. Your websites keep working either way.

Not part of support

Custom features, server administration and design work. Those are projects, not support tickets.

Questions

Frequently asked questions

Does it include a backend or database?

Yes. The backend is built into the same Next.js app. Give it a PostgreSQL database and it stores accounts, sales, lots, bids, invoices and your pages; opens and closes sales on time; picks winners; sends e-mail; takes card payments through Stripe; and stores uploaded photos. The database itself is yours — a free managed one such as Neon or Supabase is enough to start.

Can I use my own backend instead?

Yes. Set API_BASE_URL and the site talks to any backend that speaks the documented REST API: Node, Laravel, Django, Rails, Go, or even WordPress. When a response does not match the contract, it tells you exactly which field is wrong.

Can I take card payments?

Yes, with your own Stripe account. Add your Stripe keys and unpaid invoices get a Pay now button; payments are confirmed by a signed webhook, and refunds go back through Stripe. Without Stripe, buyers pay offline and you mark invoices paid.

Do I need a developer?

To install it, you need someone comfortable running a few terminal commands and setting environment variables. The offline guide walks through every step, and the admin dashboard lists anything still missing before launch. After that, sales, lots, bidders, invoices, pages, menus and settings are all run from the admin dashboard.

Can I host it on shared PHP hosting?

No. Auctionyx is a Next.js application and needs a Node.js 20+ host: Vercel, Netlify, Render, a VPS with pm2, or Docker. The developer docs include a deployment guide for each.

Can I build a site for a client?

Yes. Each plan covers a number of production websites — 1, 5 or unlimited — whether they are yours or your clients’. You may not resell the source code itself as a template or starter kit.

Can I use the demo photos on my live site?

They are there to show the design. The photos come from Wikimedia Commons under their own licences, listed with credits in public/images/CREDITS.md. Replace them with your own images before you launch; pnpm db:reset clears the demo data. If you keep any photo, keep its credit.

How do I change the name, colours and content?

Site name, menus, homepage sections and legal pages are edited in the admin dashboard. Colours, fonts and the logo are design tokens and files in the project. The offline guide walks through each step.

Is the demo safe to put online?

Yes, when you ask for it on purpose. A production server refuses to serve demo data unless API_MODE=mock is set. A public demo also locks the demo accounts and settings, masks what visitors type in the admin, and resets its data every six hours. On a real site, the dashboard warns you while the demo accounts still exist, and one command removes them.

What do I need to know to customise it?

For content and colours, very little. The offline guide covers it. For deeper changes you should be comfortable with React, Next.js and TypeScript. The code keeps one simple rule: pages never fetch data themselves, they call a service, so every change has one obvious place to go.

Skip months of building.

Start with an auction platform that is already finished, front end and back end, and spend your time on your sales.