Skip to content

Hackathon wizard: publish-time cross-section validation checklist #595

Closed as not planned

Description

@0xdevcollins

Problem

The hackathon create/edit wizard is free-roam (any section reachable at any time) and validates per-section on save, but there is no aggregate validation at publish/submit time. An organizer can land on Review & Publish with sections that are empty or invalid and only discover the problem when the publish call fails server-side, with no clear pointer to what's wrong.

Current state (verified 2026-06-15)

  • Per-section save validation exists (each section validates its own zod schema when saved).
  • Publish runs through hooks/use-hackathon-publish.ts (the escrow/publish flow) with no pre-publish full-draft validation gate.
  • No aggregate validator exists — grep for validateAllSteps / validateForPublish / getMissingSections in lib/utils/hackathon-step-validation.ts, hooks/use-hackathon-step-save.ts, hooks/use-hackathon-publish.ts returns nothing.

Proposed

  1. Add a submit-time validator in lib/utils/hackathon-step-validation.ts that runs every section's schema against the saved draft and returns a per-section result: valid | empty | invalid (+ the specific errors).
  2. Render a Review & Publish checklist: list each section with its status and a deep-link (?section=...) that jumps straight to the section needing fixes.
  3. Block publish until all required sections are valid (the checklist is the gate, not a raw server error).

Sections to cover

Information, Timeline, Participation, Tracks, Rewards/Prizes, Custom Questions, Resources, Judging, Collaboration.

Acceptance criteria

  • Clicking Publish with a missing/invalid section shows the checklist and blocks submission.
  • Each checklist item deep-links to the correct section.
  • A fully-valid draft publishes with no checklist blockers.

Notes

Purely frontend — no backend or env dependency. This is the remaining half of the "save-time + submit-time validation" wizard work (save-time already exists).

Activity

  1. linear commented on Jun 15, 2026

    @linear
  2. coderabbitai commented on Jun 15, 2026

    @coderabbitai
    🔗 Related PRs

    #430 - Submission page [merged]
    #443 - feat: Enforce Submission Requirements (requireGithub, requireDemoVideo, requireOtherLinks) [merged]
    #451 - UI fixes [merged]
    #547 - fix(submissions): improve link validation UX, banner display, and error toasts [merged]
    #586 - fix(submissions): unbreak submission detail page + publish hackathon recap [merged]


    📝 Issue Planner

    Check the box below or use the @coderabbitai plan command to generate an implementation plan and prompts that you can use with your favorite coding assistant.

    • Create Plan

    🧪 Issue enrichment is currently in open beta.

    You can configure auto-planning by selecting labels in the issue_enrichment configuration.

    To disable automatic issue enrichment, add the following to your .coderabbit.yaml:

    issue_enrichment:
      auto_enrich:
        enabled: false

    💬 Have feedback or questions? Drop into our discord!

  3. Idrhas commented on Jun 15, 2026

    @Idrhas

    Hi, I'd like to work on this issue, I have experience with the relevant technologies and ecosystem and have previously contributed to similar issues. I’m comfortable working with the codebase and familiar with standard practices.

  4. Senorespecial commented on Jun 15, 2026

    @Senorespecial

    i would love to work on this issue, please me,

  5. leocagli commented on Jun 23, 2026

    @leocagli

    This looks like something I can tackle effectively. Please assign me!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions