https://github.com/takuan-osho/feed-finder
RSS/Atom feed finder
https://github.com/takuan-osho/feed-finder
rss rss-feed
Last synced: 5 months ago
JSON representation
RSS/Atom feed finder
- Host: GitHub
- URL: https://github.com/takuan-osho/feed-finder
- Owner: takuan-osho
- License: agpl-3.0
- Created: 2025-05-06T06:19:19.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2025-08-10T09:14:07.000Z (11 months ago)
- Last Synced: 2025-08-10T09:14:15.051Z (11 months ago)
- Topics: rss, rss-feed
- Language: TypeScript
- Homepage: https://feedfinder.programarch.com
- Size: 229 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Feed Finder
A web application that automatically discovers RSS and Atom feeds from any website URL.
[](https://feedfinder.takuan-osho.com)
[](#)
[](#)
## Demo
https://feedfinder.takuan-osho.com
## Features
- **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
## Tech Stack
- **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
## Requirements
- Node.js 20.19.4 or higher
- npm or yarn
## Quick Start
```bash
# 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 dev
```
Open http://localhost:5173 in your browser.
## Development Commands
```bash
# 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 deploy
```
## Project Structure
```
feed-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
```
## Testing
This project follows Test-Driven Development (TDD):
- **63 tests** all passing
- **Performance tests** for parallel processing
- **Bundle optimization tests**
- **Security tests** (SSRF, XSS protection)
## Configuration
### Adding Allowed Domains
Add domains to the `ALLOWED_ORIGINS` array in `worker/index.ts`:
```typescript
const ALLOWED_ORIGINS = [
"http://localhost:5173",
"https://yourdomain.com", // Add your domain
];
```
### Customizing Styles
This project uses TailwindCSS v4. Edit styles in any component within the `src/` directory.
## Performance
- **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
## Contributing
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## License
This project is licensed under the [GNU Affero General Public License v3](LICENSE).