Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/buzz/newsdash
A news dashboard inspired by iGoogle and Netvibes
https://github.com/buzz/newsdash
feedreader news newsfeed newsreader rss self-hosted webapp
Last synced: 4 days ago
JSON representation
A news dashboard inspired by iGoogle and Netvibes
- Host: GitHub
- URL: https://github.com/buzz/newsdash
- Owner: buzz
- License: agpl-3.0
- Created: 2019-09-01T10:35:21.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2024-07-22T18:39:45.000Z (5 months ago)
- Last Synced: 2024-12-08T11:36:27.405Z (15 days ago)
- Topics: feedreader, news, newsfeed, newsreader, rss, self-hosted, webapp
- Language: TypeScript
- Homepage:
- Size: 1.65 MB
- Stars: 58
- Watchers: 2
- Forks: 7
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
A news dashboard inspired by iGoogle and Netvibes
Features •
Installation •
Development •
License
## ⭐ Features
- Customizable dock-based dashboard
- Support for Atom and RSS feeds
- Four feed layouts: condensed, list, detailed, tiles
- Tabbed multi-feeds
- Import/Export settings and feeds
- Filter feed items## 💻 Installation
This is a self-hosted solution with a provided Docker image for easy installation.
### Requirements
- Reverse proxy (nginx recommended)
- Redis### Docker
To start quickly, run the Docker image, which starts the API server. The static web app is available
under the volume `/client`. For production, you need to serve the static files using [a
webserver](#nginx).```bash
$ docker run \
-e REDIS_URL=redis://redis:6380 \
-p 127.0.0.1:3000:3000 \
-v ./path/to/client:/client \
newsdash/newsdash
```#### Redis
To persist settings and feeds, provide a Redis instance. You can start a [Redis](http://redis.io)
container and link it to newsdash. [Docker Compose](https://docs.docker.com/compose/) is ideal for
small setups. Use the `REDIS_URL` environment variable to customize the connection URL.#### nginx
For production deployment, use a reverse proxy like [nginx](https://nginx.org/) for:
- Static file serving
- Image caching
- Basic authentication
- Gzip compression
- TLS termination```nginx
# Sample nginx configuration as starting pointhttp {
# ...# Cache for newsdash images (highly recommended)
proxy_cache_path /var/cache/nginx levels=1:2 keys_zone=newsdash_cache:10m max_size=1g inactive=30d use_temp_path=off;server {
listen 443 ssl;
http2 on;
server_name newsdash.example.com;
# point this to the container volume `/client`
root /path/to/volume/client;ssl on;
ssl_certificate ...;
ssl_certificate_key ...;auth_basic "Restricted";
auth_basic_user_file htpasswd_file;autoindex off;
gzip on;
gzip_min_length 500;
gzip_proxied any;
gzip_types text/css text/javascript application/json;# Cache dynamic images
location ~ ^/api/feed/(image|logo) {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://newsdash:3000; # point to newsdash API server
proxy_http_version 1.1;
proxy_cache newsdash_cache;
proxy_cache_key "$scheme$request_method$host$request_uri";
proxy_cache_valid 200 302 15d;
proxy_cache_valid 404 1d;
proxy_cache_use_stale error timeout updating http_500 http_502 http_503 http_504;
add_header X-Cache-Status $upstream_cache_status;
}# Serve API endpoints
location ~ ^/api {
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header Host $host;
proxy_pass http://newsdash:3000; # point to newsdash API server
proxy_http_version 1.1;
}# Serve static files
location / {
try_files $uri $uri/index.html =404;
}
}
}
```## 🛠️ Development
Ensure you have recent versions of [Node.js](https://nodejs.org/) and [pnpm](https://pnpm.io/)
installed.Clone the project and start a development server.
```bash
$ git clone https://github.com/buzz/newsdash.git
$ cd newsdash
$ pnpm install
$ pnpm dev
```## License
[GNU Affero General Public License v3.0](https://www.gnu.org/licenses/agpl-3.0.en.html)