About HackFinder

A hackathon discovery platform born out of frustration, built with modern tools, and deployed at the edge.

Why I Built HackFinder

My first virtual hackathon was in 2026 — the Ready, Spec, Ship Hackathon. After that experience, I was hooked. I wanted to find more hackathons to join, but quickly hit a wall.

Hackathons are scattered across Devpost, MLH, HackerEarth, DoraHacks, and others — each with their own site, their own search, and no way to see everything together. I kept discovering events too late or missing registration deadlines because there was simply no single place to look.

So I built one. HackFinder aggregates hackathon data from multiple platforms into one searchable, filterable interface — updated every hour. No more checking four different sites. No more missing deadlines.

I'm sharing it publicly because if I had this problem, others probably do too. And as a portfolio project, it demonstrates full-stack development, edge computing with Cloudflare, and a modern spec-driven build process.

How It Was Made

Built with Kiro — an AI-powered IDE

This project was built using Kiro's spec-driven workflow, which guided the entire process from requirements gathering to deployment. Here's how it came together:

  1. 1

    Requirements

    Defined 8 requirements covering data aggregation, search, filtering, responsive UI, SEO, and deployment.

  2. 2

    Design

    Architected the system with Astro + Cloudflare Pages/Workers/D1, an adapter pattern for data sources, and FTS5 for search.

  3. 3

    Task Breakdown

    83 tasks organized into waves, each building on the previous — from schema design through UI polish.

  4. 4

    Implementation

    Code generated and verified task-by-task with 230 unit tests ensuring correctness at every step.

  5. 5

    Deployment

    Deployed to Cloudflare's edge network for global performance — entirely on the free tier.

Want to build something like this?

Check out Kiro — the AI-powered development environment that guided this entire build from requirements to deployment.

A note on naming

The product is called HackFinder in the UI — short, punchy, and clean in a nav bar. The repo and subdomain use hackathon-finder — the full word helps with SEO (people search "hackathon finder", not "hackfinder") and makes the URL instantly clear to anyone who sees it. This is the same pattern real products use: a branded name for the interface, the descriptive name for discovery.

Deployment gotchas we hit

Building this was smooth until deployment. Here's what actually tripped us up — in case it saves you time:

  • ●KV namespace conflict: The Astro Cloudflare adapter auto-provisions a "SESSION" KV namespace. If you deploy, delete, and redeploy, it fails because the namespace already exists. Fix: disable sessions with session: false in astro.config.mjs.
  • ●D1 binding timing: The first Cloudflare deploy always fails because you can't add D1 bindings until after the project exists. It's a chicken-and-egg problem — deploy once (it fails), add the binding, then redeploy. This is expected.
  • ●Empty database ≠ broken: After a successful deploy, the site shows "Failed to load hackathons" — this looks like a bug but it's just an empty D1 database. You need to run the migration and trigger the aggregation worker separately.
  • ●database_id in wrangler.toml: The Cloudflare git integration's deploy step needs a valid database_id in wrangler.toml. A placeholder breaks the build. The ID is a read-only identifier (not a secret), so it's safe to commit.
  • ●Raw HTML in API data: Devpost returns prize amounts wrapped in HTML tags (e.g., <span data-currency-value>33,900</span>). Our normalizer initially stored this raw — it displayed as broken markup on the detail page. Fix: added a stripHtml() function in the normalizer, then had to wipe D1 and re-aggregate because existing records weren't updated on merge.

Tech Stack

The technologies powering HackFinder

Built By

RD

ReproDev

Full-stack developer, hackathon enthusiast, builder of things.

See my full portfolio at khurramnazir.com

Past Hackathon Projects

A few things I've built at hackathons

View the Code

The full source is open on GitHub. The git history shows the development progression commit-by-commit — from initial scaffold through final polish.

View on GitHub