A simple RSS reader and generator application built with Go.
- Fetch and parse RSS feeds
- Display feed content in a clean, modern UI
- Export feeds in RSS format
- Add, delete, and manage feeds
- Persistent storage of feed subscriptions
- Always fetches fresh feed content for up-to-date information
- Dark mode support
- Mobile-responsive design
- Go 1.16 or higher
- Web browser with JavaScript enabled
-
Clone the repository:
git clone https://github.com/dfanso/rss.git cd rss
-
Install dependencies:
go mod tidy
-
Build the application:
go build -o rss-reader ./cmd/rss
Run the application:
./rss-reader
By default, the server will start on port 8080. You can specify a different port using the -port
flag:
./rss-reader -port 3000
You can also add default feeds at startup using the -feeds
flag:
./rss-reader -feeds "https://news.ycombinator.com/rss,https://www.reddit.com/.rss"
The application stores your feed subscriptions in a JSON file for persistence between restarts. By default, subscriptions are stored in data/feeds.json
. You can specify a different data directory using the -data
flag:
./rss-reader -data /path/to/data
The application will automatically:
- Create the data directory if it doesn't exist
- Load saved feed subscriptions when starting
- Save feed subscriptions when they are added or removed
- Always fetch the latest feed content when you view a feed, ensuring you get the most up-to-date information
The project structure is as follows:
cmd/rss
: Main application entry pointsrc/parser
: RSS parsing and storage logicsrc/server
: HTTP server and API endpointsweb/templates
: HTML templatesweb/static
: Static assets (CSS, JavaScript)data
: Feed subscription storage (created at runtime)
GET /
: Home pageGET /feeds
: List all feedsPOST /feeds
: Add a new feedGET /feed?url=...
: Get a specific feed (always fetches fresh content)DELETE /feed?url=...
: Remove a feedGET /export?url=...
: Export a feed in RSS format
This project is licensed under the MIT License - see the LICENSE file for details.