GitHub Treasure Hunt is a calm, static discovery engine for open-source gems. Search by keyword, browse a topic, narrow the field to hidden gems, or roll the dice for a serendipitous repository from GitHub's public search API.
- Search for an idea. Start with a keyword such as
climate,accessibility, orterminal. - Explore by topic. Jump into AI, design, security, education, developer tools, and more with one tap.
- Find hidden gems. Filter repositories by star count to look beyond the obvious choices.
- Make the most of 30 minutes. Apply a focused recipe for smaller, active, approachable projects.
- Leave it to chance. Choose Surprise Me for one hand-picked random repository at a time.
- Pass a good find along. Share a repository directly from its card; on supported devices this opens the native share sheet, otherwise it copies the repository link.
- Send it to your sky. Every repo card has a Send to sky ✦ button that
opens Lodestar with the repository
pre-loaded as a star (tagged
origin: "treasure-hunt"), so a find you want to keep lands in your personal night sky.
Treasure Hunt is one of three connected tools. It is a stateless discovery
engine; Lodestar is the memory layer.
Send to sky encodes the repo into a small payload in the Lodestar URL hash
(…/lodestar/#/add?s=<encoded>) — no backend, no shared storage, the URL is the
whole wire. The shared payload + encoding contract lives in
src/lib/starLink.js, copied verbatim from Lodestar and
covered by a round-trip test so the sender and receiver never drift.
git clone <repository-url> github-treasure-hunt && cd github-treasure-hunt
npm install
npm run devNode.js 20.19 or newer is recommended.
- Every search, category, star band, and surprise roll uses one canonical GitHub repository query.
- Query responses are cached for the session, so one Surprise Me request can provide roughly 30 discoveries.
- Filter changes are debounced to protect the unauthenticated GitHub API quota.
- An optional fine-grained, public read-only PAT can be stored in the visitor's own browser to raise their personal search limit. It is never sent anywhere except directly to GitHub.
This project is deliberately simple: no AI agents, no social network, no crypto, no accounts, and no analytics. You arrive, discover something cool, and leave.
The app keeps the hunt focused: one centered discovery panel, a single accent colour, responsive controls, and clean repository cards. Everything works with a keyboard, including visible focus states for search, filters, settings, and repository links.
npm test
npm run lint
npm run buildThe repository includes a GitHub Pages workflow for main. After pushing the
repository, enable Pages in repository settings and choose GitHub Actions as
the source. Vite is configured for the /github-treasure-hunt/ base path.
Small, focused contributions are welcome. Before opening a pull request:
- Keep the app static and client-side.
- Never commit a token, key, credential, or user data.
- Avoid new dependencies unless the project scope explicitly requires one.
- Run
npm test,npm run lint, andnpm run build.
Look for issues labeled good first issue or help wanted if you would like a
starting point. See CONTRIBUTING.md for a quick first-
contribution walkthrough.
