Files
kill-the-news/README.md
T
2025-02-27 14:51:38 -08:00

82 lines
2.4 KiB
Markdown

# Email-to-RSS
A modern service that turns email newsletters into RSS feeds, built with Cloudflare Workers. This service provides unique email addresses per feed, a front-end admin panel, and long-term storage of newsletters.
## Features
- **Minimal Dependencies**: Built using modern, web-friendly libraries without Node.js-specific dependencies
- **Lightweight**: Entire worker bundle is only ~360KB (gzipped: ~65KB)
- **Email Processing**: Handles emails from ForwardEmail.net webhook
- **RSS Generation**: Serves standards-compliant RSS feeds
- **Admin Interface**: Simple management UI for feeds and emails
- **Storage**: Uses Cloudflare KV for efficient, low-cost storage
## Architecture
### Email Flow
1. A newsletter arrives at `newsletter-XYZ@yourdomain.com`
2. ForwardEmail.net forwards it to your Cloudflare Worker
3. The Worker parses the email, extracts content, and stores it in KV
4. The RSS feed is updated with the new content
### Key Components
- **Email Parser**: Lightweight custom parser that works in edge environments
- **Feed Generator**: Modern RSS feed generator with minimal dependencies
- **Admin UI**: Simple interface to manage feeds and view emails
## Development
This project uses a modern build process with Wrangler's built-in bundling (powered by esbuild):
```bash
# Install dependencies
npm install
# Run development server
npm run dev
# Build for production
npm run build
# Deploy to Cloudflare
npm run deploy
```
## Environment Variables
- `ADMIN_PASSWORD`: Password for the admin interface
- `DOMAIN`: Your custom domain for receiving emails
- `FORWARDEMAIL_TOKEN`: Token for ForwardEmail.net webhook authentication
## Technology Stack
- **Cloudflare Workers**: Edge computing platform
- **Cloudflare KV**: Key-value storage
- **Hono**: Lightweight web framework
- **TypeScript**: Type-safe JavaScript
- **Feed**: Modern RSS feed generator
- **Zod**: Schema validation
## Setup
1. Clone this repository
2. Install dependencies with `npm install`
3. Copy `wrangler.toml.example` to `wrangler.toml` and set your values
4. Run `npm run dev` to start the development server
5. Deploy with `npm run deploy`
## Minimalist Approach
This project follows a minimalist approach:
- No unnecessary dependencies
- Web-standard APIs where possible
- No Node.js-specific modules or polyfills
- Modern TypeScript features
- Clean, maintainable code structure
## License
MIT