{"id":15037069,"url":"https://github.com/athou/commafeed","last_synced_at":"2025-05-13T22:03:04.741Z","repository":{"id":7559165,"uuid":"8912617","full_name":"Athou/commafeed","owner":"Athou","description":"Google Reader inspired self-hosted personal RSS reader.","archived":false,"fork":false,"pushed_at":"2025-04-24T03:02:05.000Z","size":16382,"stargazers_count":3028,"open_issues_count":37,"forks_count":386,"subscribers_count":87,"default_branch":"master","last_synced_at":"2025-04-24T04:18:47.499Z","etag":null,"topics":["java","rss","rss-reader","self-hosted","web-application"],"latest_commit_sha":null,"homepage":"https://www.commafeed.com","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Athou.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":["athou"],"custom":["https://github.com/sponsors/Athou","https://www.paypal.com/donate/?business=9CNQHMJG2ZJVY\u0026no_recurring=0\u0026item_name=CommaFeed\u0026currency_code=EUR"]}},"created_at":"2013-03-20T19:32:09.000Z","updated_at":"2025-04-24T03:02:09.000Z","dependencies_parsed_at":"2024-02-15T14:27:38.112Z","dependency_job_id":"e4d071fb-66b0-4973-b4ab-6f4345855100","html_url":"https://github.com/Athou/commafeed","commit_stats":{"total_commits":3504,"total_committers":112,"mean_commits":"31.285714285714285","dds":"0.25313926940639264","last_synced_commit":"559fb69a64d0a572d42fa7291cde358c7d6e8d9f"},"previous_names":[],"tags_count":64,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athou%2Fcommafeed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athou%2Fcommafeed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athou%2Fcommafeed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Athou%2Fcommafeed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Athou","download_url":"https://codeload.github.com/Athou/commafeed/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251336905,"owners_count":21573280,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["java","rss","rss-reader","self-hosted","web-application"],"created_at":"2024-09-24T20:33:16.422Z","updated_at":"2025-05-13T22:03:04.735Z","avatar_url":"https://github.com/Athou.png","language":"Java","readme":"# CommaFeed\n\nGoogle Reader inspired self-hosted RSS reader, based on Quarkus and React/TypeScript.\n\n![preview](https://user-images.githubusercontent.com/1256795/184886828-1973f148-58a9-4c6d-9587-ee5e5d3cc2cb.png)\n\n## Features\n\n- 4 different layouts\n- Light/Dark theme\n- Fully responsive, works great on both mobile and desktop\n- Keyboard shortcuts for almost everything\n- Support for right-to-left feeds\n- Translated in 25+ languages\n- Supports thousands of users and millions of feeds\n- OPML import/export\n- REST API\n- Fever-compatible API for native mobile apps\n- Can automatically mark articles as read based on user-defined rules\n- Highly customizable with [custom CSS](https://athou.github.io/commafeed/documentation/custom-css) and JavaScript\n- [Browser extension](https://github.com/Athou/commafeed-browser-extension)\n- Compiles to native code for blazing fast startup and low memory usage\n- Supports 4 databases\n    - H2 (embedded database)\n    - PostgreSQL\n    - MySQL\n    - MariaDB\n\n## Deployment\n\n### Docker\n\nDocker is the easiest way to get started with CommaFeed.\n\nDocker images are built automatically and are available at https://hub.docker.com/r/athou/commafeed\n\n### Cloud hosting\n\n[PikaPods](https://www.pikapods.com) offers 1-click cloud hosting solutions starting at $1/month with a free $5\nwelcome credit and officially supports CommaFeed.\nPikaPods shares 20% of the revenue back to CommaFeed.\n\n[![PikaPods](https://www.pikapods.com/static/run-button.svg)](https://www.pikapods.com/pods?run=commafeed)\n\n### Download a precompiled package\n\nGo to the [release page](https://github.com/Athou/commafeed/releases) and download the latest version for your operating\nsystem and database of choice.\n\nThere are two types of packages:\n\n- The `linux-x86_64`, `linux-aarch_64` and `windows-x86_64` packages are compiled natively and contain an executable that can be run\n  directly.\n- The `jvm` package is a zip file containing all `.jar` files required to run the application. This package works on all\n  platforms but requires a JRE and is started with `java -jar quarkus-run.jar`.\n\nIf available for your operating system, the native package is recommended because it has a faster startup time and lower\nmemory usage.\n\n### Build from sources\n\n    ./mvnw clean package [-P\u003cdatabase\u003e [-Pnative]] [-DskipTests]\n\n- `\u003cdatabase\u003e` can be one of `h2`, `postgresql`, `mysql` or `mariadb`. The default is `h2`.\n- `-Pnative` compiles the application to native code. This requires GraalVM to be installed (`GRAALVM_HOME` environment\n  variable pointing to a GraalVM installation).\n- `-DskipTests` to speed up the build process by skipping tests.\n\nWhen the build is complete:\n\n- a zip containing all jars required to run the application is located at\n  `commafeed-server/target/commafeed-\u003cversion\u003e-\u003cdatabase\u003e-jvm.zip`. Extract it and run the application with\n  `java -jar quarkus-run.jar`\n- if you used the native profile, the executable is located at\n  `commafeed-server/target/commafeed-\u003cversion\u003e-\u003cdatabase\u003e-\u003cplatform\u003e-\u003carch\u003e-runner[.exe]`\n\n### Distribution packages\n\n- Arch Linux users can use [the CommaFeed package on AUR](https://aur.archlinux.org/pkgbase/commafeed), which builds native binaries with GraalVM for all supported databases.\n\n## Configuration\n\nCommaFeed doesn't require any configuration to run with its embedded database (H2). The database file will be stored in\nthe `data` directory of the current directory.\n\nTo use a different database, you will need to configure the following properties:\n\n- `quarkus.datasource.jdbc.url`\n    - e.g. for H2: `jdbc:h2:./data/db;DEFRAG_ALWAYS=TRUE`\n    - e.g. for PostgreSQL: `jdbc:postgresql://localhost:5432/commafeed`\n    - e.g. for MySQL:\n      `jdbc:mysql://localhost/commafeed?autoReconnect=true\u0026failOverReadOnly=false\u0026maxReconnects=20\u0026rewriteBatchedStatements=true\u0026timezone=UTC`\n    - e.g. for MariaDB:\n      `jdbc:mariadb://localhost/commafeed?autoReconnect=true\u0026failOverReadOnly=false\u0026maxReconnects=20\u0026rewriteBatchedStatements=true\u0026timezone=UTC`\n- `quarkus.datasource.username`\n- `quarkus.datasource.password`\n\nThere are multiple ways to configure CommaFeed:\n\n- a `config/application.properties` [properties](https://en.wikipedia.org/wiki/.properties) file relative to the working\n  directory (keys in kebab-case)\n- Command line arguments each prefixed with `-D` (keys in kebab-case)\n- Environment variables (keys in UPPER_CASE)\n- a `.env` file in the working directory (keys in UPPER_CASE)\n\nThe properties file is recommended because CommaFeed will be able to warn about invalid properties and typos.\n\nAll [CommaFeed settings](https://athou.github.io/commafeed/documentation) are optional and have sensible default values.\n\nWhen logging in, credentials are stored in an encrypted cookie. The encryption key is randomly generated at startup,\nmeaning that you will have to log back in after each restart of the application. To prevent this, you can set the\n`quarkus.http.auth.session.encryption-key` property to a fixed value (min. 16 characters).\nAll other Quarkus settings can be found [here](https://quarkus.io/guides/all-config).\n\nWhen started, the server will listen on http://localhost:8082.\nThe default user is `admin` and the default password is `admin`.\n\n### Updates\n\nWhen CommaFeed is up and running, you can subscribe to [this feed](https://github.com/Athou/commafeed/releases.atom) to be notified of new releases.\n\n### Memory management\n\nThe Java Virtual Machine (JVM) is rather greedy by default and will not release unused memory to the\noperating system. This is because acquiring memory from the operating system is a relatively expensive operation.\nThis can be problematic on systems with limited memory.\n\n#### Hard limit (`native` and `jvm` packages)\n\nThe JVM can be configured to use a maximum amount of memory with the `-Xmx` parameter.\nFor example, to limit the JVM to 256MB of memory, use `-Xmx256m`.\n\n#### Dynamic sizing (`jvm` package)\n\nIn addition to the previous setting, the JVM can be configured to release unused memory to the operating system with the\nfollowing parameters:\n\n    -Xms20m -XX:+UseG1GC -XX:+UseStringDeduplication -XX:-ShrinkHeapInSteps -XX:G1PeriodicGCInterval=10000 -XX:-G1PeriodicGCInvokesConcurrent -XX:MinHeapFreeRatio=5 -XX:MaxHeapFreeRatio=10\n\nSee [here](https://docs.oracle.com/en/java/javase/17/gctuning/garbage-first-g1-garbage-collector1.html)\nand [here](https://docs.oracle.com/en/java/javase/17/gctuning/factors-affecting-garbage-collection-performance.html) for\nmore\ninformation.\n\n#### OpenJ9 (`jvm` package)\n\nThe [OpenJ9](https://eclipse.dev/openj9/) JVM is a more memory-efficient alternative to the HotSpot JVM, at the cost of\nslightly slower throughput.\n\nIBM provides precompiled binaries for OpenJ9\nnamed [Semeru](https://developer.ibm.com/languages/java/semeru-runtimes/downloads/).\nThis is the JVM used in\nthe [Docker image](https://github.com/Athou/commafeed/blob/master/commafeed-server/src/main/docker/Dockerfile.jvm).\n\n## Translation\n\nFiles for internationalization are\nlocated [here](https://github.com/Athou/commafeed/tree/master/commafeed-client/src/locales).\n\nTo add a new language:\n\n- add the new locale to the `locales` array in:\n    - `commafeed-client/.linguirc`\n    - `commafeed-client/src/i18n.ts`\n- run `npm run i18n:extract`\n- add translations to the newly created `commafeed-client/src/locales/[locale]/messages.po` file\n\nThe name of the locale should be the\ntwo-letters [ISO-639-1 language code](http://en.wikipedia.org/wiki/List_of_ISO_639-1_codes).\n\n## Local development\n\n### Backend\n\n- Open `commafeed-server` in your preferred Java IDE.\n    - CommaFeed uses Lombok, you need the Lombok plugin for your IDE.\n- run `./mvnw quarkus:dev`\n\n### Frontend\n\n- Open `commafeed-client` in your preferred JavaScript IDE.\n- run `npm install`\n- run `npm run dev`\n\nThe frontend server is now running at http://localhost:8082 and is proxying REST requests to the backend running on\nport 8083\n","funding_links":["https://github.com/sponsors/athou","https://github.com/sponsors/Athou","https://www.paypal.com/donate/?business=9CNQHMJG2ZJVY\u0026no_recurring=0\u0026item_name=CommaFeed\u0026currency_code=EUR"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathou%2Fcommafeed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fathou%2Fcommafeed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fathou%2Fcommafeed/lists"}