yet another dashboard for your bookmarks
Find a file
2024-11-20 18:33:31 -06:00
lib tiny changes 2024-11-20 18:33:31 -06:00
.dockerignore release time 😎 2024-10-04 09:46:14 -05:00
.editorconfig fix nix flake. it builds now! 2023-11-10 22:18:14 -06:00
.gitignore add caching 2024-10-13 17:45:07 -05:00
Cache.go add verbose output, cache icons on startup 2024-10-14 16:12:04 -05:00
Config.go log evaluated config in debug/verbose 2024-11-14 21:41:16 -06:00
Dockerfile fix docker 2023-01-03 16:30:28 -06:00
flake.lock replace flag package with pflag 2024-09-26 14:30:30 -05:00
flake.nix remove port option from config file, update template functions, yadda yadda... 2024-10-13 17:48:09 -05:00
go.mod update dependencies 2024-11-20 18:33:15 -06:00
go.sum update dependencies 2024-11-20 18:33:15 -06:00
helpers.go remove port option from config file, update template functions, yadda yadda... 2024-10-13 17:48:09 -05:00
icon.svg newer icon 2024-09-07 18:45:19 -05:00
LICENSE.md add custom colors, CSS, and license.\nbreaking change for config file format. 2023-01-03 15:16:17 -06:00
main.go add verbose output, cache icons on startup 2024-10-14 16:12:04 -05:00
preview.png add custom colors, CSS, and license.\nbreaking change for config file format. 2023-01-03 15:16:17 -06:00
README.md Update README.md and TODO.md 2024-10-14 19:54:40 -05:00
TODO.md tiny changes 2024-11-20 18:33:31 -06:00

dashh

preview

yet another dashboard for organizing your links.

  • easy to configure (1 yaml file required, see example)
  • incredibly lightweight frontend (no react, no js, just plain html+css)
  • uses css3's flexbox "masonry" layout
  • mobile friendly
  • written in go

installing

from source

  1. make sure you have go 1.16 or newer
  2. clone this repo and cd into it in a terminal
  3. go mod download && go build
  4. ./dashh -p 8080 -s /static/dir/ /path/to/config.yml (see dashh -h for help)

systemd

  1. compile/download and move the binary to /usr/local/bin/dashh
  2. put your configuration in /etc/dashh.yml
  3. (optional) make a dir called /var/lib/dashh/ to store your static assets
  4. create a user and group called dashh and make sure it owns and/or has the right permissions for the paths you created
  5. put the following in /etc/systemd/system/dashh.service:
[Unit]
Description=dashhboardd
After=network.target

[Service]
ExecStart=/usr/local/bin/dashh -s /var/lib/dashh/ /etc/dashh.yml
User=dashh
Group=dashh
Type=exec
Restart=always

[Install]
WantedBy=default.target
RequiredBy=network.target
  1. sudo systemctl daemon-reload && sudo systemctl enable --now dashh

Docker

to do...

NixOS (flake)

add this to flake.nix:

{
  inputs = {
    dashh.url = "git+https://git.cyberia.club/reese/dashh";
  };
  outputs = { self, ... }@inputs: with inputs; rec {
    nixosConfigurations = {
      hostname = nixpkgs.lib.nixosSystem rec {
        specialArgs = { inherit inputs self; };
        system = "x86_64-linux";
        modules = [
          ./configuration.nix
          dashh.nixosModules.dashh
        ];
      };
    };
  };
}
example configuration.nix
{
  services.dashh = {
    enable = true;
    
    theme = [
      "#ede4e7"
      "#261f22"
      "#f34396"
    ];
    
    css = ''
      .subtitle {
        font-style: oblique;
      }
    '';

    sections = {
      Admin = {
        apps = {
          Router = {
            subtitle = "pfSense";
            href = "https://192.168.0.1";
            icon = "pfsense.png";
          };
          "Wifi APs" = {
            icon = "openwrt.png";
            nodes = [
              { name = "Downstairs";
                href = "http://192.168.0.2"; }
              { name = "Upstairs";
                href = "http://192.168.0.3"; }
            ];
          };
        };
      };
    };
  };
}

see flake.nix for all options.

be aware that your entries will be sorted alphabetically. this is something Nix does and I don't think there's an easy way to override it.

usage

      --cache-age float    How long to cache icons for (in hours) (default 12)
  -c, --cache-dir string   Directory for storing cached icons
  -p, --port int           HTTP server port (default 8327)
  -s, --static string      Path to your static files
  -t, --template string    Path to your HTML template file
  <config>                 Your dashboard configuration file (Required)

config yaml structure

port: int (default 8327)

theme: list of hexadecimal color codes - see Config.go for defaults

  • foreground - used as background in light theme
  • background - used as foreground in light theme
  • accent/highlight

autoTheme: bool (default true) - switch foreground and background colors when prefers-color-scheme: dark

columnSize: pixels (default 400)

css: string - extra styles to add in case you don't feel like replacing the template outright

entries:

  • title: string
    apps:
    • name: string
      href: URL
      icon: a URL, MDI shortcode, or dashboard-icons icon
      nodes: list of entries - nesting of nodes isn't supported by the default template
      • name: string
        href: URL bookmarks:
    • name: string
      href: URL

icon specification

an entry's icon: can be one of a number of different types of strings. dashh will try to resolve it in this order:

  • if it starts with http, then it will use that URL as the icon.
  • if it starts with /, then it will resolve to one of your static files.
  • if it starts with mdi-, then it will use the icon provided by material-design-icons.
  • otherwise, it will fall back to an icon provided by dashboard-icons.