A modern, resource-efficient RSS feed reader built with Rust.
Disclaimer: This was entirely vibe-coded as part of some personal experimentation with this new technology. I know neither Rust nor more than the most basic part of CSS. If that is a deal breaker for you, I understand.
- Progressive Web App
- Assign groups and tags to feeds
- Reader mode
- Search
The primary use case is running this program as a self-hosted Docker instance accessed locally or via VPN. There is currently no support for multiple users.
Try it out with Docker (or Podman):
docker run --rm --init -p 3000:3000 \
ghcr.io/adrianvollmer/fluxfeed:latest- Web Framework: Axum 0.7
- Templates: Askama (compile-time checked)
- Interactivity: HTMX
- Database: SQLite with SQLx
- RSS Parser: feed-rs
- UI: Tailwind CSS
- Background Jobs: tokio-cron-scheduler
- Rust (1.92+)
- Node.js (for Tailwind CSS)
- pkg-config and libssl-dev (for OpenSSL)
Use the unified build script:
# Build everything (frontend + Rust)
./scripts/build.sh
# Or build specific targets:
./scripts/build.sh frontend # CSS, JS, and icons
./scripts/build.sh css # Tailwind CSS only
./scripts/build.sh js # TypeScript only
./scripts/build.sh icons # PNG icons from SVG
./scripts/build.sh rust # Rust debug build
./scripts/build.sh rust-release # Rust release build
./scripts/build.sh clean # Remove build artifactsOr manually:
npm install
npm run build # Build CSS and JS
cargo build --releaseRun the application:
./target/release/fluxfeedThe server will start on http://localhost:3000.
Migrations are embedded in the binary and run automatically on startup.
To manually run migrations:
sqlx migrate runCopy .env.example to .env and customize:
DATABASE_URL=sqlite://fluxfeed.db
PORT=3000
HOST=0.0.0.0
RUST_LOG=infoThe easiest way to run FluxFeed is with Docker.
docker compose up -dThe app will be available at http://localhost:3000 with persistent storage.
There is a publicly available Docker image:
ghcr.io/adrianvollmer/fluxfeed:latest
To build the image:
docker build -t fluxfeed .Run the container:
docker run --rm -d \
-p 3000:3000 \
-v fluxfeed-data:/app/data \
-e DATABASE_URL=sqlite:///app/data/fluxfeed.db \
-e PORT=3000 \
-e HOST=0.0.0.0 \
--name fluxfeed \
fluxfeedDATABASE_URL: Path to SQLite database (default:sqlite:///app/data/fluxfeed.db)PORT: Port to listen on (default:3000)HOST: IP address to bind to (default:0.0.0.0)RUST_LOG: Log level (default:info)
MIT
See CONTRIBUTING.md for development guidelines.





0 comments
log in to comment.