a web-based frontend for miniflux
A modern Miniflux RSS reader built with Nuxt 4, Tailwind CSS, and Nuxt UI. Designed as a client-only, offline-first PWA.
The three-column layout — sidebar, entry list, and reader — in light and dark themes.
| Reader (light) | Reader (dark) |
|---|---|
![]() |
![]() |
| Feed settings | App settings |
|---|---|
![]() |
![]() |
Six color schemes — reading environments, not brand variants. Default is shown above (light and dark); the five reading tints:
| Sepia | Ocean | Forest |
|---|---|---|
![]() |
![]() |
![]() |
| Solarized | Gruvbox | |
|---|---|---|
![]() |
![]() |
| Entry list | Sidebar | Reader | Settings |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Full Miniflux API v1 integration — token or basic auth
- Offline-first caching via IndexedDB + Workbox service worker
- Installable PWA with update prompts and offline status indicator
- Feed discovery from any website URL
- Three-column layout: sidebar, entry list, and reader
- Reader view with fetch-original-content and typography controls
- Mark-as-read on scroll with configurable thresholds
- Search modal and keyboard shortcuts
- i18n with English and German translations
- Light, dark, and system themes
- Optimistic updates for read/star toggles
- [BETA] Magazine view with grid layout
| Layer | Library |
|---|---|
| Framework | Nuxt 4 |
| UI components | Nuxt UI 3 |
| Styling | Tailwind CSS v4 |
| Icons | Lucide via Iconify |
| State | Pinia |
| Offline storage | idb (IndexedDB) |
| PWA | @vite-pwa/nuxt |
| i18n | @nuxtjs/i18n |
- Node.js 18+
- pnpm (recommended) or npm
- A running Miniflux instance
- Clone and install
git clone <repository-url>
cd rssr
pnpm install- Optional environment configuration
cp .env.example .envSet a default server URL:
NUXT_PUBLIC_DEFAULT_SERVER_URL=https://miniflux.example.com- Start the dev server
pnpm dev- Open the app
Visit http://localhost:3000
- Enter your Miniflux server URL
- Choose token or basic auth
- Sign in
- Left column: categories and feeds
- Middle column: entry list
- Right column: reader
- Refresh feeds from the sidebar controls
- Mark entries as read by scrolling or using actions
- Toggle star status from the entry header
- Open settings from the sidebar footer
- Press
?to view keyboard shortcuts
rssr exposes granular settings for:
- Language and pagination
- Sort order and list density
- Sync interval and offline behavior
- Theme, fonts, and reader layout
- Mark-as-read thresholds and animations
rssr/
├── app/
│ └── app.vue
├── assets/
│ └── css/
│ └── main.css
├── components/
│ ├── FeedSidebar.vue
│ ├── EntryList.vue
│ └── EntryReader.vue
├── i18n/
│ └── locales/
│ ├── de.json
│ └── en.json
├── pages/
│ ├── index.vue
│ ├── login.vue
│ └── settings.vue
├── plugins/
│ ├── auth.client.ts
│ ├── i18n.client.ts
│ └── settings.client.ts
├── public/
│ ├── manifest.json
│ └── icon-512.svg
├── stores/
│ ├── auth.ts
│ ├── categories.ts
│ ├── entries.ts
│ ├── feeds.ts
│ └── settings.ts
├── types/
│ └── miniflux.ts
├── utils/
│ ├── indexeddb.ts
│ └── miniflux-client.ts
├── nuxt.config.ts
├── package.json
└── tailwind.config.js
pnpm dev
pnpm build
pnpm preview
pnpm generatepnpm generateDeploy the contents of .output/public.
pnpm build
pnpm previewPWA features require HTTPS (localhost is fine for development).
- Docs: https://miniflux.app/docs/api.html
- Auth: token or basic auth
- Base URL:
{server_url}/v1/
MIT License. See LICENSE for details.
- Miniflux: https://miniflux.app/
- Nextflux: https://github.com/electh/nextflux (inspiration)
- Reeder (UI inspiration)
- Nuxt: https://nuxt.com/
- Nuxt UI: https://ui.nuxt.com/












