A web application that automatically discovers RSS and Atom feeds from any website URL.
https://feedfinder.takuan-osho.com
- Automatic feed discovery: Simply enter a URL to find RSS/Atom feeds
- Multi-strategy search: HTML meta tag analysis + common path exploration in parallel
- Fast performance: Optimized bundle (~180KB) with sub-2s initial load
- Security-focused: Built-in SSRF protection, XSS prevention
- Responsive design: Works on mobile and desktop
- Frontend: React 19 + TypeScript + Vite
- UI: shadcn/ui + TailwindCSS v4
- Backend: Cloudflare Workers
- Testing: Vitest (63 tests passing)
- Code Quality: Biome (lint/format) + lefthook
- Error Handling: neverthrow
- Node.js 20.19.4 or higher
- npm or yarn
# Clone the repository
git clone https://github.com/takuan-osho/feed-finder.git
cd feed-finder
# Install dependencies
npm install
# Start development server
npm run devOpen http://localhost:5173 in your browser.
# Start development server
npm run dev
# Build for production
npm run build
# Preview production build
npm run preview
# Run tests (watch mode)
npm run test
# Run tests (single run)
npm run test:run
# Lint code
npm run lint
# Deploy to Cloudflare Workers
npm run deployfeed-finder/
├── src/ # Frontend source
│ ├── components/ # React components
│ │ ├── ui/ # Base UI components
│ │ ├── SearchForm.tsx # Search form component
│ │ └── ResultDisplay.tsx # Results display
│ ├── lib/ # Utility functions
│ └── App.tsx # Main app component
├── worker/ # Cloudflare Workers
│ ├── index.ts # API implementation
│ └── *.test.ts # Test files
├── .kiro/specs/ # Project specifications
└── .github/workflows/ # CI/CD configuration
This project follows Test-Driven Development (TDD):
- 63 tests all passing
- Performance tests for parallel processing
- Bundle optimization tests
- Security tests (SSRF, XSS protection)
Add domains to the ALLOWED_ORIGINS array in worker/index.ts:
const ALLOWED_ORIGINS = [
"http://localhost:5173",
"https://yourdomain.com", // Add your domain
];This project uses TailwindCSS v4. Edit styles in any component within the src/ directory.
- Initial load: Under 2 seconds
- Feed search: Under 5 seconds
- Bundle size: ~180KB (58KB gzipped)
- Parallel processing: HTML parsing and common path search run concurrently
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the GNU Affero General Public License v3.