The economic layer for open source.
A minimal platform for discovering paid contribution opportunities in open source. Built by Lucci Labs.
Bounties helps developers discover contribution opportunities through:
- Smart Filtering – By language, issue type, industry, and bounty status
- Real-time Search – Instant filtering across thousands of issues
- Good First Issues – Curated entry points for newcomers
- BountyPay Integration – Find paid contribution opportunities (coming soon)
/src
/app
/api
/get-issues # Fetches issues from KV or local JSON
/get-last-update # Returns last sync timestamp
/cron # Updates issues from GitHub API
page.tsx # Main quest browser
layout.tsx # Navigation and theme provider
/components
/quests # Quest cards, filters, search
/ui # shadcn/ui components
/types
quest.ts # Issue → Quest type mapping
/lib
fetch-issues.ts # GitHub API integration
/public
issues.json # Fallback data for local dev
Data Flow:
- Cron job fetches issues from GitHub API (configured repos in
fetch-issues.ts) - Stores in Vercel KV for production
- Client fetches via
/api/get-issues - Filters and sorts client-side for instant UX
pnpm install
pnpm devNo environment variables required. The app automatically uses public/issues.json when KV is not configured.
Create .env.local:
# Force local file mode (even if KV vars present)
USE_LOCAL_DATA=true
# Increase GitHub API rate limits (optional)
GITHUB_TOKEN=your_github_tokenEdit src/lib/fetch-issues.ts:
const REPOS = [
{
owner: "organization",
repo: "repository",
label: "good first issue",
tags: ["language", "category", "ecosystem"]
},
// Add your repo here
];Tags map to:
- Languages – javascript, python, rust, go, etc.
- Industries – blockchain, frontend, backend, security, etc.
- Types – Inferred from issue labels
pnpm run update-issuesThis fetches fresh issues from GitHub and saves to public/issues.json.
- Filters – Edit
src/app/page.tsx(issue types, languages, industries) - Quest Cards – Edit
src/components/quests/QuestCard.tsx - Type Mappings – Edit
src/types/quest.ts(add fields to Quest interface) - Styling – Tailwind classes throughout, config in
tailwind.config.ts
- Import repository on Vercel
- Connect a Vercel KV store for issue caching
- Add environment variables:
CRON_SECRET– Secures the cron endpointGITHUB_TOKEN– (Optional) Increases API rate limits
- KV variables are added automatically by Vercel
The cron job (vercel.json) updates issues automatically.
- Next.js 15 – App router, server components
- Vercel KV – Redis-based issue cache
- shadcn/ui – Component library
- Tailwind CSS – Styling
- TypeScript – Type safety
MIT
By Lucci Labs | Discord | X