feat(bitrefill): cover image upload, submission terms + feedback, program page sections#178
Merged
Merged
Conversation
…gram page sections - Admin cover image upload to a new public Supabase Storage bucket (program-assets) via an admin-gated POST /programs/:slug/cover-image, alongside the existing URL field with a live preview. - Required submission terms checkbox + "Read terms" modal that preserves the in-progress submission; agreement stamped in agreed_to_terms_at. - Required 6-question feedback form on the submission flow, stored in a new program_submissions.feedback JSONB column (server validates structure). - New markdown content section type (react-markdown + remark-gfm) rendered on hackathon pages above Submit; authored the bitrefill-2026 page sections in mock + a generated content migration.
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
…tro copy - Drop the ·INDEX / LIVE stats section on the landing page and the now-unused project-stats fetch + helpers (HomePage only loads programs now). - Update the program-spaces intro to the new WebZero + Stadium framing.
sacha-l
added a commit
that referenced
this pull request
Jun 15, 2026
Resolved SubmitProjectModal conflict: re-applied the verifying-check-in button label + reassurance line onto #178's restructured submit form (main form footer, not the terms modal). Verified auto-merged api.ts, program.controller, program.routes, submission.controller + test keep BOTH the luma gate and #180's editable-scores logic. 428 server tests + client build + lint pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Four UI/UX updates for the PROMPT x PURCHASE Bitrefill hackathon (
bitrefill-2026):program-assets+ admin-gatedPOST /programs/:slug/cover-image(multer, mime + 5MB validation, returns the public URL).ProgramFormModalkeeps the URL field and adds an Upload button with a live preview (enabled once the program exists). Mock mode falls back to a data URL.agreed_to_terms_at.program_submissions.feedbackJSONB column; server validates structure/bounds and drops unknown keys.markdowncontent section type (react-markdown+remark-gfm) rendered on-brand (new-tab links, code blocks, bold, lists, checklist marks). Hackathon pages now rendercontentdirectly above Submit (schedule filtered out so KEY INFO isn't duplicated). Authored all spec sections (build directions, what to submit, how it's judged, FAQ, etc.) into the mock fixture and a content migration generated from the same source.Files of note
MarkdownBody.tsx,ProgramContent.tsx,SubmitProjectModal.tsx,ProgramFormModal.tsx,ProgramDetailPage.tsx,api.ts, newbitrefillContent.ts/submissionTerms.ts/submissionFeedback.ts,mockPrograms.ts.program-asset.service.js,program.controller.js+program.routes.js(upload),submission.validator.js+program-submission.repository.js(feedback/terms).program-assetsbucket,feedback+agreed_to_terms_atcolumns,bitrefill-2026content.react-markdown+remark-gfm; servermulter2.x.Deploy steps (apply in Supabase per docs/PRODUCTION_DEPLOYMENT.md)
20260614000000_program_assets_bucket.sqlmust be applied before cover uploads work in production.20260614000200_bitrefill_2026_content.sqlsets the public page content (it overwrites the program's currentcontentfor that row).Test plan
cd server && npm test— 414 passing (added cover-upload controller cases + feedback-validator cases).cd client && npm run build(tsc typecheck) andnpm run lint --max-warnings 0— both clean.Runtime verification (dev server, mock mode, headless Chromium)
/programs/bitrefill-2026renders all new sections in order above SubmitNotes
developafter fix(judging): relax per-action signing; accept publish statement server-side #177 merged (no overlap).🤖 Generated with Claude Code
Additional changes (landing page)
·INDEX / LIVEstats panel from the home page, along with the now-unused project-stats fetch and helpers (HomePage now only loads programs).program-spaces.tsxto the new framing ("WebZero creates vibrant spaces … Stadium is the entry point …").Runtime re-checked (mock mode): INDEX/LIVE gone, both new sentences render, Explore section intact, no new console errors.