WallpaperMachine
The wallpapers you love. A new home on your Mac.
Bay Area hackathons, demo days and founder events, and what it takes to get in. Re-crawled every 6 hours.
Translation pending
LifestyleJavaScript · HTMLGitHub @jasonzhang2047-artOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
The maker's introduction consists of the line above. Read the repository README for more details. Repository README ↗
Loading the full README.
Read the full README ↗Bay Area hackathons, demo days, VC and campus events — and what it takes to get in.
Public site: https://jasonzhang2047-art.github.io/wristband/
Private copy on claude.ai: https://claude.ai/artifact/K1UfkKARRu7rdTjzAeNYdo
crawler/crawl.mjs every 6h → site/events.json
├─ sources/luma.mjs Luma map discovery + ~190 followed organizer calendars + ~160 followed hosts
├─ sources/yc.mjs ycombinator.com/events + each event's application deadline
├─ sources/cerebral.mjs Cerebral Valley events & hackathons (schema.org data)
├─ sources/mlh.mjs MLH season list (Bay Area, in person)
├─ sources/devpost.mjs Devpost hackathons, address-checked on each hackathon page
├─ sources/stanford.mjs events.stanford.edu API (entrepreneurship, startups, hackathons…)
├─ sources/meetup.mjs Meetup keyword searches
├─ sources/eventbrite.mjs Eventbrite search pages (pay-to-pitch networking mills filtered out)
└─ sources/crosscheck.mjs compares against a public hackathon listing; anything missing is
re-fetched from its Luma page
data/curated.json web & social sweep (people's posts, deadlines, recaps) — see crawler/SWEEP.md
data/learned.json calendars and hosts the crawler discovered and will follow next run
crawler/watchlist.json VCs, schools, labs, community hubs and people to flag (edit freely)
site/index.html the page (Artifact format); site/events.json is its data
Each run classifies events (hackathon, pitch/demo day, VC-hosted, campus, founder, AI builder meetup, conference),
drops off-topic and spam listings, merges the same event listed on several sites, keeps firstSeen history so
new listings get a NEW tag, and learns new calendars/hosts from relevant events so coverage grows over time.
node crawler/crawl.mjs
node crawler/build-static.mjs && python3 -m http.server 8787 --directory dist
Node 18+ with no dependencies.
.github/workflows/crawl.yml) runs the crawler every 6 hours and on every push to main,
then deploys dist/ to GitHub Pages. It never commits: the previous crawl's events.json and learned.json
are read back from the live site, so first-seen history and followed calendars carry over between runs.wristband-crawl (every 6 hours, while the Claude app is open) runs the web &
social sweep at most every 12 hours, commits data/curated.json and pushes, which starts a crawl on GitHub.
It then copies the fresh events.json from the live site into the claude.ai page.