{"id":25483522,"url":"https://github.com/eurohlam/rss2kindle","last_synced_at":"2025-04-09T18:53:27.004Z","repository":{"id":12445987,"uuid":"71833308","full_name":"eurohlam/rss2kindle","owner":"eurohlam","description":"Java Web application that provides a service for scheduled polling RSS feeds and sending them by email as Kindle books in mobi format.  It uses Apache Camel, Spring MVC, Jersey RESTful Web Service, Bootstrap, JQuery, Tomcat, Docker, Mongo DB and Amazon kindlegen ","archived":false,"fork":false,"pushed_at":"2022-12-10T06:13:48.000Z","size":20576,"stargazers_count":12,"open_issues_count":3,"forks_count":2,"subscribers_count":0,"default_branch":"master","last_synced_at":"2025-03-23T20:51:17.010Z","etag":null,"topics":["ansible","bootstrap4","camel","docker","java","jersey-framework","jquery","kindlegen","mobi-format","mongodb","rss","spring-mvc","spring-security","tomcat"],"latest_commit_sha":null,"homepage":"","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/eurohlam.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-10-24T21:22:48.000Z","updated_at":"2024-09-25T14:52:35.000Z","dependencies_parsed_at":"2023-01-11T20:19:03.114Z","dependency_job_id":null,"html_url":"https://github.com/eurohlam/rss2kindle","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eurohlam%2Frss2kindle","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eurohlam%2Frss2kindle/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eurohlam%2Frss2kindle/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eurohlam%2Frss2kindle/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eurohlam","download_url":"https://codeload.github.com/eurohlam/rss2kindle/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248093528,"owners_count":21046699,"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":["ansible","bootstrap4","camel","docker","java","jersey-framework","jquery","kindlegen","mobi-format","mongodb","rss","spring-mvc","spring-security","tomcat"],"created_at":"2025-02-18T17:36:39.172Z","updated_at":"2025-04-09T18:53:26.976Z","avatar_url":"https://github.com/eurohlam.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"RSS-to-Kindle Transformer\n========================================\n\n## Overview\nThe application polls rss-feeds for subscriber, transforms them into ebook's mobi format using kindlegen tool\nand send resulted mobi-files by email.\n\n\n## Prerequisites:\n1. MongoDB. It is supposed that all subscribers are stored in mongodb\n2. Tomcat. It is supposed that REST API and Web UI are deployed in Tomcat container or any other java container  \n3. kindlegen. kindlegen is command-line tool for transformation of documents from xml-format to mobi-format\nkindlegen is developed and supported by amazon.  kindlegen has to be deployed independently. To download kindlegen go to https://www.amazon.com/gp/feature.html?docId=1000765211\n4. SMTP-server. Any SMTP-server that allows to send messages from external applications\n5. Java 1.8\n\n\n## How to configure\nThe main configuration file is rss-2-kindle-camel/src/main/resources/camel-context.properties\nThe follwoing properties has to be configured according to certain environment:\n* `mongodb.host` - in case of docker it should be mongo\n* `kindlegen.path` - absolute path to kindlegen.sh \n* `smtp.uri` - SMTP server URI\n* `storage.path.root` - parent folder for saving rss and mobi files \n\n\n## How to build\nTo build this project use\n\n    mvn clean install -Dmaven.skip.test.exec\n\n\n## How to deploy\nDocker is used to deploy and run necessary environment. \nDocker configuration was tested on versions:\n* Docker 1.12.6\n* Docker-compose 1.8.1\n\nThere are 5 containers that have to be run: \n* MongoDB 3.2.10. Dockerfile is located in `docker-dir/mongo`. https://hub.docker.com/_/mongo/ \n* Tomcat 9.0. There are two containers with Tomcat: \n  * the first one is for REST API application. Dockerfile is located in `docker-dir/tomcat/rss2kindle-api-dockerfile`. \n  * the second one is for Web UI application. Dockerfile is located in `docker-dir/tomcat/rss2kindle-web-dockerfile`.\n  * Image: https://hub.docker.com/_/tomcat/\n* MailHog 1.0. Dockerfile is located in `docker-dir/mailhog`. https://hub.docker.com/r/mailhog/mailhog/\n* Traefik 2.1.4. HTTP reverse proxy and load balancer. https://hub.docker.com/_/traefik\n\nYou can run whole environment using one maven command:\n\n    mvn clean install docker-compose:up\n    \n\nYou also can build and deploy step by step:     \n    \n* build the project:\n        \n        mvn clean install\n        \n* make sure that war files have been copied to docker folder:\n        \n        docker-dir/tomcat/resources/rss2kindle##{RELEASE_VERSION}.war\n        docker-dir/tomcat/resources/r2kweb##{RELEASE_VERSION}.war\n        \n* go to docker directory\n        \n        cd docker-dir\n        \n* run docker:\n \n        docker-compose build\n        docker-compose up \n\n    \n## How to run\n\nTraefik as a reverse proxy stands before all containers and intercepts and routes every incoming request.\n\n* Traefik dashboard\n \n        http://ip_address:8080\n\n* Web UI should be available by URL:\n\n        https://web.localhost\n        or\n\t\thttps://ip_address/r2kweb\t\t\n        \n* Tomcat admin console for Web UI should be available by URL:\n        \n        https://web.localhost/manager\n        \n* REST API should be available by URL:\n       \n        https://api.localhost/rss2kindle/api/v1\n\t\tor\n\t\thttps://ip_address/rss2kindle/api/v1\n\n* Tomcat admin console for REST API should be available by URL:\n        \n        https://api.localhost/manager\n        \n* MailHog Web UI should be available by URL:\n        \n        http://smtp.localhost\n\t\tor\n\t\thttp://ip_address\n\n* MailHog SMTP port is 1025\n \n* MongoDB port is 27017 \n\n\n* To run this project from within Maven in command-line mode use\n\n        mvn exec:java\n\nIt will run only `rss-2-kindle-camel` application that does not have user interface,\nbut can be invoked via camel configuration\n\n\n### Structure of document in mongodb\n\n    { \n    \"_id\" : \"8a60e197-3ad8-4581-83e5-09c17bd3ee96\" , \n    \"username\" : \"test\" , \n    \"password\" : \"test\" ,\n    \"email\" : \"test@test.com\",\n    \"dateCreated\" : \"2017-11-13\" ,\n    \"status\" : \"active\" ,\n    \"subscribers\" : \n    [ \n        { \n        \"email\" : \"test@gmail.com\" , \n        \"name\" : \"test\" , \n        \"rsslist\" : \n        [ \n            { \"rss\" : \"test.org/feed\" , \n            \"status\" : \"active\"}\n        ] , \n        \"settings\" : { \n            \"starttime\" : \"2017-11-13\" , \n            \"timeout\" : \"24\"\n            } , \n        \"status\" : \"active\"\n        }\n    ] , \n    \"roles\" : [ \"ROLE_USER\"]\n    }\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feurohlam%2Frss2kindle","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feurohlam%2Frss2kindle","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feurohlam%2Frss2kindle/lists"}