Skip to content

About

Resources

Contributing

Security policy

Stars

38 stars

Watchers

0 watching

Forks

Latest commit

Β 

History

28 Commits

Folders and files

Repository files navigation

OpenDiscover with krishna πŸ›‘οΈβœ¨

OpenDiscover Banner

OpenDiscover is a curated directory that helps you find, verify and trust open-source software β€” apps, AI models, privacy tools and dev tools β€” and then sends you straight to the official upstream source. We index metadata. We never host, repackage or distribute binaries.

"Discover the code that powers the future."

Live demo build: krishna3163.github.io/OpenDiscover

CI License: MIT React 19 TypeScript Vite


✨ Features

πŸ” Real search, not includes()

  • Tokenised, accent-insensitive, typo-tolerant ranking across title, tags, category, licence, platform, source and description (src/lib/search.ts).
  • Intent keywords are derived automatically β€” search vpn, notes, llm, password manager, terminal and get the projects that mean that, not just the ones that spell it.
  • Faceted filters (category Β· licence Β· platform Β· source Β· Trust Score Β· verified-only), five sort orders, "load more" pagination and <mark> highlighting of why a result matched.
  • Every result set is a shareable URL: /?q=privacy+browser&sort=trust&license=GPL-3.0&verified=1.
  • Press / anywhere to jump to search, Esc to clear. Recent searches are remembered locally.

πŸ›‘οΈ Trust & transparency

  • Trust Scoreβ„’ (0–100) with a published rubric β€” licence family, maintenance age, community size, upstream verification, release signing.
  • Plain-English licence explainer for MIT, Apache, GPL, AGPL, LGPL, MPL, BSD, CC0, Unlicense, RAIL/model licences β€” and an explicit ⚠️ "Not open source" flag for entries that are indexed only for awareness.
  • Honest, derived signals: no decorative fake charts, no invented download numbers.

❀️ Your shortlist

  • Save projects with one click; persisted in localStorage, synced across tabs, with its own page.

πŸ€– AI assistant that always answers

  • Talks to Gemini over plain fetch with full conversation history, timeouts and aborts.
  • Proxy-ready: point VITE_AI_PROXY_URL at your own function so the API key never ships to the browser (example worker in examples/ai-proxy).
  • Offline fallback: with no key at all, the assistant answers from the real catalogue using the same search ranking β€” so the chat is never dead in a demo or in CI.
  • Chat history persists per conversation; markdown rendering is HTML-safe (no dangerouslySetInnerHTML).

🧭 Community & people

  • Forum hub, per-category threads, staff roster, demo chat with a staff view and notification opt-in.
  • Per-project discussion threads stored locally with seeded examples.

⚑ Engineering

  • React 19 + TypeScript strict, Vite 7, route-level code splitting, vendor chunking.
  • ErrorBoundary on every route, 404 page that suggests real projects, ScrollToTop, dynamic document.title, SEO/OG/JSON-LD meta, robots.txt, sitemap.xml, custom favicon.
  • Accessibility: skip link, semantic landmarks, visible focus rings, aria-pressed/aria-expanded, aria-live result counts, and full prefers-reduced-motion support.
  • ESLint 9 flat config + tsc + 100 Vitest tests (including dataset-integrity and app smoke tests) run in GitHub Actions on every push and PR.
  • The catalogue is exported to a real static API at build time: /data/projects.json.

πŸ› οΈ Tech stack

Layer Choice
UI React 19, TypeScript (strict), React Router 7
Build Vite 7 (code-split per route, manualChunks for vendors)
Motion Framer Motion (reduced-motion aware)
Styling Vanilla CSS custom properties β€” one design system in src/index.css, no UI framework
Icons Emoji, for zero weight
AI Google Gemini REST API (or your proxy), with an offline catalogue fallback
Tests Vitest
Quality ESLint 9, tsc --noEmit, GitHub Actions
Hosting GitHub Pages / Firebase / Cloud Run / any static host

🏁 Getting started

Prerequisites

  • Node.js 20.19+ (or 22 LTS)
  • npm 10+

Install & run

git clone https://github.com/krishna3163/OpenDiscover.git
cd OpenDiscover
npm install
npm run dev          # http://localhost:5173

That's it β€” no API key required. Search, filters, favourites, categories, project pages and the offline assistant all work out of the box.

Optional: enable the AI model

cp .env.example .env
# Option A β€” local development only (the key is visible in the browser!)
VITE_GEMINI_API_KEY=your-key-from-aistudio.google.com
VITE_GEMINI_MODEL=gemini-2.0-flash

# Option B β€” production: keep the key on your server
VITE_AI_PROXY_URL=https://your-worker.example.com/api/chat

⚠️ Anything prefixed VITE_ is bundled into the client and is public. For production use the proxy (Option B). See SECURITY.md and examples/ai-proxy.

Scripts

Command Description
npm run dev Dev server with HMR
npm run build Exports the dataset, type-checks, builds dist/
npm run preview Serve the production build
npm run lint / npm run lint:fix ESLint
npm run typecheck tsc -b --noEmit
npm test / npm run test:watch Unit tests
npm run export:data Regenerate public/data/projects.json
npm run deploy Build + publish to GitHub Pages (gh-pages)

πŸ“ Project structure

.
β”œβ”€β”€ .github/            CI + Pages workflows, issue & PR templates
β”œβ”€β”€ docs/               Deployment guide, roadmap
β”œβ”€β”€ examples/ai-proxy/  Minimal proxy that keeps the Gemini key server-side
β”œβ”€β”€ public/             favicon, robots.txt, sitemap.xml, 404.html, banner
β”œβ”€β”€ scripts/            export-catalogue.mjs β†’ public/data/projects.json
└── src/
    β”œβ”€β”€ components/     Header, Hero, ProjectCard, ProjectExplorer, TrustRing, Markdown, …
    β”œβ”€β”€ config/         demo.ts (non-secret demo config), site.ts (identity & links)
    β”œβ”€β”€ context/        auth Β· favorites Β· toast (context objects split from providers
    β”‚                   so React Fast Refresh keeps working)
    β”œβ”€β”€ data/           projects.ts (the curated catalogue) + community.ts (demo forum)
    β”œβ”€β”€ hooks/          useDebounce
    β”œβ”€β”€ lib/            search Β· catalog Β· tags Β· routes Β· storage Β· time Β· ghPages (all pure)
    β”œβ”€β”€ pages/          one file per route, lazily loaded
    β”œβ”€β”€ services/       ai.ts (Gemini/proxy transport) + localAssistant.ts (offline fallback)
    └── types.ts        shared domain types

Design rule: anything that can be pure lives in src/lib/ and gets a test. Components stay thin.


πŸ§ͺ Adding a project

Edit src/data/projects.ts β€” search tags are derived for you:

{
  id: 612,
  title: "Your Project",
  description: "One honest sentence about what it does.",
  category: "Dev Tools",           // must be one of the six known categories
  license: "MIT",
  source: "GitHub",
  stars: "1.4k",
  verified: true,
  link: "https://github.com/you/your-project",   // official upstream only
  trustScore: 88,
  platforms: ["Linux", "Windows"],
  lastUpdated: "2 weeks ago"
}

npm test includes dataset-integrity checks β€” duplicate ids, non-official link hosts, download portals, out-of-range Trust Scores, unparseable dates and proprietary entries marked verified all fail the build. Details in CONTRIBUTING.md.


πŸš€ Deploying

Full instructions (GitHub Pages with Actions, gh-pages, Firebase Hosting, Cloud Run + Docker, Netlify/Vercel/Cloudflare, and how to wire the AI proxy) live in docs/DEPLOYMENT.md.

The repo already ships:

  • .github/workflows/ci.yml β€” lint Β· typecheck Β· test Β· build on every push/PR
  • .github/workflows/deploy.yml β€” build + publish to GitHub Pages on main
  • public/404.html + src/lib/ghPages.ts β€” deep links survive a refresh on Pages
  • Dockerfile + nginx.conf β€” production container with SPA routing

Set VITE_BASE_PATH=/OpenDiscover/ when serving from a project page (the Pages workflow does this for you).


πŸ—ΊοΈ Roadmap

See docs/ROADMAP.md for the prioritised list: live GitHub/HF metadata sync, compare view, light theme, real accounts, i18n, PWA/offline, and more.


πŸ“„ License

MIT Β© 2025 Krishna and the OpenDiscover contributors β€” see LICENSE.

πŸ“¨ Contact

Built with ❀️ for the open-source community.

About

Resources

Contributing

Security policy

Stars

38 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages