Skip to content

feat(auction): Silent Auction Space (browse, bid, admin, email) - #63

Open
scrimshawlife-ctrl wants to merge 9 commits into
hd-admin:mainfrom
scrimshawlife-ctrl:feat/auction-space-mvp
Open

feat(auction): Silent Auction Space (browse, bid, admin, email)#63
scrimshawlife-ctrl wants to merge 9 commits into
hd-admin:mainfrom
scrimshawlife-ctrl:feat/auction-space-mvp

Conversation

@scrimshawlife-ctrl

Copy link
Copy Markdown
Contributor

Summary

Adds Auction Space — a fundraising silent auction for art/donated lots — on the existing Hacker Dojo Jekyll site without redesigning the marketing chrome.

Slice Delivers
0 Postgres schema, migrate/seed, shared API helpers, health
1 Public gallery /auction/, lot detail + countdown
2 Email OTP login + place bid (transactional row lock)
3 Admin /auction/admin/ — create / edit / close + winner
4 Resend emails + ending-soon / auto-close cron
UI Styles aligned with site (Rajdhani/Saira, red CTAs, card shadows)
Nav Red Auction header button (desktop + mobile) + footer link

Infra defaults (documented in docs/auction/DECISIONS.md)

  • DB: Postgres (DATABASE_URL)
  • Auth: Magic-link / OTP + HTTP-only session cookie
  • Email: Resend
  • API host: Vercel (api/*.js + vercel.json cron)

Key paths

  • docs/auction/ — planning + runbooks
  • api/auction/* — serverless handlers
  • lib/auction/* — shared server lib
  • auction/ — Jekyll pages
  • static/css/auction.css, static/js/auction*.js
  • Header: _includes/header.html/auction/

Test plan

  • cp .env.example .env.local (set DATABASE_URL, SESSION_SECRET, ADMIN_EMAIL)
  • npm install && npm run auction:bootstrap
  • API: npm run auction:dev (or Vercel) · site: bundle exec jekyll serve
  • Homepage shows red Auction nav → /auction/
  • Gallery shows demo lot + countdown
  • Place bid via OTP (dev_otp if Resend unset)
  • /auction/admin/ as admin: create → activate → close
  • Cron: POST /api/auction/cron/ending-soon with AUCTION_CRON_SECRET

Notes

  • Payments / Impact Relay are later phases (out of this PR)
  • Waitlist Airtable pattern is not used for bids (Postgres required)
  • Local dual-port: Jekyll :4000 + API :3000 (HD_AUCTION_API auto on localhost)

Docs

Start at docs/auction/START_HERE.md · decisions in docs/auction/DECISIONS.md

scrimshawlife-ctrl and others added 8 commits August 4, 2026 09:52
* docs: add Silent Auction MVP architecture and planning

* docs: expand Silent Auction roadmap across phases 0–4

* docs: slice Phase 1 into minimal fully functional build path

* docs: add Auction Space planning package and decision log

Bring Silent Auction / Auction Space docs onto the fork, brand the
package as Auction Space, and add DECISIONS.md so Phase 0 can close
once reviewers record DB, auth, email, and API host choices.

Co-authored-by: Daniel Meyer <DKMeyer1@student.fullsail.edu>

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Record infrastructure defaults (Postgres, magic-link auth, Resend, Vercel)
and ship the first runnable Auction Space foundation on the existing site.

Slice 0: migrations, admin seed, shared API helpers, health/admin ping.
Slice 1: public artworks APIs, demo lot seed, /auction gallery and detail
with client countdown (bid CTA deferred to Slice 2).
Add magic-link/OTP auth (request-link, verify, session cookie),
transactional place-bid with artwork row lock, bid_received/outbid
email hooks via Resend (dev_otp when email unset), and artwork-page
login + bid modal.
Add admin artworks list/detail API, create/patch/delete-draft/close
endpoints, and /auction/admin UI so staff can run lots without SQL.
Close sets winner from high bid and sends winner/closed emails when
Resend is configured.
Polish bid/outbid/winner/closed templates with shared footers, notify
all admins on close, and add secured ending-soon cron with idempotent
sends plus auto-close for lots past ends_at. Hourly schedule in vercel.json.
Match silent auction pages to existing site language: section titles,
Rajdhani/Saira type, #e13838 / #df3f33 reds, peachpuff card hover,
shared button styles, soft purple hero wash, and 15px white cards with
site shadow tokens. Update gallery, detail, modal, and admin chrome.
Add auction-dev-server for API without Vercel CLI, csv/base64/logger
gems for Ruby 4, and localhost HD_AUCTION_API wiring for dual-port demos.
Style Auction as a red chip next to Donate in desktop and mobile nav,
and add an Auction link in the footer for discoverability.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants