{"id":43628212,"url":"https://github.com/wbfoss/fossradar","last_synced_at":"2026-02-04T16:24:14.657Z","repository":{"id":323280336,"uuid":"1092695104","full_name":"wbfoss/fossradar","owner":"wbfoss","description":"Radar is a modern, production-ready platform for creating and managing curated directories of projects, websites, startups, or any collection you want to showcase. Built with Next.js 16, it offers a complete solution with search, filtering, auto-validation, GitHub integration.","archived":false,"fork":false,"pushed_at":"2026-02-02T04:32:38.000Z","size":1122,"stargazers_count":7,"open_issues_count":12,"forks_count":2,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-02T15:42:43.593Z","etag":null,"topics":["contribute","contributions-welcome","directory","foss","freeandopensource","good-first-issue","india","opensource","oss"],"latest_commit_sha":null,"homepage":"https://fossradar.dev","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/wbfoss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":".github/CODEOWNERS","security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["wbfoss-org"],"custom":["https://wbfoss.org/"]}},"created_at":"2025-11-09T05:40:32.000Z","updated_at":"2026-02-02T04:32:42.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/wbfoss/fossradar","commit_stats":null,"previous_names":["wbfoss/fossradar"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/wbfoss/fossradar","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wbfoss%2Ffossradar","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wbfoss%2Ffossradar/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wbfoss%2Ffossradar/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wbfoss%2Ffossradar/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/wbfoss","download_url":"https://codeload.github.com/wbfoss/fossradar/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/wbfoss%2Ffossradar/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29090153,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-04T03:31:03.593Z","status":"ssl_error","status_checked_at":"2026-02-04T03:29:50.742Z","response_time":62,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["contribute","contributions-welcome","directory","foss","freeandopensource","good-first-issue","india","opensource","oss"],"created_at":"2026-02-04T16:24:14.000Z","updated_at":"2026-02-04T16:24:14.647Z","avatar_url":"https://github.com/wbfoss.png","language":"TypeScript","funding_links":["https://github.com/sponsors/wbfoss-org","https://wbfoss.org/"],"categories":[],"sub_categories":[],"readme":"# Radar - Open Source Directory Platform\n\n\u003e **Build beautiful, Git-powered directories for projects, startups, tools, or any curated collection**\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](./LICENSE)\n[![Next.js](https://img.shields.io/badge/Next.js-16-black)](https://nextjs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.6-blue)](https://www.typescriptlang.org/)\n[![Tailwind CSS](https://img.shields.io/badge/Tailwind_CSS-4-38bdf8)](https://tailwindcss.com/)\n\n**Radar** is a modern, production-ready platform for creating and managing curated directories of projects, websites, startups, or any collection you want to showcase. Built with Next.js 16, it offers a complete solution with search, filtering, auto-validation, GitHub integration, and beautiful UI out of the box.\n\n**Live Reference**: [fossradar.dev](https://fossradar.dev) - India's open source project directory powered by Radar\n\n---\n\n## 🎯 Use Cases\n\n**What can you build with Radar?**\n\n- 🚀 **Startup Directories** - Showcase startups, SaaS products, or indie projects\n- 🛠️ **Tool Catalogs** - Curate developer tools, AI apps, or productivity software\n- 📦 **Open Source Projects** - Directory of libraries, frameworks, or packages\n- 🌍 **Regional Showcases** - Projects from specific countries, cities, or communities\n- 🏢 **Company Portfolios** - Internal tool catalogs or client project showcases\n- 🎓 **Educational Resources** - Course directories, learning platforms, or tutorials\n- 🎨 **Creative Works** - Portfolio sites, design systems, or template libraries\n\n**Examples of directories you can build:**\n- \"Awesome Developer Tools from Europe\"\n- \"YC-Funded Startups Directory\"\n- \"Open Source AI Projects\"\n- \"Indie Maker Showcase\"\n- \"Government Tech Projects\"\n\n---\n\n## ✨ Why Radar?\n\n### Complete Directory Solution Out of the Box\n\n**No database setup, no complex backends** - just Git, TOML files, and modern web tech.\n\n#### For Directory Visitors\n- 🔍 **Smart Fuzzy Search** - Search across names, descriptions, and tags\n- 🏷️ **Multi-Category Filtering** - Filter by technology, tags, or custom fields\n- 🗺️ **Geographic Visualization** - Interactive maps showing location-based distribution\n- 📱 **Responsive Design** - Perfect on mobile, tablet, and desktop\n- 🌙 **Dark Mode** - System-aware, beautiful dark theme\n- 🎨 **Dynamic Social Cards** - Auto-generated OpenGraph images (1200×630)\n- 🔄 **Social Sharing** - Share on Twitter, LinkedIn, Facebook, email\n\n#### For Content Submitters\n- 🚀 **No-Code Submission Form** - 5-step guided form with auto-fill\n- 🤖 **Auto PR Creation** - GitHub OAuth to create pull requests automatically\n- ✅ **Real-Time Validation** - Helpful error messages as you type\n- 🔍 **Duplicate Detection** - Prevents resubmissions\n- 🏷️ **Smart Suggestions** - Auto-suggests tags from GitHub topics\n- 🖼️ **Logo Upload** - Drag-and-drop file upload in the form\n- 📝 **TOML Preview** - See exactly what will be created\n\n#### For Directory Maintainers\n- **Git as Database** - All data version-controlled in TOML files\n- **Auto-Validation CI** - Every submission automatically validated\n- **Auto-Enrichment** - Nightly updates for stars, contributors, metadata\n- **GitHub Integration** - OAuth, API, webhooks built-in\n- **SEO Optimized** - Sitemaps, structured data, meta tags\n- **Zero Runtime DB** - Fast, simple, auditable\n- **One-Click Deploy** - Deploy to Vercel in minutes\n\n---\n\n## 🚀 Quick Start\n\n### Deploy Your Own Directory in 5 Minutes\n\n**1. Fork this repository**\n\nClick the \"Fork\" button at the top of this page\n\n**2. Deploy to Vercel**\n\n[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/wbfoss/fossradar)\n\nOr manually:\n- Go to [vercel.com/new](https://vercel.com/new)\n- Import your forked repository\n- Vercel will auto-detect Next.js and configure everything\n\n**3. Configure Environment Variables** (Optional for enhanced features)\n\nAdd these in Vercel dashboard → Settings → Environment Variables:\n\n```bash\n# GitHub OAuth (required for submission form \u0026 star button)\nGITHUB_CLIENT_ID=your_github_oauth_client_id\nGITHUB_CLIENT_SECRET=your_github_oauth_client_secret\n\n# NextAuth (required for authentication)\nNEXTAUTH_SECRET=your_random_secret_here  # Generate: openssl rand -base64 32\nNEXTAUTH_URL=https://yourdomain.com\n\n# GitHub Token (automatically provided in CI - no setup needed!)\n# Only needed for local testing of validation/enrichment\nGITHUB_TOKEN=ghp_your_token_here\n```\n\n**4. Customize Your Directory**\n\nEdit configuration files to match your use case:\n- `data/projects/` - Add your initial entries (TOML files)\n- `data/tags.toml` - Define allowed categories/tags\n- `app/layout.tsx` - Update site name, description, metadata\n- `public/logos/` - Add project/company logos\n- Customize colors, fonts, and styling in `tailwind.config.ts`\n\n**5. Push \u0026 Deploy**\n\n```bash\ngit add .\ngit commit -m \"Customize directory\"\ngit push origin main\n```\n\nVercel will auto-deploy your changes!\n\n---\n\n## 🏗️ Local Development\n\n### Prerequisites\n- Node.js 18+ (20+ recommended)\n- pnpm (or npm/yarn)\n\n### Setup\n\n```bash\n# Clone your forked repository\ngit clone https://github.com/YOUR_USERNAME/radar.git\ncd radar\n\n# Install dependencies\npnpm install\n\n# Copy environment template (optional for local dev)\ncp .env.example .env\n\n# Run development server\npnpm dev\n```\n\nVisit http://localhost:3000\n\n**Note**: GitHub token is NOT required for UI development. Only needed if you want to test validation/enrichment scripts locally.\n\n### Available Commands\n\n```bash\n# Development\npnpm dev              # Start dev server\npnpm build            # Build for production\npnpm start            # Start production server\n\n# Data Management\npnpm validate         # Validate all TOML files\npnpm run build:index  # Generate search index\npnpm enrich           # Update metadata (requires GITHUB_TOKEN)\n\n# Code Quality\npnpm lint             # Run ESLint\n```\n\n---\n\n## 📝 Adding Entries to Your Directory\n\n### Method 1: Submission Form (Recommended)\n\nVisit `/submit/form` on your deployed site for a guided submission experience.\n\n**Features:**\n- Auto-fetch project details from GitHub\n- Real-time validation\n- Drag-and-drop logo upload\n- TOML preview\n- Automatic PR creation (requires GitHub OAuth)\n\n### Method 2: Manual Git Workflow\n\n**Step 1: Create TOML file**\n\nCreate `data/projects/your-entry-slug.toml`:\n\n```toml\nslug = \"your-project\"\nname = \"Your Awesome Project\"\nshort_desc = \"Brief description (10-160 characters)\"\nrepo = \"https://github.com/username/project\"\nlicense = \"MIT\"\nadded_at = \"2025-11-12\"\n\nwebsite = \"https://yourproject.com\"\nlogo = \"/logos/your-project.svg\"\nprimary_lang = \"TypeScript\"\ncategory = \"web-applications\"  # Required: Choose from data/categories.json\ntags = [\"web\", \"tools\", \"typescript\"]\nlooking_for_contributors = true\n\n# Customize these fields for your use case\nlocation_city = \"San Francisco\"\nlocation_indian_state = \"California\"  # Rename this field as needed\n```\n\n**Step 2: Add logo (optional)**\n\nPlace logo file (SVG/PNG, max 200KB) in `public/logos/`\n\n**Step 3: Commit and create PR**\n\n```bash\ngit add data/projects/your-entry.toml public/logos/your-logo.svg\ngit commit -m \"Add Your Project\"\ngit push origin main\n```\n\n---\n\n## 🎨 Customization Guide\n\n### Branding \u0026 Metadata\n\n**Site Information** (`app/layout.tsx`)\n```typescript\nexport const metadata: Metadata = {\n  title: \"Your Directory Name\",\n  description: \"Your directory description\",\n  // Update OpenGraph, Twitter cards, etc.\n}\n```\n\n**Visual Identity** (`tailwind.config.ts`)\n- Update colors, fonts, spacing\n- Customize theme (light/dark modes)\n\n### Data Schema\n\n**Categories** (`data/categories.json`) - **Main classification**\n```json\n{\n  \"categories\": {\n    \"web-applications\": {\n      \"label\": \"Web Applications\",\n      \"description\": \"Full-stack web apps, SaaS platforms\",\n      \"icon\": \"globe\"\n    }\n  }\n}\n```\nEach entry must select exactly **one** category. Customize for your directory theme:\n- **Open Source Projects**: developer-tools, libraries-frameworks, ai-ml, etc.\n- **Privacy Tools**: security-privacy, networking (VPN), system-utilities\n- **Startup Directory**: web-applications, mobile-applications, automation-productivity\n- **Dev Tools Catalog**: developer-tools, infrastructure-devops, content-media\n\n**Tags** (`data/tags.toml`) - **Secondary attributes**\n```toml\ntags = [\"web\", \"nextjs\", \"typescript\", \"cms\"]\n```\nTags provide fine-grained filtering within categories (1-10 tags per entry).\n\n**Entry Schema** (`lib/schema.ts`)\n- Customize required/optional fields\n- Add custom validation rules\n- Modify data structure\n\n### Features Toggle\n\n**Enable/Disable Features**:\n- Geographic radar (`app/radar/`)\n- GitHub OAuth (`lib/auth.ts`)\n- Auto-enrichment (`.github/workflows/enrich.yml`)\n- Submission form (`app/submit/form/`)\n\n---\n\n## 🏗️ Architecture\n\n### Tech Stack\n\n- **Framework**: Next.js 16 (App Router, React 19, TypeScript 5.6)\n- **Styling**: Tailwind CSS 4 (latest major version)\n- **Fonts**: VT323 (logo), Share Tech (headings), Inter (body)\n- **Search**: Fuse.js (client-side fuzzy search)\n- **Validation**: Zod schemas\n- **Icons**: Lucide React\n- **Deployment**: Vercel (recommended) or any Node.js host\n- **Data**: TOML files in Git (no database!)\n\n### Project Structure\n\n```\nradar/\n├── app/                        # Next.js pages and routes\n│   ├── page.tsx               # Homepage with search/filter\n│   ├── about/                 # About page\n│   ├── radar/                 # Geographic visualization\n│   ├── projects/[slug]/       # Individual project pages\n│   ├── submit/form/           # Submission form\n│   └── api/                   # API routes\n├── components/                # React components\n├── data/\n│   ├── projects/              # Project TOML files\n│   ├── tags.toml              # Allowed tags\n│   └── licenses-osi.json      # OSI licenses\n├── lib/                       # Utilities and helpers\n├── scripts/                   # Build and validation\n└── public/\n    ├── logos/                 # Project logos\n    ├── cache/                 # Cached metadata\n    └── index.json             # Search index\n```\n\n### How It Works\n\n1. **Data Layer**: All entries stored as TOML files in `data/projects/`\n2. **Build Time**: TOML parsed, validated, and compiled into search index\n3. **Runtime**: Static pages generated, search runs client-side\n4. **Auto-Update**: GitHub Actions enriches data nightly (stars, contributors)\n5. **SEO**: Sitemap auto-generated, search engines auto-pinged\n\n---\n\n## 🔒 GitHub OAuth Setup (Optional)\n\nRequired for:\n- **GitHub Star Button** - One-click repository starring\n- **Submission Form** - Automatic PR creation\n\n**Steps:**\n\n1. Create GitHub OAuth App at https://github.com/settings/developers\n   - Homepage URL: `https://yourdomain.com`\n   - Callback URL: `https://yourdomain.com/api/auth/callback/github`\n\n2. Add credentials to environment variables:\n   ```bash\n   GITHUB_CLIENT_ID=your_client_id\n   GITHUB_CLIENT_SECRET=your_client_secret\n   NEXTAUTH_SECRET=random_secret  # openssl rand -base64 32\n   NEXTAUTH_URL=https://yourdomain.com\n   ```\n\n---\n\n## 📊 Auto-Enrichment \u0026 Updates\n\n### Nightly Data Updates\n\nGitHub Actions automatically:\n- Updates star counts from GitHub API\n- Refreshes contributor lists\n- Updates project metadata\n- Regenerates search index\n- Pings search engines (Google, Bing)\n\n**Configuration**: `.github/workflows/enrich.yml`\n\n### Manual Enrichment\n\n```bash\n# Requires GITHUB_TOKEN in .env\npnpm enrich\n```\n\n---\n\n## 🗺️ Geographic Visualization\n\nOptional geographic dashboard showing:\n- State/region-wise distribution\n- City-based project clustering\n- Interactive charts and maps\n\n**Customize**: Edit `app/radar/` components to match your use case (can be country, continent, or any geographic grouping)\n\n---\n\n## 🌟 Production Examples\n\n**FOSSRadar.dev** ([fossradar.dev](https://fossradar.dev))\n- India's open source project directory\n- 50+ projects and growing\n- Geographic distribution across Indian states\n- Auto-verification for project owners\n\n**Build your own!** Fork this repo and create:\n- European startup directory\n- AI tools catalog\n- Regional developer communities\n- Industry-specific project showcases\n\n---\n\n## 🤝 Contributing\n\nWe welcome contributions to the Radar platform itself!\n\n### Ways to Contribute\n\n- 🐛 **Report Bugs** - Found an issue? Open a bug report\n- ✨ **Suggest Features** - Ideas for improvements\n- 📝 **Improve Docs** - Clarify instructions, add examples\n- 💻 **Submit PRs** - Fix bugs or add features\n- 🎨 **Design Improvements** - UI/UX enhancements\n\nSee **[CONTRIBUTING.md](./CONTRIBUTING.md)** for detailed guidelines.\n\n---\n\n## 📋 Validation \u0026 CI\n\n### Automatic Validation\n\nEvery PR automatically validates:\n- TOML file format and schema\n- Required fields presence\n- Tag/category allowlist compliance\n- License validity (OSI-approved)\n- Repository accessibility\n- Logo file size (\u003c200KB)\n- Duplicate detection\n\n**Configuration**: `.github/workflows/validate.yml`\n\n### Manual Validation\n\n```bash\npnpm validate\n```\n\n---\n\n## 🔐 Security\n\n**Reporting vulnerabilities**: See [SECURITY.md](./SECURITY.md)\n\n**Best practices implemented**:\n- No runtime database (attack surface minimized)\n- OAuth scopes limited to minimum required\n- Environment variables for sensitive data\n- Input validation with Zod schemas\n- CSP headers (configurable)\n\n---\n\n## 📜 License\n\n[MIT License](./LICENSE) - Free to use for commercial and non-commercial projects.\n\nBy contributing, you agree your contributions will be licensed under MIT.\n\n---\n\n## 🙏 Credits\n\n**Built by [wbfoss](https://wbfoss.org)** - West Bengal Free and Open Source Software community\n\n**Powered by**:\n- Next.js, React, TypeScript\n- Tailwind CSS\n- Vercel\n- GitHub API\n\n**Special Thanks**:\n- All contributors to the Radar platform\n- FOSSRadar.dev community for testing and feedback\n- Open source community for inspiration\n\n---\n\n## 🌟 Star This Repo\n\nIf you find Radar useful, give us a star! It helps others discover this platform.\n\n[![GitHub stars](https://img.shields.io/github/stars/wbfoss/fossradar?style=social)](https://github.com/wbfoss/fossradar/stargazers)\n\n---\n\n## 🚀 Ready to Deploy?\n\n1. **Fork this repo**\n2. **Deploy to Vercel** (1-click)\n3. **Customize branding**\n4. **Add your entries**\n5. **Share with your community**\n\n**Questions?** Open an issue or discussion!\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**Build your directory today with Radar**\n\n[Deploy Now](https://vercel.com/new/clone?repository-url=https://github.com/wbfoss/fossradar) • [View Demo](https://fossradar.dev) • [Documentation](./docs/) • [Community](https://github.com/wbfoss/fossradar/discussions)\n\n**Made with ❤️ for the open source community**\n\n\u003c/div\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwbfoss%2Ffossradar","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwbfoss%2Ffossradar","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwbfoss%2Ffossradar/lists"}