Skip to content

Add volunteer job board at /jobs - #352

Merged
gregv merged 1 commit into
developfrom
feature/volunteer-job-board
Aug 23, 2026
Merged

Add volunteer job board at /jobs#352
gregv merged 1 commit into
developfrom
feature/volunteer-job-board

Conversation

@gregv

@gregv gregv commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

A job board for volunteer organizer roles (Social Media Manager, Hackathon Operations Lead — Phoenix, Mentor Program Lead). Replaces paid LinkedIn job posts.

Needs the backend PR first: opportunity-hack/backend-ohack.dev#269. Until it deploys, /jobs just shows an empty state.

Pages

  • /jobs — open roles, what you get, how applying works, FAQ
  • /jobs/[slug] — one role. The listing is public; only the apply section asks you to log in.
  • /admin/jobs — create, edit, hide, and delete listings; review applications; one-click accept or kind-rejection emails

The application (built to filter out AI and low-effort applies)

Four steps: about you → commitment → work sample → video & review.

  • A short work sample written for that specific role (200+ characters)
  • A required 2-minute video — one prompt asks them to explain their work sample
  • A required PDF resume upload
  • Hard gates: visa acknowledgment, on-site check for the Phoenix role, and a minimum hours-per-week per role (with a kind message pointing to other ways to help)
  • Drafts autosave to localStorage, so nothing is lost on refresh

SEO and sharing

  • Each role page ships JobPosting schema with employmentType: VOLUNTEER, so Google can list it in job search results for free
  • Full OG/Twitter tags for clean link unfurls, plus share buttons with pre-written text
  • Added to both sitemaps; cross-linked from /volunteer

Gotcha worth knowing

The form keeps noValidate. Without it, hidden inputs from required MUI Selects make the browser block submission silently — no error, no submit event. This is also documented in CLAUDE.md.

Testing

  • Production build passes; title, canonical, OG tags, and JobPosting JSON-LD confirmed in the served HTML
  • Walked the form in a browser against a local backend: prefill, every validation gate, step navigation, and autosave
  • Draft and unknown slugs return real 404s

🤖 Generated with Claude Code

Public /jobs index and /jobs/[slug] detail pages (ISR, refined design,
JobPosting schema with employmentType VOLUNTEER for Google for Jobs).
Login-gated 4-step application form with required work sample, PDF
resume upload, and intro video. /admin/jobs manages listings and
reviews applications with one-click accept/kind-rejection emails.
Sitemaps, admin nav registration, and a /volunteer cross-link included.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
@vercel

vercel Bot commented Aug 22, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
frontend-ohack-dev Ready Ready Preview Aug 22, 2026 9:52pm

Request Review

const parsed = new URL(value);
return (
(parsed.protocol === "https:" || parsed.protocol === "http:") &&
parsed.hostname.toLowerCase().includes("linkedin.com")
@gregv
gregv merged commit a76a6b4 into develop Aug 23, 2026
2 of 3 checks passed
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