MCPcopy Index your code
hub / github.com/miniflux/v2

github.com/miniflux/v2 @2.3.2

repository ↗ · DeepWiki ↗ · release 2.3.2 ↗ · + Follow
3,042 symbols 14,186 edges 416 files 795 documented · 26% 178 cross-repo links
README

Miniflux 2

Miniflux is a minimalist and opinionated feed reader. It's simple, fast, lightweight and super easy to install.

Official website: https://miniflux.app

Features

Feed Reader

  • Supported feed formats: Atom 0.3/1.0, RSS 1.0/2.0, and JSON Feed 1.0/1.1.
  • OPML file import/export and URL import.
  • Supports multiple attachments (podcasts, videos, music, and images enclosures).
  • Plays videos from YouTube directly inside Miniflux.
  • Organizes articles using categories and bookmarks.
  • Share individual articles publicly.
  • Fetches website icons (favicons).
  • Saves articles to third-party services.
  • Provides full-text search (powered by Postgres).
  • Available in 20 languages: Portuguese (Brazilian), Chinese (Simplified and Traditional), Dutch, English (US), Finnish, French, German, Greek, Hindi, Indonesian, Italian, Japanese, Polish, Romanian, Russian, Taiwanese POJ, Ukrainian, Spanish, and Turkish.

Privacy and Security

  • Removes pixel trackers.
  • Strips tracking parameters from URLs (e.g., utm_source, utm_medium, utm_campaign, fbclid, etc.).
  • Retrieves original links when feeds are sourced from FeedBurner.
  • Opens external links with attributes rel="noopener noreferrer" referrerpolicy="no-referrer" for improved security.
  • Implements the HTTP header Referrer-Policy: no-referrer to prevent referrer leakage.
  • Provides a media proxy to avoid tracking and resolve mixed content warnings when using HTTPS.
  • Plays YouTube videos via the privacy-focused domain youtube-nocookie.com.
  • Supports alternative YouTube video players such as Invidious.
  • Blocks external JavaScript to prevent tracking and enhance security.
  • Sanitizes external content before rendering it.
  • Enforces a Content Security and a Trusted Types Policy to only application JavaScript and blocks inline scripts and styles.

Bot Protection Bypass Mechanisms

  • Optionally disable HTTP/2 to mitigate fingerprinting.
  • Allows configuration of a custom user agent.
  • Supports adding custom cookies for specific use cases.
  • Enables the use of proxies for enhanced privacy or bypassing restrictions.

Content Manipulation

  • Fetches the original article and extracts only the relevant content using a local Readability parser.
  • Allows custom scraper rules based on CSS selectors.
  • Supports custom rewriting rules for content manipulation.
  • Provides a regex filter to include or exclude articles based on specific patterns.
  • Optionally permits self-signed or invalid certificates (disabled by default).
  • Scrapes YouTube's website to retrieve video duration as read time or uses the YouTube API (disabled by default).

User Interface

  • Optimized stylesheet for readability.
  • Responsive design that adapts seamlessly to desktop, tablet, and mobile devices.
  • Minimalistic and distraction-free user interface.
  • No requirement to download an app from Apple App Store or Google Play Store.
  • Can be added directly to the home screen for quick access.
  • Supports a wide range of keyboard shortcuts for efficient navigation.
  • Optional touch gesture support for navigation on mobile devices.
  • Custom stylesheets and JavaScript to personalize the user interface to your preferences.
  • Themes:
    • Light (Sans-Serif)
    • Light (Serif)
    • Dark (Sans-Serif)
    • Dark (Serif)
    • System (Sans-Serif) – Automatically switches between Dark and Light themes based on system preferences.
    • System (Serif)

Integrations

Authentication

  • Local username and password.
  • Passkeys (WebAuthn).
  • Google (OAuth2).
  • Generic OpenID Connect.
  • Reverse-Proxy authentication.

Technical Stuff

  • Written in Go (Golang).
  • Single binary compiled statically without dependency.
  • Works only with PostgreSQL.
  • Does not use any ORM or any complicated frameworks.
  • Uses modern vanilla JavaScript only when necessary.
  • All static files are bundled into the application binary using the Go embed package.
  • Supports the Systemd sd_notify protocol for process monitoring.
  • Configures HTTPS automatically with Let's Encrypt.
  • Allows the use of custom SSL certificates.
  • Supports HTTP/2 when TLS is enabled.
  • Updates feeds in the background using an internal scheduler or a traditional cron job.
  • Uses native lazy loading for images and iframes.
  • Compatible only with modern browsers.
  • Adheres to the Twelve-Factor App methodology.
  • Provides official Debian/RPM packages and pre-built binaries.
  • Publishes a Docker image to Docker Hub, GitHub Registry, and Quay.io Registry, with ARM and RISC-V architecture support.
  • Uses a limited amount of third-party go dependencies
  • Has a comprehensive testsuite, with both unit tests and integration tests.
  • Only uses a couple of MB of memory and a negligible amount of CPU, even with several hundreds of feeds.
  • Respects/sends Last-Modified, If-Modified-Since, If-None-Match, Cache-Control, Expires and ETags headers, and has a default polling interval of 1h.

Documentation

The Miniflux documentation is available here: https://miniflux.app/docs/ (Man page)

Screenshots

Default theme:

Default theme

Dark theme when using keyboard navigation:

Dark theme

Credits

Extension points exported contracts — how you extend this code

Provider (Interface)
Provider defines the interface that all OAuth2 providers must implement. [2 implementers]
internal/oauth2/provider.go
Number (Interface)
import "miniflux.app/v2/internal/model"
internal/model/model.go
Option (FuncType)
(no doc)
client/options.go

Core symbols most depended-on inside this repo

Set
called by 635
internal/ui/view/view.go
Error
called by 314
internal/locale/error.go
String
called by 292
internal/model/feed.go
NewConfigParser
called by 190
internal/config/parser.go
Close
called by 185
internal/reader/fetcher/response_handler.go
HTMLServerError
called by 181
internal/http/response/html.go
UserID
called by 168
internal/http/request/context.go
Get
called by 167
internal/storage/certificate_cache.go

Shape

Function 1,727
Method 932
Struct 335
TypeAlias 36
Class 6
FuncType 3
Interface 3

Languages

Go97%
TypeScript3%

Modules by API surface

client/client.go118 symbols
internal/config/options_parsing_test.go107 symbols
internal/config/options.go103 symbols
internal/api/api_integration_test.go84 symbols
internal/reader/rss/parser_test.go76 symbols
client/client_test.go66 symbols
internal/reader/rewrite/content_rewrite_test.go60 symbols
internal/ui/static/js/app.js59 symbols
internal/reader/atom/atom_10_test.go57 symbols
internal/reader/sanitizer/sanitizer_test.go56 symbols
internal/mediaproxy/media_proxy_test.go43 symbols
internal/storage/entry_query_builder.go36 symbols

Dependencies from manifests, versioned

github.com/andybalholm/brotliv1.2.1 · 1×
github.com/andybalholm/cascadiav1.3.3 · 1×
github.com/beorn7/perksv1.0.1 · 1×
github.com/cespare/xxhash/v2v2.3.0 · 1×
github.com/fxamacker/cbor/v2v2.9.2 · 1×
github.com/go-jose/go-jose/v4v4.1.4 · 1×
github.com/go-viper/mapstructure/v2v2.5.0 · 1×
github.com/go-webauthn/webauthnv0.17.4 · 1×
github.com/go-webauthn/xv0.2.6 · 1×

Datastores touched

minifluxDatabase · 1 repos
dbDatabase · 1 repos
miniflux_testDatabase · 1 repos

For agents

$ claude mcp add v2 \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact