{"id":13674393,"url":"https://github.com/buzz/newsdash","last_synced_at":"2025-08-01T08:35:06.375Z","repository":{"id":37777499,"uuid":"205661722","full_name":"buzz/newsdash","owner":"buzz","description":"A news dashboard inspired by iGoogle and Netvibes","archived":false,"fork":false,"pushed_at":"2024-12-10T07:11:04.000Z","size":1854,"stargazers_count":64,"open_issues_count":3,"forks_count":7,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-07T04:04:41.670Z","etag":null,"topics":["feedreader","news","newsfeed","newsreader","rss","self-hosted","webapp"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/buzz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-09-01T10:35:21.000Z","updated_at":"2025-05-04T15:27:31.000Z","dependencies_parsed_at":"2024-10-31T01:11:45.017Z","dependency_job_id":"dc072f05-9ff2-4f40-a9eb-641d45d4c450","html_url":"https://github.com/buzz/newsdash","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzz%2Fnewsdash","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzz%2Fnewsdash/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzz%2Fnewsdash/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/buzz%2Fnewsdash/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/buzz","download_url":"https://codeload.github.com/buzz/newsdash/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252810271,"owners_count":21807760,"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":["feedreader","news","newsfeed","newsreader","rss","self-hosted","webapp"],"created_at":"2024-08-02T11:00:48.818Z","updated_at":"2025-05-07T04:04:49.685Z","avatar_url":"https://github.com/buzz.png","language":"TypeScript","readme":"\u003ch1 align=\"center\"\u003e\n  \u003ca href=\"https://github.com/buzz/newsdash\"\u003e\u003cimg src=\"packages/client/src/assets/logo.svg\" alt=\"newsdash\" /\u003e\u003c/a\u003e\n\u003c/h1\u003e\n\n\u003ch4 align=\"center\"\u003eA news dashboard inspired by iGoogle and Netvibes\u003c/h4\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://github.com/buzz/newsdash/releases/latest\"\u003e\u003cimg src=\"https://img.shields.io/github/package-json/v/buzz/newsdash?color=%23999\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/buzz/newsdash/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/buzz/newsdash\"\u003e\u003c/a\u003e \u003ca href=\"#computer-installation\"\u003e\u003cimg src=\"https://img.shields.io/badge/self-hosted-blue\"\u003e\u003c/a\u003e \u003ca href=\"https://github.com/buzz/newsdash/issues\"\u003e\u003cimg src=\"https://img.shields.io/badge/contributions-welcome-brightgreen\"\u003e\u003c/a\u003e \u003ca href=\"https://www.gnu.org/licenses/agpl-3.0.en.html\"\u003e\u003cimg src=\"https://img.shields.io/github/license/buzz/newsdash\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"#-features\"\u003eFeatures\u003c/a\u003e •\n  \u003ca href=\"#-installation\"\u003eInstallation\u003c/a\u003e •\n  \u003ca href=\"#%EF%B8%8F-development\"\u003eDevelopment\u003c/a\u003e •\n  \u003ca href=\"#license\"\u003eLicense\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg alt=\"Screenshot\" src=\"https://github.com/user-attachments/assets/f9b80f44-a0b2-4087-884d-028e3828ec40\" /\u003e\n\u003c/p\u003e\n\n## ⭐ Features\n\n- Customizable dock-based dashboard\n- Support for Atom and RSS feeds\n- Four feed layouts: condensed, list, detailed, tiles\n- Tabbed multi-feeds\n- Import/Export settings and feeds\n- Filter feed items\n\n## 💻 Installation\n\nThis is a self-hosted solution with a provided Docker image for easy installation.\n\n### Requirements\n\n- Reverse proxy (nginx recommended)\n- Redis\n\n### Docker\n\nTo start quickly, run the Docker image, which starts the API server. The static web app is available\nunder the volume `/client`. For production, you need to serve the static files using [a\nwebserver](#nginx).\n\n```bash\n$ docker run \\\n    -e REDIS_URL=redis://redis:6380 \\\n    -p 127.0.0.1:3000:3000 \\\n    -v ./path/to/client:/client \\\n    newsdash/newsdash\n```\n\n#### Redis\n\nTo persist settings and feeds, provide a Redis instance. You can start a [Redis](http://redis.io)\ncontainer and link it to newsdash. [Docker Compose](https://docs.docker.com/compose/) is ideal for\nsmall setups. Use the `REDIS_URL` environment variable to customize the connection URL.\n\n#### nginx\n\nFor production deployment, use a reverse proxy like [nginx](https://nginx.org/) for:\n\n- Static file serving\n- Image caching\n- Basic authentication\n- Gzip compression\n- TLS termination\n\n```nginx\n# Sample nginx configuration as starting point\n\nhttp {\n  # ...\n\n  # Cache for newsdash images (highly recommended)\n  proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=newsdash_cache:10m max_size=1g inactive=30d use_temp_path=off;\n\n  server {\n    listen 443 ssl;\n    http2 on;\n    server_name newsdash.example.com;\n    # point this to the container volume `/client`\n    root /path/to/volume/client;\n\n    ssl on;\n    ssl_certificate ...;\n    ssl_certificate_key ...;\n\n    auth_basic \"Restricted\";\n    auth_basic_user_file htpasswd_file;\n\n    autoindex off;\n\n    gzip on;\n    gzip_min_length 500;\n    gzip_proxied any;\n    gzip_types text/css text/javascript application/json;\n\n    # Cache dynamic images\n    location ~ ^/api/feed/(image|logo) {\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_set_header Host $host;\n      proxy_pass http://newsdash:3000; # point to newsdash API server\n      proxy_http_version 1.1;\n      proxy_cache newsdash_cache;\n      proxy_cache_key \"$scheme$request_method$host$request_uri\";\n      proxy_cache_valid 200 302 15d;\n      proxy_cache_valid 404 1d;\n      proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;\n      add_header X-Cache-Status $upstream_cache_status;\n    }\n\n    # Serve API endpoints\n    location ~ ^/api {\n      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n      proxy_set_header Host $host;\n      proxy_pass http://newsdash:3000; # point to newsdash API server\n      proxy_http_version 1.1;\n    }\n\n    # Serve static files\n    location / {\n      try_files $uri $uri/index.html =404;\n    }\n  }\n}\n```\n\n## 🛠️ Development\n\nEnsure you have recent versions of [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/)\ninstalled.\n\nClone the project and start a development server.\n\n```bash\n$ git clone https://github.com/buzz/newsdash.git\n$ cd newsdash\n$ pnpm install\n$ pnpm dev\n```\n\n## License\n\n[GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0.en.html)\n","funding_links":[],"categories":["Software"],"sub_categories":["Feed Readers"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzz%2Fnewsdash","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbuzz%2Fnewsdash","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbuzz%2Fnewsdash/lists"}