Home
Softono

Newsdash

Open source TypeScript
65
Stars
7
Forks
3
Issues
1
Watchers
5 months
Last Commit

 About Newsdash

A news dashboard inspired by iGoogle and Netvibes

Platforms

Web Self-hosted

Languages

TypeScript

Links

Need Help Installing Newsdash?

We provide expert installation service for this software. Our team will install, configure, and secure Newsdash on your server. plans start at just $30.

newsdash

A news dashboard inspired by iGoogle and Netvibes

FeaturesInstallationDevelopmentLicense

Screenshot

⭐ 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.

$ 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 container and link it to newsdash. Docker 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 for:

  • Static file serving
  • Image caching
  • Basic authentication
  • Gzip compression
  • TLS termination
# Sample nginx configuration as starting point

http {
  # ...

  # 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 and pnpm installed.

Clone the project and start a development server.

$ git clone https://github.com/buzz/newsdash.git
$ cd newsdash
$ pnpm install
$ pnpm dev

License

GNU Affero General Public License v3.0