Open-source developer opportunity intelligence — online hackathons & free AI offers, with multi-tier verification.
DevRadar aggregates hackathons / challenges and AI free tiers / credits / promos, then tries to verify them against official pages when possible.
| Principle | Meaning |
|---|---|
| No end-user login | Browse, filter, bookmark (localStorage), submit URLs without an account |
| No user API keys | Visitors never paste OpenAI/X keys into the browser |
| X is discovery, not truth | Social posts are Tier-3 signals; official URLs are preferred |
| Human-in-the-loop | Admin review queue for publish/reject (Google OAuth, optional) |
This is not a claim of perfect accuracy. Listings carry verification status (verified_active, likely_active, registration_closed, …) and prize labels that may say TBA when the pool is unknown.
Browser (React/Vite) → FastAPI (/api/v1) → PostgreSQL
↓
Redis · Celery (fetch queue)
↓
Connectors: official site, Devpost, MLH, RSS, X (optional)
| Piece | Role in local dev |
|---|---|
Docker Compose (infra/compose.yaml) |
Postgres 5434, Redis 6379, optional MinIO 9000 — infra only |
API (host, :8000) |
FastAPI via uv run uvicorn |
| Worker (host) | Celery fetch queue — submission review, discovery, rechecks |
Frontend (host, :5173) |
Vite; proxies /api and /health to the API |
- Frontend-only works with offline mock data; the real catalogue needs the API + Postgres.
- Celery worker required for automatic submission review: without a
fetchworker, community submissions stay queued. - Seed demo mode (recommended first run): no OpenAI / no X keys — load curated JSON into Postgres.
- Object storage default is local files under
backend/data/raw(OBJECT_STORAGE_BACKEND=local). MinIO is optional if you switch tos3.
- Docker Desktop (or Docker Engine + Compose)
- uv (Python 3.12+)
- Node.js 20+ and npm (CI uses Node 22)
git clone https://github.com/bagusardin25/DevRadar.git
cd DevRadar
.\scripts\dev.ps1Then three terminals:
# Terminal A — API
cd backend
uv run uvicorn app.main:app --reload --host 0.0.0.0 --port 8000
# Terminal B — UI
npm run dev
# Terminal C — Celery fetch/review worker (--pool=solo required on Windows)
cd backend
uv run celery -A app.worker.celery_app worker -Q fetch -l info --pool=sologit clone https://github.com/bagusardin25/DevRadar.git
cd DevRadar
chmod +x scripts/dev.sh
./scripts/dev.shThen either three terminals (same commands as above, omit --pool=solo on Linux/macOS) or:
make api # terminal A
make frontend # terminal B
make worker # terminal C| URL | Purpose |
|---|---|
| http://localhost:5173/ | App |
| http://127.0.0.1:8000/health/ready | API + Postgres + Redis |
scripts/dev.ps1 / scripts/dev.sh (or make bootstrap):
docker compose -f infra/compose.yaml up -d- Creates
backend/.envfrombackend/.env.example(random local secrets; keepsLLM_PROVIDER=disabled) uv sync --all-extras+alembic upgrade head- Seeds demo catalogue + default aggregator sources
npm installif needed
Refresh catalogue after editing seed data:
cd backend
uv run python scripts/seed_listings.py --update
uv run python scripts/seed_default_sources.pyOptional re-fetch of AI offer official pages (rules; LLM if configured):
cd backend
uv run python scripts/recheck_listings.py --kind ai_offer --limit 25| File | Purpose |
|---|---|
backend/.env.example |
Development — copy to backend/.env (Compose ports, seed-demo) |
backend/.env.production.example |
Production checklist — set via host secrets; APP_ENV=production hardens startup |
.env.example |
Optional frontend Vite vars (VITE_*) — root .env if needed |
Defaults match Compose (Postgres on host port 5434). Prefer localhost for the app URL and OAuth callback host notes (localhost ≠ 127.0.0.1 for cookies).
With APP_ENV=production the API refuses placeholder secrets and Compose DB passwords, requires HTTPS frontend/OAuth origins, sets Secure session cookies, and disables /docs. Details: SECURITY.md.
-
Day-to-day dev: Compose for infra only (
127.0.0.1binds); API/worker/frontend run on the host (as above). -
Optional MinIO:
docker compose -f infra/compose.yaml --profile object-storage up -d -
API image (secrets never baked in; non-root multi-stage build):
docker build -f backend/Dockerfile -t devradar-api:local backend docker run --rm -p 127.0.0.1:8000:8000 --env-file backend/.env devradar-api:local
Prefer a production env file from
backend/.env.production.example(not the seed-demo.env). See SECURITY.md.
| Mode | Keys needed | Use case |
|---|---|---|
| Seed demo | None (Docker + generated secrets only) | Local try-out, OSS contributors, demos |
| Ingestion + LLM | LLM_API_KEY (OpenAI-compatible) |
Extract structured fields from official pages |
| X discovery | X_BEARER_TOKEN |
Find new candidate URLs (pay-per-use; optional) |
| Admin review | Google OAuth + ADMIN_GOOGLE_EMAILS |
Approve/reject listings, catalogue CRUD |
End users of a hosted instance still never need those keys — only the operator does.
Public
- Hackathon catalogue (search, filters, compare, bookmarks)
- AI offer catalogue
- Community Submit URL → review queue (AI initial review when worker runs)
- Email alert subscribe (needs operator email provider; default
console) - Provenance hints (source tier on cards)
Operator / admin (behind Google login)
- Review queue (with AI initial review)
- Catalogue manager (hackathons & AI offers)
- Pipeline viewer
- Sources manager
Not a production Chrome extension — the side-panel UI is a simulator / preview, not a store package.
PRs to main run .github/workflows/ci.yml. Locally, after infra is up:
make check # Linux/macOS — same lint/build/migrate/test order as CI
# Windows: .\scripts\check.ps1 or npm run check:all| CI job | Local equivalent |
|---|---|
| Secret scan (Gitleaks) | — (runs only on GitHub) |
Frontend (npm ci → npm run check) |
npm run check / make check-frontend |
| Backend (ruff → migrate → pytest) | make check-backend |
Full command matrix: CONTRIBUTING.md.
See CONTRIBUTING.md and CODE_OF_CONDUCT.md.
Preferred ways to add opportunities:
- In-app Submit (URL → review pipeline)
- PR against curated seed:
data/manual-collection/seed_listings.json(notsrc/data/mockData.ts) - Connector / docs / bugfix PRs
See SECURITY.md. Never commit .env or live API keys.
MIT — Copyright (c) 2026 DevRadar Contributors