From 8404128ce3a20fa9b4cd45f34c891b8947c9bfb2 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 22 Jul 2021 22:46:39 +0100 Subject: [PATCH 001/108] :memo: Creates a separate file for instance managmnet --- docs/management.md | 192 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 192 insertions(+) create mode 100644 docs/management.md diff --git a/docs/management.md b/docs/management.md new file mode 100644 index 00000000..15d755b7 --- /dev/null +++ b/docs/management.md @@ -0,0 +1,192 @@ +# Management + +## Providing Assets +Although not essential, you will most likely want to provide several assets to Dashy. All web assets can be found in the `/public` directory. + +- `./public/conf.yml` - As mentioned, this is your main application config file +- `./public/item-icons` - If you're using your own icons, you can choose to store them locally for better load time, and this is the directory to put them in. You can also use sub-folders here to keep things organized. You then reference these assets relative this the direcroties path, for example: to use `./public/item-icons/networking/netdata.png` as an icon for one of your links, you would set `icon: networking/netdata.png` +- Also within `./public` you'll find standard website assets, including `favicon.ico`, `manifest.json`, `robots.txt`, etc. There's no need to modify these, but you can do so if you wish. + +## Basic Commands + +Now that you've got Dashy running, there are a few commands that you need to know. + +The following commands are defined in the [`package.json`](https://github.com/Lissy93/dashy/blob/master/package.json#L5) file, and are run with `yarn`. If you prefer, you can use NPM, just replace instances of `yarn` with `npm run`. If you are using Docker, then you will need to precede each command with `docker exec -it [container-id]`, where container ID can be found by running `docker ps`. For example `docker exec -it 26c156c467b4 yarn build`. + +- **`yarn build`** - In the interest of speed, the application is pre-compiled, this means that the config file is read during build-time, and therefore the app needs to rebuilt for any new changes to take effect. Luckily this is very straight forward. Just run `yarn build` or `docker exec -it [container-id] yarn build` +- **`yarn validate-config`** - If you have quite a long configuration file, you may wish to check that it's all good to go, before deploying the app. This can be done with `yarn validate-config` or `docker exec -it [container-id] yarn validate-config`. Your config file needs to be in `/public/conf.yml` (or within your Docker container at `/app/public/conf.yml`). This will first check that your YAML is valid, and then validates it against Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js). +- **`yarn health-check`** - Checks that the application is up and running on it's specified port, and outputs current status and response times. Useful for integrating into your monitoring service, if you need to maintain high system availability +- **`yarn build-watch`** - If you find yourself making frequent changes to your configuration, and do not want to have to keep manually rebuilding, then this option is for you. It will watch for changes to any files within the projects root, and then trigger a rebuild. Note that if you are developing new features, then `yarn dev` would be more appropriate, as it's significantly faster at recompiling (under 1 second), and has hot reloading, linting and testing integrated +- **`yarn build-and-start`** - Builds the app, runs checks and starts the production server. Commands are run in parallel, and so is faster than running them in independently +- **`yarn pm2-start`** - Starts the Node server using [PM2](https://pm2.keymetrics.io/), a process manager for Node.js applications, that helps them stay alive. PM2 has some built-in basic monitoring features, and an optional [management solution](https://pm2.io/). If you are running the app on bare metal, it is recommended to use this start command + +## Healthchecks + +Healthchecks are configured to periodically check that Dashy is up and running correctly on the specified port. By default, the health script is called every 5 minutes, but this can be modified with the `--health-interval` option. You can check the current container health with: `docker inspect --format "{{json .State.Health }}" [container-id]`, and a summary of health status will show up under `docker ps`. You can also manually request the current application status by running `docker exec -it [container-id] yarn health-check`. You can disable healthchecks altogether by adding the `--no-healthcheck` flag to your Docker run command. + +To restart unhealthy containers automatically, check out [Autoheal](https://hub.docker.com/r/willfarrell/autoheal/). This image watches for unhealthy containers, and automatically triggers a restart. This is a stand in for Docker's `--exit-on-unhealthy` that was proposed, but [not merged](https://github.com/moby/moby/pull/22719). + +## Logs and Performance + +#### Container Logs +You can view logs for a given Docker container with `docker logs [container-id]`, add the `--follow` flag to stream the logs. For more info, see the [Logging Documentation](https://docs.docker.com/config/containers/logging/). There's also [Dozzle](https://dozzle.dev/), a useful tool, that provides a web interface where you can stream and query logs from all your running containers from a single web app. + +#### Container Performance +You can check the resource usage for your running Docker containers with `docker stats` or `docker stats [container-id]`. For more info, see the [Stats Documentation](https://docs.docker.com/engine/reference/commandline/stats/). There's also [cAdvisor](https://github.com/google/cadvisor), a useful web app for viewing and analyzing resource usage and performance of all your running containers. + +#### Management Apps +You can also view logs, resource usage and other info as well as manage your entire Docker workflow in third-party Docker management apps. For example [Portainer](https://github.com/portainer/portainer) an all-in-one open source management web UI for Docker and Kubernetes, or [LazyDocker](https://github.com/jesseduffield/lazydocker) a terminal UI for Docker container management and monitoring. + +#### Advanced Logging and Monitoring +Docker supports using [Prometheus](https://prometheus.io/) to collect logs, which can then be visualized using a platform like [Grafana](https://grafana.com/). For more info, see [this guide](https://docs.docker.com/config/daemon/prometheus/). If you need to route your logs to a remote syslog, then consider using [logspout](https://github.com/gliderlabs/logspout). For enterprise-grade instances, there are managed services, that make monitoring container logs and metrics very easy, such as [Sematext](https://sematext.com/blog/docker-container-monitoring-with-sematext/) with [Logagent](https://github.com/sematext/logagent-js). + +## Auto-Starting at System Boot + +You can use Docker's [restart policies](https://docs.docker.com/engine/reference/run/#restart-policies---restart) to instruct the container to start after a system reboot, or restart after a crash. Just add the `--restart=always` flag to your Docker compose script or Docker run command. For more information, see the docs on [Starting Containers Automatically](https://docs.docker.com/config/containers/start-containers-automatically/). + +For Podman, you can use `systemd` to create a service that launches your container, [the docs](https://podman.io/blogs/2018/09/13/systemd.html) explains things further. A similar approach can be used with Docker, if you need to start containers after a reboot, but before any user interaction. + +To restart the container after something within it has crashed, consider using [`docker-autoheal`](https://github.com/willfarrell/docker-autoheal) by @willfarrell, a service that monitors and restarts unhealthy containers. For more info, see the [Healthchecks](#healthchecks) section above. + +## Securing + +#### SSL + +Enabling HTTPS with an SSL certificate is recommended if you hare hosting Dashy anywhere other than your home. This will ensure that all traffic is encrypted in transit. + +[Let's Encrypt](https://letsencrypt.org/docs/) is a global Certificate Authority, providing free SSL/TLS Domain Validation certificates in order to enable secure HTTPS access to your website. They have good browser/ OS [compatibility](https://letsencrypt.org/docs/certificate-compatibility/) with their ISRG X1 and DST CA X3 root certificates, support [Wildcard issuance](https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578) done via ACMEv2 using the DNS-01 and have [Multi-Perspective Validation](https://letsencrypt.org/2020/02/19/multi-perspective-validation.html). Let's Encrypt provide [CertBot](https://certbot.eff.org/) an easy app for generating and setting up an SSL certificate + +[ZeroSSL](https://zerossl.com/) is another popular certificate issuer, they are free for personal use, and also provide easy-to-use tools for getting things setup. + + +If you're hosting Dashy behind Cloudflare, then they offer [free and easy SSL](https://www.cloudflare.com/en-gb/learning/ssl/what-is-an-ssl-certificate/). + +If you're not so comfortable on the command line, then you can use a tool like [SSL For Free](https://www.sslforfree.com/) to generate your Let's Encrypt or ZeroSSL certificate, and support shared hosting servers. They also provide step-by-step tutorials on setting up your certificate on most common platforms. If you are using shared hosting, you may find [this tutorial](https://www.sitepoint.com/a-guide-to-setting-up-lets-encrypt-ssl-on-shared-hosting/) helpful. + +#### Authentication +Dashy has [basic authentication](/docs/authentication.md) built in, however at present this is handled on the front-end, and so where security is critical, it is recommended to use an alternative method. See [here](/docs/authentication.md#alternative-authentication-methods) for options regarding securing Dashy. + + +**[⬆️ Back to Top](#management)** + +--- +## Updating + +Dashy is under active development, so to take advantage of the latest features, you may need to update your instance every now and again. + +### Updating Docker Container +1. Pull latest image: `docker pull lissy93/dashy:latest` +2. Kill off existing container + - Find container ID: `docker ps` + - Stop container: `docker stop [container_id]` + - Remove container: `docker rm [container_id]` +3. Spin up new container: `docker run [params] lissy93/dashy` + +### Automatic Docker Updates + +You can automate the above process using [Watchtower](https://github.com/containrrr/watchtower). +Watchtower will watch for new versions of a given image on Docker Hub, pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. + +To get started, spin up the watchtower container: + +``` +docker run -d \ + --name watchtower \ + -v /var/run/docker.sock:/var/run/docker.sock \ + containrrr/watchtower +``` + +For more information, see the [Watchtower Docs](https://containrrr.dev/watchtower/) + +### Updating Dashy from Source +1. Navigate into directory: `cd ./dashy` +2. Stop your current instance +3. Pull latest code: `git pull origin master` +4. Re-build: `yarn build` +5. Start: `yarn start` + +**[⬆️ Back to Top](#management)** + +--- + +## Web Server Configuration + +_The following section only applies if you are not using Docker, and would like to use your own web server_ + +Dashy ships with a pre-configured Node.js server, in [`server.js`](https://github.com/Lissy93/dashy/blob/master/server.js) which serves up the contents of the `./dist` directory on a given port. You can start the server by running `node server`. Note that the app must have been build (run `yarn build`), and you need [Node.js](https://nodejs.org) installed. + +If you wish to run Dashy from a sub page (e.g. `example.com/dashy`), then just set the `BASE_URL` environmental variable to that page name (in this example, `/dashy`), before building the app, and the path to all assets will then resolve to the new path, instead of `./`. + +However, since Dashy is just a static web application, it can be served with whatever server you like. The following section outlines how you can configure a web server. + +Note, that if you choose not to use `server.js` to serve up the app, you will loose access to the following features: +- Loading page, while the app is building +- Writing config file to disk from the UI +- Website status indicators, and ping checks + +### NGINX + +Create a new file in `/etc/nginx/sites-enabled/dashy` + +``` +server { + listen 80; + listen [::]:80; + + root /var/www/dashy/html; + index index.html; + + server_name your-domain.com www.your-domain.com; + + location / { + try_files $uri $uri/ =404; + } +} +``` +Then upload the build contents of Dashy's dist directory to that location. +For example: `scp -r ./dist/* [username]@[server_ip]:/var/www/dashy/html` + +### Apache + +Copy Dashy's dist folder to your apache server, `sudo cp -r ./dashy/dist /var/www/html/dashy`. + +In your Apache config, `/etc/apche2/apache2.conf` add: +``` + + Options Indexes FollowSymLinks + AllowOverride All + Require all granted + +``` + +Add a `.htaccess` file within `/var/www/html/dashy/.htaccess`, and add: +``` +Options -MultiViews +RewriteEngine On +RewriteCond %{REQUEST_FILENAME} !-f +RewriteRule ^ index.html [QSA,L] +``` + +Then restart Apache, with `sudo systemctl restart apache2` + +### cPanel +1. Login to your WHM +2. Open 'Feature Manager' on the left sidebar +3. Under 'Manage feature list', click 'Edit' +4. Find 'Application manager' in the list, enable it and hit 'Save' +5. Log into your users cPanel account, and under 'Software' find 'Application Manager' +6. Click 'Register Application', fill in the form using the path that Dashy is located, and choose a domain, and hit 'Save' +7. The application should now show up in the list, click 'Ensure dependencies', and move the toggle switch to 'Enabled' +8. If you need to change the port, click 'Add environmental variable', give it the name 'PORT', choose a port number and press 'Save'. +9. Dashy should now be running at your selected path an on a given port + +**[⬆️ Back to Top](#management)** + +--- + +## Authentication + +Dashy has built-in authentication and login functionality. However, since this is handled on the client-side, if you are using Dashy in security-critical situations, it is recommended to use an alternate method for authentication, such as [Authelia](https://www.authelia.com/), a VPN or web server and firewall rules. For more info, see **[Authentication Docs](/docs/authentication.md)**. + + +**[⬆️ Back to Top](#management)** \ No newline at end of file From ff20d380e079108c98492ee4a6cd17c71ee7441b Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 22 Jul 2021 22:47:16 +0100 Subject: [PATCH 002/108] :memo: Adds quick-start, moves cloud services into a table, and adds headigs for future sections --- docs/deployment.md | 388 ++++++--------------------------------------- 1 file changed, 49 insertions(+), 339 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index 12ee05e4..352d11ce 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -1,30 +1,31 @@ # Deployment -- [Running the App](#running-the-app) - - [Deploy with Docker](#deploy-with-docker) - - [Deploy from Source](#deploy-from-source) - - [Deploy to Cloud Service](#deploy-to-cloud-service) -- [Usage](#usage) - - [Providing Assets](#providing-assets) - - [Basic Commands](#basic-commands) - - [Healthchecks](#healthchecks) - - [Monitoring](#logs-and-performance) - - [Auto Starting](#auto-starting-at-system-boot) -- [Updating](#updating) - - [Updating Docker Container](#updating-docker-container) - - [Automating Docker Updates](#automatic-docker-updates) - - [Updating from Source](#updating-dashy-from-source) -- [Web Server Configuration](#web-server-configuration) - - [NGINX](#nginx) - - [Apache](#apache) +Welcome to Dashy, so glad you're here :) Deployment is super easy, and there are several methods available depending on what type of system you're using. If you're self-hosting, then deploying with Docker (or similar container engine) is the recommended approach. -## Running the App +#### Quick Start +If you want to skip the fuss, and get straight down to it, then you can spin up a new instance of Dashy by running: +``` +docker run -p 8080:80 lissy93/dashy +``` + +See [Management Docs](./docs/management.md) for info about securing, monitoring, updating, health checks, auto starting, web server configuration, etc + +Once you've got Dashy up and running, you'll want to configure it with your own content. You can either reference the [configuring docs]() or follow this [step-by-step guide](). + +## Deployment Methods + +- [Deploy with Docker](#deploy-with-docker) +- [Build from Source](#build-from-source) +- [Hosting with CDN](#hosting-with-cdn) +- [Run as executable](#run-as-executable) +- [Install with NPM](#install-with-npm) +- [Deploy to cloud service](#deploy-to-cloud-service) +- [Use managed instance](#use-managed-instance) ### Deploy with Docker -The quickest way to get started on any system is with Docker, and Dashy is available though [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system. +Dashy has a built container image hosted on [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system. -To configure Dashy with your own services, and customize it to your liking, you will need to write a config file, and pass it to the Docker container as a volume. ```docker docker run -d \ @@ -37,32 +38,18 @@ docker run -d \ Explanation of the above options: - `-d` Detached mode (not running in the foreground of your terminal) -- `-p` The port that should be exposed, and the port it should be mapped to in your host system `[host-port][container-port]` -- `-v` Specify volumes, to pass data from your host system to the container, in the format of `[host-path]:[container-path]` +- `-p` The port that should be exposed, and the port it should be mapped to in your host system `[host-port][container-port]`, leave the container port as is +- `-v` Specify volumes, to pass data from your host system to the container, in the format of `[host-path]:[container-path]`, you can use this to pass your config file, directory of assets (like icons), custom CSS or web assets (like favicon.ico, manifest.json etc) - `--name` Give your container a human-readable name - `--restart=always` Spin up the container when the daemon starts, or after it has been stopped -- `lissy93/dashy:latest` This last option is the image the container should be built from +- `lissy93/dashy:latest` This last option is the image the container should be built from, you can also use a specific version, by replacing `:latest` with one of tthe [tags](https://hub.docker.com/r/lissy93/dashy/tags) For all available options, and to learn more, see the [Docker Run Docs](https://docs.docker.com/engine/reference/commandline/run/) -You can also build and deploy the Docker container from source. -- Get the code: `git clone git@github.com:Lissy93/dashy.git && cd dashy` -- Edit the `./public/conf.yml` file and take a look at the `docker-compose.yml` -- Start the container: `docker compose up` -### Other Container Engines +### Build from Source -Docker isn't the only host application capable of running standard Linux containers - [Podman](http://podman.io) is another popular option. Unlike Docker, Podman does not rely on a daemon to be running on your host system. This means there is no single point of failure and it can also support rootless containers, which is perfect for Dashy as it does not require any sudo privileges. Podman was developed by RedHat, and it's source code is written in Go, and published on [GitHub](https://github.com/containers/podman). - -Installation of the podman is really easy, as it's repository is available for most package managers (for example; Arch: `sudo pacman -S podman`, Debian/ Ubuntu: `sudo apt-get install podman`, Gentoo: `sudo emerge app-emulation/podman`, and MacOS: `brew install podman`). For more info, check out the [podman installation docs](https://podman.io/getting-started/installation). If you are using Windows, then take a look at Brent Baude's article on [Running Podman on WSL](https://www.redhat.com/sysadmin/podman-windows-wsl2). Since it's CLI is pretty much identical to that of Dockers, Podman's learning curve is very shallow. - -To run Dashy with Podman, just replace `docker` with `podman` in the above instructions. E.g. `podman run -p 8080:80 lissy93/dashy` - -It's worth noting that Podman isn't the only container running alternative, there's also [`rkt`](https://www.openshift.com/learn/topics/rkt), [`runc`](https://github.com/opencontainers/runc), [`containerd`](https://containerd.io/) and [`cri-o`](https://cri-o.io/). Dashy has not been tested with any of these engines, but it should work just fine. - - -### Deploy from Source -If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed. +If you do not want to use Docker, you can run Dashy directly on your host system. For this, you will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed, and optionally [yarn](https://yarnpkg.com/) 1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy` 2. Configuration: Fill in you're settings in `./public/conf.yml` @@ -70,313 +57,36 @@ If you do not want to use Docker, you can run Dashy directly on your host system 4. Build: `yarn build` 5. Run: `yarn start` -### Deploy to Cloud Service +### Run as executable -Dashy supports 1-Click deployments on several popular cloud platforms. +### Install with NPM -#### Netlify -[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy) +### Use managed instance -[Netlify](https://www.netlify.com/) offers Git-based serverless cloud hosting for web applications. Their services are free to use for personal use, and they support deployment from both public and private repos, as well as direct file upload. The free plan also allows you to use your own custom domain or sub-domain, and is easy to setup. +### Deploy to cloud service -To deploy Dashy to Netlify, use the following link -``` -https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy -``` +If you don't have a home server, then fear not - Dashy can be deployed to pretty much any cloud provider. The above Docker and NPM guides will work exactly the same on a VPS, but I've also setup some 1-Click deploy links for 10+ of the most common cloud providers, to make things easier. Note that if your instance is exposed to the internet, it will be your responsibility to adequately secure it. -#### Heroku -[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Lissy93/dashy) +Some hosting providers required a bit of extra configuration, which was why I've made separate branches for deploying to those services (named: [`deploy_cloudflare`](https://github.com/Lissy93/dashy/tree/deploy_cloudflare), [`deploy_digital-ocean`](https://github.com/Lissy93/dashy/tree/deploy_digital-ocean), [`deploy_platform-sh`](https://github.com/Lissy93/dashy/tree/deploy_platform-sh) and [`deploy_render`](https://github.com/Lissy93/dashy/tree/deploy_render)). If there's another cloud service which you'd like 1-click deployment to be supported for, feel free to raise an issue. -[Heroku](https://www.heroku.com/) is a fully managed cloud platform as a service. You define app settings in a Procfile and app.json, which specifying how the app should be build and how the server should be started. Heroku is free to use for unlimited, non-commercial, single dyno apps, and supports custom domains. Heroku's single-dyno service is not as quite performant as some other providers, and the app will have a short wake-up time when not visited for a while +**Note** If you use a static hosting provider, then status checks, writing new config changes to disk from the UI, and triggering a rebuild through the UI will not be availible. This is because these features need endpoints provided by Dashy's local Node server. Everything else should work just the same though. -To deploy Dashy to Heroku, use the following link -``` -https://heroku.com/deploy?template=https://github.com/Lissy93/dashy -``` +**Service** | **1-Click Button** | **Info** +--- | --- | --- +**[Netlify ![Netlify Icon](https://i.ibb.co/ZxtzrP3/netlify.png)](https://www.netlify.com/)** | Deploy | Netlify offers Git-based serverless static hosting for web applications. Their services are free to use for personal use, and they support deployment from both public and private repos, as well as direct file upload. The free plan also allows you to use your own custom domain or sub-domain, SSL certificate and is very easy to setup.
**Deploy Link**: `https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy` +**[Heroku ![Heroku Icon](https://i.ibb.co/d2P1WZ7/heroku.png)](https://www.heroku.com/)** | Deploy | Heroku is a fully managed cloud platform as a service. You define app settings in a Procfile and app.json, which specifying how the app should be build and how the server should be started. Heroku is free to use for unlimited, non-commercial, single dyno apps, and supports custom domains. Heroku's single-dyno service is not as quite performant as some other providers, and the app will have a short wake-up time when not visited for a while.
**Deploy Link**: `https://heroku.com/deploy?template=https://github.com/Lissy93/dashy` +**[Cloudflare Workers ![cloudflare-icon](https://i.ibb.co/CvpFM1S/cloudflare.png)](https://workers.cloudflare.com/)** | Deploy | Cloudflare now support web workers, which is a simple yet powerful service for running cloud functions and hosting web content. It requires a Cloudflare account, but is completely free for smaller projects, and very reasonably priced ($0.15/million requests per month) for large applications. You can use your own domain, and applications are protected with Cloudflare's state of the art DDoS protection. For more info, see the docs on [Worker Sites](https://developers.cloudflare.com/workers/platform/sites).
**Deploy Link**: `https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare` +**[Vercel ![vercel-icon](https://i.ibb.co/Ld2FZzb/vercel.png)](https://vercel.com/)** | Deploy | Vercel is a performance-focused platform for hosting static frontend apps. It comes bundled with some useful tools for monitoring and anaylzing application performance and other metrics. Vercel is free for personal use, allows for custom domains and has very reasonable limits.
**Deploy Link**: `https://vercel.com/new/project?template=https://github.com/lissy93/dashy` +**[Digital Ocean ![digital-ocean-icon](https://i.ibb.co/V2MxtGC/digitalocean.png)](https://www.digitalocean.com/)** | Deploy | is a cloud service providing affordable developer-friendly virtual machines from $5/month. But they also have an app platform, where you can run web apps, static sites, APIs and background workers. CDN-backed static sites are free for personal use.
**Deploy Link**: `https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean` +**[Google Cloud Run ![google-cloud-icon](https://i.ibb.co/J7MGymY/googlecloud.png)](https://cloud.google.com/run/)** | Deploy | Cloud Run is a service offered by [Google Cloud](https://cloud.google.com/). It's a fully managed serverless platform, for developing and deploying highly scalable containerized applications. Similar to AWS and Azure, GCP offers a wide range of cloud services, which are billed on a pay‐per‐use basis, but Cloud Run has a [free tier](https://cloud.google.com/run/pricing) offering 180,000 vCPU-seconds, 360,000 GiB-seconds, and 2 million requests per month.
**Deploy Link**: `https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git` +**[Platform.sh ![platform-icon](https://i.ibb.co/GdfvH3Z/platformsh.png)](https://platform.sh)** | Deploy | Platform.sh is an end-to-end solution for developing and deploying applications. It is geared towards enterprise users with large teams, and focuses on allowing applications to scale up and down. Unlike the above providers, Platform.sh is not free, although you can deploy a test app to it without needing a payment method.
**Deploy Link**: `https://console.platform.sh/projects/create-project/?template=https://github.com/Lissy93/dashy/tree/deploy_platform-sh` +**[Render ![render-icon](https://i.ibb.co/xCHtzgh/render.png)](https://render.com)** | Deploy | Render is cloud provider that provides easy deployments for static sites, Docker apps, web services, databases and background workers. Render is great for developing applications, and very easy to use. Static sites are free, and services start at $7/month. Currently there are only 2 server locations - Oregon, USA and Frankfurt, Germany. For more info, see the [Render Docs](https://render.com/docs)
**Deploy Link**: `https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render` +**[Scalingo ![scalingo-icon](https://i.ibb.co/Rvf5c4y/scalingo.png)](https://scalingo.com/)** | Deploy | Scalingo is a scalable container-based cloud platform as a service. It's focus is on compliance and uptime, and is geared towards enterprise users. Scalingo is also not free, although they do have a 3-day free trial that does not require a payment method
**Deploy Link**: `https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master` +**[Play-with-Docker ![pwd-icon](https://i.ibb.co/HVWVYF7/docker.png)](https://labs.play-with-docker.com/)** | Deploy | PWD is a community project by Marcos Liljedhal and Jonathan Leibiusky and sponsored by Docker, intended to provide a hands-on learning environment. Their labs let you quickly spin up a Docker container or stack, and test out the image in a temporary, sandboxed environment. There's no need to sign up, and it's completely free.
**Deploy Link**: `https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml` +**[Surge.sh ![surge-icon](https://i.ibb.co/WgVC4mB/surge.png)](http://surge.sh/)** | Deploy | Surge.sh is quick and easy static web publishing platform for frontend-apps. Surge supports [password-protected projects](https://surge.sh/help/adding-password-protection-to-a-project). You can also [add a custom domain](https://surge.sh/help/adding-a-custom-domain) and then [force HTTPS by default](https://surge.sh/help/using-https-by-default) and optionally [set a custom SSL certificate](https://surge.sh/help/securing-your-custom-domain-with-ssl)
**To Deploy**, you need to clone Dashy, cd into it, build it, then run `surge ./dist` -#### Cloudflare Workers -[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare) +### Hosting with CDN -[Cloudflare Workers](https://workers.cloudflare.com/) is a simple yet powerful service for running cloud functions and hosting web content. It requires a Cloudflare account, but is completely free for smaller projects, and very reasonably priced ($0.15/million requests per month) for large applications. You can use your own domain, and applications are protected with Cloudflare's state of the art DDoS protection. For more info, see the docs on [Worker Sites](https://developers.cloudflare.com/workers/platform/sites) +Once Dashy has been built, it is effectivley just a static web app. This means that it can be served up with pretty much any static host, CDN or web server. To host Dashy through a CDN, the steps are very similar to building from source: clone the project, cd into it, install dependencies, write your config file and build the app. Once build is complete you will have a `./dist` directory within Dashy's root, and this is the build application which is ready to be served up. -To deploy Dashy to Cloudflare, use the following link -``` -https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare -``` - -#### Vercel -[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/project?template=https://github.com/lissy93/dashy) - -[Vercel](https://vercel.com/) is a performance-focused platform for hosting static frontend apps. It comes bundled with some useful tools for monitoring and anaylzing application performance and other metrics. Vercel is free for personal use, allows for custom domains and has very reasonable limits. - -To deploy Dashy to Vercel, use the following link -``` -https://vercel.com/new/project?template=https://github.com/lissy93/dashy -``` - -#### DigitalOcean -[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean&refcode=3838338e7f79) - -[DigitalOcan](https://www.digitalocean.com/) is a cloud service providing affordable developer-friendly virtual machines from $5/month. But they also have an app platform, where you can run web apps, static sites, APIs and background workers. CDN-backed static sites are free for personal use. - -``` -https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean -``` - -#### Google Cloud Platform -[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git) - -[Cloud Run](https://cloud.google.com/run/) is a service offered by [Google Cloud](https://cloud.google.com/). It's a fully managed serverless platform, for developing and deploying highly scalable containerized applications. Similar to AWS and Azure, GCP offers a wide range of cloud services, which are billed on a pay‐per‐use basis, but Cloud Run has a [free tier](https://cloud.google.com/run/pricing) offering 180,000 vCPU-seconds, 360,000 GiB-seconds, and 2 million requests per month. - -To deploy Dashy to GCP, use the following link -``` -https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git -``` - -#### Platform.sh -[![Deploy to Platform.sh](https://platform.sh/images/deploy/deploy-button-lg-blue.svg)](https://console.platform.sh/projects/create-project/?template=https://github.com/lissy93/dashy&utm_campaign=deploy_on_platform?utm_medium=button&utm_source=affiliate_links&utm_content=https://github.com/lissy93/dashy) - -[Platform.sh](https://platform.sh) is an end-to-end solution for developing and deploying applications. It is geared towards enterprise users with large teams, and focuses on allowing applications to scale up and down. Unlike the above providers, Platform.sh is not free, although you can deploy a test app to it without needing a payment method - -To deploy Dashy to Platform.sh, use the following link -``` -https://console.platform.sh/projects/create-project/?template=https://github.com/lissy93/dashy -``` - -#### Render -[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render) - -[Render](https://render.com) is cloud provider that provides easy deployments for static sites, Docker apps, web services, databases and background workers. Render is great for developing applications, and very easy to use. Static sites are free, and services start at $7/month. Currently there are only 2 server locations - Oregon, USA and Frankfurt, Germany. For more info, see the [Render Docs](https://render.com/docs) - -To deploy Dashy to Render, use the following link -``` -https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render -``` - -#### Scalingo -[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master) - -[Scalingo](https://scalingo.com/) is a scalable container-based cloud platform as a service. It's focus is on compliance and uptime, and is geared towards enterprise users. Scalingo is also not free, although they do have a 3-day free trial that does not require a payment method - -To deploy Dashy to Scalingo, use the following link -``` -https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master -``` - -#### Play-with-Docker -[![Try in PWD](https://raw.githubusercontent.com/play-with-docker/stacks/cff22438/assets/images/button.png)](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) - -[Play with Docker](https://labs.play-with-docker.com/) is a community project by Marcos Liljedhal and Jonathan Leibiusky and sponsored by Docker, intended to provide a hands-on learning environment. Their labs let you quickly spin up a Docker container or stack, and test out the image in a temporary, sandboxed environment. There's no need to sign up, and it's completely free. - -To run Dashy in PWD, use the following URL: -``` -https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml -``` - -#### Surge.sh -[Surge.sh](http://surge.sh/) is quick and easy static web publishing platform for frontend-apps. - -Surge supports [password-protected projects](https://surge.sh/help/adding-password-protection-to-a-project). You can also [add a custom domain](https://surge.sh/help/adding-a-custom-domain) and then [force HTTPS by default](https://surge.sh/help/using-https-by-default) and optionally [set a custom SSL certificate](https://surge.sh/help/securing-your-custom-domain-with-ssl) - -To deploy Dashy to Surge.sh, first clone and cd into Dashy, install dependencies, and then use the following commands -``` -yarn add -g surge -yarn build -surge ./dist -``` - -**[⬆️ Back to Top](#deployment)** - ---- - -## Usage -### Providing Assets -Although not essential, you will most likely want to provide several assets to Dashy. All web assets can be found in the `/public` directory. - -- `./public/conf.yml` - As mentioned, this is your main application config file -- `./public/item-icons` - If you're using your own icons, you can choose to store them locally for better load time, and this is the directory to put them in. You can also use sub-folders here to keep things organized. You then reference these assets relative this the direcroties path, for example: to use `./public/item-icons/networking/netdata.png` as an icon for one of your links, you would set `icon: networking/netdata.png` -- Also within `./public` you'll find standard website assets, including `favicon.ico`, `manifest.json`, `robots.txt`, etc. There's no need to modify these, but you can do so if you wish. - -### Basic Commands - -Now that you've got Dashy running, there are a few commands that you need to know. - -The following commands are defined in the [`package.json`](https://github.com/Lissy93/dashy/blob/master/package.json#L5) file, and are run with `yarn`. If you prefer, you can use NPM, just replace instances of `yarn` with `npm run`. If you are using Docker, then you will need to precede each command with `docker exec -it [container-id]`, where container ID can be found by running `docker ps`. For example `docker exec -it 26c156c467b4 yarn build`. - -- **`yarn build`** - In the interest of speed, the application is pre-compiled, this means that the config file is read during build-time, and therefore the app needs to rebuilt for any new changes to take effect. Luckily this is very straight forward. Just run `yarn build` or `docker exec -it [container-id] yarn build` -- **`yarn validate-config`** - If you have quite a long configuration file, you may wish to check that it's all good to go, before deploying the app. This can be done with `yarn validate-config` or `docker exec -it [container-id] yarn validate-config`. Your config file needs to be in `/public/conf.yml` (or within your Docker container at `/app/public/conf.yml`). This will first check that your YAML is valid, and then validates it against Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js). -- **`yarn health-check`** - Checks that the application is up and running on it's specified port, and outputs current status and response times. Useful for integrating into your monitoring service, if you need to maintain high system availability -- **`yarn build-watch`** - If you find yourself making frequent changes to your configuration, and do not want to have to keep manually rebuilding, then this option is for you. It will watch for changes to any files within the projects root, and then trigger a rebuild. Note that if you are developing new features, then `yarn dev` would be more appropriate, as it's significantly faster at recompiling (under 1 second), and has hot reloading, linting and testing integrated -- **`yarn build-and-start`** - Builds the app, runs checks and starts the production server. Commands are run in parallel, and so is faster than running them in independently -- **`yarn pm2-start`** - Starts the Node server using [PM2](https://pm2.keymetrics.io/), a process manager for Node.js applications, that helps them stay alive. PM2 has some built-in basic monitoring features, and an optional [management solution](https://pm2.io/). If you are running the app on bare metal, it is recommended to use this start command - -### Healthchecks - -Healthchecks are configured to periodically check that Dashy is up and running correctly on the specified port. By default, the health script is called every 5 minutes, but this can be modified with the `--health-interval` option. You can check the current container health with: `docker inspect --format "{{json .State.Health }}" [container-id]`, and a summary of health status will show up under `docker ps`. You can also manually request the current application status by running `docker exec -it [container-id] yarn health-check`. You can disable healthchecks altogether by adding the `--no-healthcheck` flag to your Docker run command. - -To restart unhealthy containers automatically, check out [Autoheal](https://hub.docker.com/r/willfarrell/autoheal/). This image watches for unhealthy containers, and automatically triggers a restart. This is a stand in for Docker's `--exit-on-unhealthy` that was proposed, but [not merged](https://github.com/moby/moby/pull/22719). - -### Logs and Performance - -##### Container Logs -You can view logs for a given Docker container with `docker logs [container-id]`, add the `--follow` flag to stream the logs. For more info, see the [Logging Documentation](https://docs.docker.com/config/containers/logging/). There's also [Dozzle](https://dozzle.dev/), a useful tool, that provides a web interface where you can stream and query logs from all your running containers from a single web app. - -##### Container Performance -You can check the resource usage for your running Docker containers with `docker stats` or `docker stats [container-id]`. For more info, see the [Stats Documentation](https://docs.docker.com/engine/reference/commandline/stats/). There's also [cAdvisor](https://github.com/google/cadvisor), a useful web app for viewing and analyzing resource usage and performance of all your running containers. - -##### Management Apps -You can also view logs, resource usage and other info as well as manage your entire Docker workflow in third-party Docker management apps. For example [Portainer](https://github.com/portainer/portainer) an all-in-one open source management web UI for Docker and Kubernetes, or [LazyDocker](https://github.com/jesseduffield/lazydocker) a terminal UI for Docker container management and monitoring. - -##### Advanced Logging and Monitoring -Docker supports using [Prometheus](https://prometheus.io/) to collect logs, which can then be visualized using a platform like [Grafana](https://grafana.com/). For more info, see [this guide](https://docs.docker.com/config/daemon/prometheus/). If you need to route your logs to a remote syslog, then consider using [logspout](https://github.com/gliderlabs/logspout). For enterprise-grade instances, there are managed services, that make monitoring container logs and metrics very easy, such as [Sematext](https://sematext.com/blog/docker-container-monitoring-with-sematext/) with [Logagent](https://github.com/sematext/logagent-js). - -### Auto-Starting at System Boot - -You can use Docker's [restart policies](https://docs.docker.com/engine/reference/run/#restart-policies---restart) to instruct the container to start after a system reboot, or restart after a crash. Just add the `--restart=always` flag to your Docker compose script or Docker run command. For more information, see the docs on [Starting Containers Automatically](https://docs.docker.com/config/containers/start-containers-automatically/). - -For Podman, you can use `systemd` to create a service that launches your container, [the docs](https://podman.io/blogs/2018/09/13/systemd.html) explains things further. A similar approach can be used with Docker, if you need to start containers after a reboot, but before any user interaction. - -To restart the container after something within it has crashed, consider using [`docker-autoheal`](https://github.com/willfarrell/docker-autoheal) by @willfarrell, a service that monitors and restarts unhealthy containers. For more info, see the [Healthchecks](#healthchecks) section above. - -### Securing - -##### SSL - -Enabling HTTPS with an SSL certificate is recommended if you hare hosting Dashy anywhere other than your home. This will ensure that all traffic is encrypted in transit. - -[Let's Encrypt](https://letsencrypt.org/docs/) is a global Certificate Authority, providing free SSL/TLS Domain Validation certificates in order to enable secure HTTPS access to your website. They have good browser/ OS [compatibility](https://letsencrypt.org/docs/certificate-compatibility/) with their ISRG X1 and DST CA X3 root certificates, support [Wildcard issuance](https://community.letsencrypt.org/t/acme-v2-production-environment-wildcards/55578) done via ACMEv2 using the DNS-01 and have [Multi-Perspective Validation](https://letsencrypt.org/2020/02/19/multi-perspective-validation.html). Let's Encrypt provide [CertBot](https://certbot.eff.org/) an easy app for generating and setting up an SSL certificate - -[ZeroSSL](https://zerossl.com/) is another popular certificate issuer, they are free for personal use, and also provide easy-to-use tools for getting things setup. - - -If you're hosting Dashy behind Cloudflare, then they offer [free and easy SSL](https://www.cloudflare.com/en-gb/learning/ssl/what-is-an-ssl-certificate/). - -If you're not so comfortable on the command line, then you can use a tool like [SSL For Free](https://www.sslforfree.com/) to generate your Let's Encrypt or ZeroSSL certificate, and support shared hosting servers. They also provide step-by-step tutorials on setting up your certificate on most common platforms. If you are using shared hosting, you may find [this tutorial](https://www.sitepoint.com/a-guide-to-setting-up-lets-encrypt-ssl-on-shared-hosting/) helpful. - -##### Authentication -Dashy has [basic authentication](/docs/authentication.md) built in, however at present this is handled on the front-end, and so where security is critical, it is recommended to use an alternative method. See [here](/docs/authentication.md#alternative-authentication-methods) for options regarding securing Dashy. - - -**[⬆️ Back to Top](#deployment)** - ---- -## Updating - -Dashy is under active development, so to take advantage of the latest features, you may need to update your instance every now and again. - -### Updating Docker Container -1. Pull latest image: `docker pull lissy93/dashy:latest` -2. Kill off existing container - - Find container ID: `docker ps` - - Stop container: `docker stop [container_id]` - - Remove container: `docker rm [container_id]` -3. Spin up new container: `docker run [params] lissy93/dashy` - -### Automatic Docker Updates - -You can automate the above process using [Watchtower](https://github.com/containrrr/watchtower). -Watchtower will watch for new versions of a given image on Docker Hub, pull down your new image, gracefully shut down your existing container and restart it with the same options that were used when it was deployed initially. - -To get started, spin up the watchtower container: - -``` -docker run -d \ - --name watchtower \ - -v /var/run/docker.sock:/var/run/docker.sock \ - containrrr/watchtower -``` - -For more information, see the [Watchtower Docs](https://containrrr.dev/watchtower/) - -### Updating Dashy from Source -1. Navigate into directory: `cd ./dashy` -2. Stop your current instance -3. Pull latest code: `git pull origin master` -4. Re-build: `yarn build` -5. Start: `yarn start` - -**[⬆️ Back to Top](#deployment)** - ---- - -## Web Server Configuration - -_The following section only applies if you are not using Docker, and would like to use your own web server_ - -Dashy ships with a pre-configured Node.js server, in [`server.js`](https://github.com/Lissy93/dashy/blob/master/server.js) which serves up the contents of the `./dist` directory on a given port. You can start the server by running `node server`. Note that the app must have been build (run `yarn build`), and you need [Node.js](https://nodejs.org) installed. - -If you wish to run Dashy from a sub page (e.g. `example.com/dashy`), then just set the `BASE_URL` environmental variable to that page name (in this example, `/dashy`), before building the app, and the path to all assets will then resolve to the new path, instead of `./`. - -However, since Dashy is just a static web application, it can be served with whatever server you like. The following section outlines how you can configure a web server. - -Note, that if you choose not to use `server.js` to serve up the app, you will loose access to the following features: -- Loading page, while the app is building -- Writing config file to disk from the UI -- Website status indicators, and ping checks - -### NGINX - -Create a new file in `/etc/nginx/sites-enabled/dashy` - -``` -server { - listen 80; - listen [::]:80; - - root /var/www/dashy/html; - index index.html; - - server_name your-domain.com www.your-domain.com; - - location / { - try_files $uri $uri/ =404; - } -} -``` -Then upload the build contents of Dashy's dist directory to that location. -For example: `scp -r ./dist/* [username]@[server_ip]:/var/www/dashy/html` - -### Apache - -Copy Dashy's dist folder to your apache server, `sudo cp -r ./dashy/dist /var/www/html/dashy`. - -In your Apache config, `/etc/apche2/apache2.conf` add: -``` - - Options Indexes FollowSymLinks - AllowOverride All - Require all granted - -``` - -Add a `.htaccess` file within `/var/www/html/dashy/.htaccess`, and add: -``` -Options -MultiViews -RewriteEngine On -RewriteCond %{REQUEST_FILENAME} !-f -RewriteRule ^ index.html [QSA,L] -``` - -Then restart Apache, with `sudo systemctl restart apache2` - -### cPanel -1. Login to your WHM -2. Open 'Feature Manager' on the left sidebar -3. Under 'Manage feature list', click 'Edit' -4. Find 'Application manager' in the list, enable it and hit 'Save' -5. Log into your users cPanel account, and under 'Software' find 'Application Manager' -6. Click 'Register Application', fill in the form using the path that Dashy is located, and choose a domain, and hit 'Save' -7. The application should now show up in the list, click 'Ensure dependencies', and move the toggle switch to 'Enabled' -8. If you need to change the port, click 'Add environmental variable', give it the name 'PORT', choose a port number and press 'Save'. -9. Dashy should now be running at your selected path an on a given port - -**[⬆️ Back to Top](#deployment)** - ---- - -## Authentication - -Dashy has built-in authentication and login functionality. However, since this is handled on the client-side, if you are using Dashy in security-critical situations, it is recommended to use an alternate method for authentication, such as [Authelia](https://www.authelia.com/), a VPN or web server and firewall rules. For more info, see **[Authentication Docs](/docs/authentication.md)**. - - -**[⬆️ Back to Top](#deployment)** +However without Dashy's node server, there are a couple of features that will be unavailible to you, including: Writing config changes to disk through the UI, triggering a rebuild through the UI and application status checks. Everything else will work fine. From 938e8334e468be650e6ecc35eee0c4eb6e583538 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 22 Jul 2021 22:47:40 +0100 Subject: [PATCH 003/108] :memo: Rewrites the Sections and Items section --- README.md | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 6d279f4e..70bf13e2 100644 --- a/README.md +++ b/README.md @@ -308,13 +308,22 @@ From the Settings Menu in Dashy, you can download, backup, edit and rest your co Dashy is made up of a series of sections, each containing a series of items. -A section an be collapsed by clicking on it's name. This will cause only the title button to be visible until clicked, which is useful for particularly long sections, or those containing less-used apps. The collapse state for each section will be remembered for the next time you visit. +Section Features +- **Basics**: Each section must have a `name` and an array of `items`. Sections can also have an icon e.g. `icon: :rocket:`. This works the same way as item icons, so you can use Font Awesome, static images, emojis, etc. +- **Collapsing**: A section an be collapsed by clicking on it's name, useful for particularly long or less frequently used sections. Collapse state is remembered for next time you load the page, and you can also set `displayData.collapsed: true` on a given section. +- **Size**: You can change the size of a given section, by for example setting `displayData.cols: 2` to make a given section span 2 columns/ be double the width. Similarly `displayData.rows` can be used to set the height of a section by making is span more than rows. By default each of these properties are set to `1` +- **Grid Settings**: Within a given section, you can change how many items are displayed on each row or column, with `displayData.itemCountX` for horizontal count, and `displayData.itemCountY` for vertical count. +- **Colors**: You can give a custom color to a certain section with `displayData.color`, or pass other styles with `displayData.customStyles` +- **Layout**: From the UI, you can also choose a layout, either `grid`, `horizontal` or `vertical`, as well as set the size for items, either `small`, `medium` or `large`, and of course set a theme using the dropdown. +- For full list of section display options, see [`section.displayData` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectiondisplaydata-optional). -From the UI, you can also choose a layout, either `grid`, `horizontal` or `vertical`, as well as set the size for items, either `small`, `medium` or `large`, and of course set a theme using the dropdown. All settings specified here will be stored in your browsers local storage, and so won't persist across devices, if you require this then you must set these in the config file instead. - -Within each section, you can set custom layout properties with under `displayData`. For example, you can make a given section double the width by making is span 2 columns with `cols: 2`, or specify how many rows it should span with `rows`. You can also set the layout for items within a given section here, for example, use `itemCountX` to define how many items will be on each row within the section. Sections can also have a custom color, specified as a hex code and defined using the `color` attribute. For full options for items, see the [`section.displayData` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectiondisplaydata-optional) - -Items also have some optional config attributes. As well as `title`, `description`, `URL` and `icon`, you can also specify a specific opening method (`target`), and configure status checks (`statusCheck: true/false`, `statusCheckUrl` and `statusCheckHeaders`), and modify appearance with `color` and `backgroundColor`. For full options for items, see the [`section.item` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectionitem) +Item Features +- **Basics**: Items can have a `title`, `description`, `URL` and `icon`. +- **Key Binding**: You can assign frequently used items a hotkey/ shortcut as a number, to quickly launch that app. E.g. if `hotkey: 6`, then pressing the number 6 will launch that application. +- **Opening Method**: Setting the `target` attribute will define how an item should be opened by default (either `newtab`, `sametab`, `modal` or `workspace`), or you can right-click on any item to see all options. +- **Status Checking**: Setting `statusCheck: true` will show a small traffic light next to that item, indicating weather the service is currently up/ online. You can also use a custom URL for status checks, with `statusCheckUrl` or pass some custom headers with `statusCheckHeaders`. +- **Color**: To change the text color of an item, use `color`, and `backgroundColor` for background. +- For full list of all item options, see [`section.item` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectionitem) **[⬆️ Back to Top](#dashy)** @@ -344,7 +353,7 @@ pageInfo: path: https://server-start.local - title: Start Page path: https://start-page.local - footerText: 'Built with Dashy, by Alicia Sykes, 2021' + footerText: 'My Awesome Dashboard. Built with Dashy' ``` **[⬆️ Back to Top](#dashy)** From 41f8d06899685d7b9754e4929d4c754162382166 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 25 Jul 2021 14:25:20 +0100 Subject: [PATCH 004/108] :put_litter_in_its_place: Deleted old config docs --- docs/config-schema/README.md | 35 --- ...ties-appconfig-properties-backgroundimg.md | 15 - ...es-appconfig-properties-cssthemes-items.md | 15 - ...operties-appconfig-properties-cssthemes.md | 15 - ...operties-appconfig-properties-customcss.md | 15 - ...-appconfig-properties-enablefontawesome.md | 23 -- ...fig-properties-externalstylesheet-items.md | 15 - ...appconfig-properties-externalstylesheet.md | 15 - ...ies-appconfig-properties-fontawesomekey.md | 25 -- ...g-properties-appconfig-properties-theme.md | 23 -- .../dashy-config-properties-appconfig.md | 179 ------------ ...perties-pageinfo-properties-description.md | 15 - ...operties-pageinfo-properties-footertext.md | 15 - ...operties-navlinks-items-properties-path.md | 15 - ...perties-navlinks-items-properties-title.md | 15 - ...ties-pageinfo-properties-navlinks-items.md | 58 ---- ...properties-pageinfo-properties-navlinks.md | 19 -- ...ig-properties-pageinfo-properties-title.md | 15 - .../dashy-config-properties-pageinfo.md | 100 ------- ...erties-displaydata-properties-collapsed.md | 15 - ...properties-displaydata-properties-color.md | 15 - ...-properties-displaydata-properties-cols.md | 29 -- ...ies-displaydata-properties-customstyles.md | 15 - ...rties-displaydata-properties-itemcountx.md | 21 -- ...rties-displaydata-properties-itemcounty.md | 21 -- ...perties-displaydata-properties-itemsize.md | 33 --- ...roperties-displaydata-properties-layout.md | 32 --- ...-properties-displaydata-properties-rows.md | 29 -- ...s-sections-items-properties-displaydata.md | 266 ------------------ ...operties-sections-items-properties-icon.md | 15 - ...properties-items-items-properties-color.md | 15 - ...ties-items-items-properties-description.md | 15 - ...-properties-items-items-properties-icon.md | 15 - ...perties-items-items-properties-provider.md | 15 - ...roperties-items-items-properties-target.md | 33 --- ...properties-items-items-properties-title.md | 15 - ...s-properties-items-items-properties-url.md | 15 - ...s-sections-items-properties-items-items.md | 171 ----------- ...perties-sections-items-properties-items.md | 15 - ...operties-sections-items-properties-name.md | 15 - .../dashy-config-properties-sections-items.md | 96 ------- .../dashy-config-properties-sections.md | 15 - docs/config-schema/dashy-config.md | 77 ----- 43 files changed, 1630 deletions(-) delete mode 100644 docs/config-schema/README.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-backgroundimg.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes-items.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-customcss.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-enablefontawesome.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet-items.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-fontawesomekey.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig-properties-theme.md delete mode 100644 docs/config-schema/dashy-config-properties-appconfig.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-description.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-footertext.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo-properties-title.md delete mode 100644 docs/config-schema/dashy-config-properties-pageinfo.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-color.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-cols.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-layout.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-rows.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-displaydata.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-icon.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-color.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-description.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-icon.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-provider.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-target.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-title.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-url.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items-items.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-items.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items-properties-name.md delete mode 100644 docs/config-schema/dashy-config-properties-sections-items.md delete mode 100644 docs/config-schema/dashy-config-properties-sections.md delete mode 100644 docs/config-schema/dashy-config.md diff --git a/docs/config-schema/README.md b/docs/config-schema/README.md deleted file mode 100644 index 6e16ab8d..00000000 --- a/docs/config-schema/README.md +++ /dev/null @@ -1,35 +0,0 @@ -# README - -## Top-level Schemas - -* [Dashy Config Schema](./dashy-config.md) – `https://example.com/schemas/abstract` - -## Other Schemas - -### Objects - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo.md) – `https://example.com/schemas/abstract#/properties/pageInfo` - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks-items.md) – `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items` - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-appconfig.md "Application configuration") – `https://example.com/schemas/abstract#/properties/appConfig` - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items.md) – `https://example.com/schemas/abstract#/properties/sections/items` - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-displaydata.md "Optional meta data for customizing a section") – `https://example.com/schemas/abstract#/properties/sections/items/properties/displayData` - -* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items-items.md) – `https://example.com/schemas/abstract#/properties/sections/items/properties/items/items` - -### Arrays - -* [Untitled array in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks.md "Quick access links, displayed in header") – `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks` - -* [Untitled array in Dashy Config Schema](./dashy-config-properties-appconfig-properties-cssthemes.md "Theme names to be added to the dropdown") – `https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes` - -* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections.md "Array of sections, containing items") – `https://example.com/schemas/abstract#/properties/sections` - -* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items.md "Array of items to display with a section") – `https://example.com/schemas/abstract#/properties/sections/items/properties/items` - -## Version Note - -The schemas linked above follow the JSON Schema Spec version: `http://json-schema.org/draft-06/schema#` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-backgroundimg.md b/docs/config-schema/dashy-config-properties-appconfig-properties-backgroundimg.md deleted file mode 100644 index 3a377562..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-backgroundimg.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg -``` - -A URL to an image asset to be displayed as background - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## backgroundImg Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes-items.md b/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes-items.md deleted file mode 100644 index 15e80729..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes-items.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes/items -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes.md b/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes.md deleted file mode 100644 index f09a4390..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-cssthemes.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled array in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes -``` - -Theme names to be added to the dropdown - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## cssThemes Type - -`string[]` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-customcss.md b/docs/config-schema/dashy-config-properties-appconfig-properties-customcss.md deleted file mode 100644 index a8833b10..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-customcss.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/customCss -``` - -Any custom CSS overides, must be minified - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## customCss Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-enablefontawesome.md b/docs/config-schema/dashy-config-properties-appconfig-properties-enablefontawesome.md deleted file mode 100644 index 706468b4..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-enablefontawesome.md +++ /dev/null @@ -1,23 +0,0 @@ -# Untitled boolean in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome -``` - -Should load font-awesome assets - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## enableFontAwesome Type - -`boolean` - -## enableFontAwesome Default Value - -The default value is: - -```json -true -``` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet-items.md b/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet-items.md deleted file mode 100644 index 43937852..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet-items.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet/items -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet.md b/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet.md deleted file mode 100644 index 583aaf06..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-externalstylesheet.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled undefined type in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet -``` - -URL or URLs of external stylesheets to add to dropdown/ load - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## externalStyleSheet Type - -any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md)) diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-fontawesomekey.md b/docs/config-schema/dashy-config-properties-appconfig-properties-fontawesomekey.md deleted file mode 100644 index dfb982a0..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-fontawesomekey.md +++ /dev/null @@ -1,25 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey -``` - -API key for font-awesome - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## fontAwesomeKey Type - -`string` - -## fontAwesomeKey Constraints - -**pattern**: the string must match the following regular expression: - -```regexp -^[a-z0-9]{10}$ -``` - -[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com") diff --git a/docs/config-schema/dashy-config-properties-appconfig-properties-theme.md b/docs/config-schema/dashy-config-properties-appconfig-properties-theme.md deleted file mode 100644 index bc090a99..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig-properties-theme.md +++ /dev/null @@ -1,23 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig/properties/theme -``` - -A theme to be applied by default on first load - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## theme Type - -`string` - -## theme Default Value - -The default value is: - -```json -"Callisto" -``` diff --git a/docs/config-schema/dashy-config-properties-appconfig.md b/docs/config-schema/dashy-config-properties-appconfig.md deleted file mode 100644 index af63de7c..00000000 --- a/docs/config-schema/dashy-config-properties-appconfig.md +++ /dev/null @@ -1,179 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/appConfig -``` - -Application configuration - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## appConfig Type - -`object` ([Details](dashy-config-properties-appconfig.md)) - -# appConfig Properties - -| Property | Type | Required | Nullable | Defined by | -| :---------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [backgroundImg](#backgroundimg) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg") | -| [theme](#theme) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme") | -| [enableFontAwesome](#enablefontawesome) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome") | -| [fontAwesomeKey](#fontawesomekey) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey") | -| [cssThemes](#cssthemes) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes") | -| [externalStyleSheet](#externalstylesheet) | Multiple | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet") | -| [customCss](#customcss) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss") | - -## backgroundImg - -A URL to an image asset to be displayed as background - -`backgroundImg` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg") - -### backgroundImg Type - -`string` - -## theme - -A theme to be applied by default on first load - -`theme` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme") - -### theme Type - -`string` - -### theme Default Value - -The default value is: - -```json -"Callisto" -``` - -## enableFontAwesome - -Should load font-awesome assets - -`enableFontAwesome` - -* is optional - -* Type: `boolean` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome") - -### enableFontAwesome Type - -`boolean` - -### enableFontAwesome Default Value - -The default value is: - -```json -true -``` - -## fontAwesomeKey - -API key for font-awesome - -`fontAwesomeKey` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey") - -### fontAwesomeKey Type - -`string` - -### fontAwesomeKey Constraints - -**pattern**: the string must match the following regular expression: - -```regexp -^[a-z0-9]{10}$ -``` - -[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com") - -## cssThemes - -Theme names to be added to the dropdown - -`cssThemes` - -* is optional - -* Type: `string[]` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes") - -### cssThemes Type - -`string[]` - -## externalStyleSheet - -URL or URLs of external stylesheets to add to dropdown/ load - -`externalStyleSheet` - -* is optional - -* Type: any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet") - -### externalStyleSheet Type - -any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md)) - -## customCss - -Any custom CSS overides, must be minified - -`customCss` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss") - -### customCss Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-description.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-description.md deleted file mode 100644 index b2636bdc..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-description.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/description -``` - -Sub-title, displayed in header - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## description Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-footertext.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-footertext.md deleted file mode 100644 index 9d75c2e8..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-footertext.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## footerText Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md deleted file mode 100644 index 79fc5bf7..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## path Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md deleted file mode 100644 index 6c891714..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## title Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items.md deleted file mode 100644 index 48a7abb4..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks-items.md +++ /dev/null @@ -1,58 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`object` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md)) - -# items Properties - -| Property | Type | Required | Nullable | Defined by | -| :-------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title") | -| [path](#path) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path") | - -## title - - - -`title` - -* is required - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title") - -### title Type - -`string` - -## path - - - -`path` - -* is required - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path") - -### path Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks.md deleted file mode 100644 index 2e4a9768..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-navlinks.md +++ /dev/null @@ -1,19 +0,0 @@ -# Untitled array in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks -``` - -Quick access links, displayed in header - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## navLinks Type - -`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md)) - -## navLinks Constraints - -**maximum number of items**: the maximum number of items for this array is: `6` diff --git a/docs/config-schema/dashy-config-properties-pageinfo-properties-title.md b/docs/config-schema/dashy-config-properties-pageinfo-properties-title.md deleted file mode 100644 index 25f1ad49..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo-properties-title.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo/properties/title -``` - -Title and heading for the app - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## title Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-pageinfo.md b/docs/config-schema/dashy-config-properties-pageinfo.md deleted file mode 100644 index d9494696..00000000 --- a/docs/config-schema/dashy-config-properties-pageinfo.md +++ /dev/null @@ -1,100 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/pageInfo -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## pageInfo Type - -`object` ([Details](dashy-config-properties-pageinfo.md)) - -# pageInfo Properties - -| Property | Type | Required | Nullable | Defined by | -| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title") | -| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description") | -| [navLinks](#navlinks) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks") | -| [footerText](#footertext) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText") | - -## title - -Title and heading for the app - -`title` - -* is required - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title") - -### title Type - -`string` - -## description - -Sub-title, displayed in header - -`description` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description") - -### description Type - -`string` - -## navLinks - -Quick access links, displayed in header - -`navLinks` - -* is optional - -* Type: `object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks") - -### navLinks Type - -`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md)) - -### navLinks Constraints - -**maximum number of items**: the maximum number of items for this array is: `6` - -## footerText - - - -`footerText` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText") - -### footerText Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md deleted file mode 100644 index 1bed4095..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled boolean in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed -``` - -If true, section needs to be clicked to open - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## collapsed Type - -`boolean` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-color.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-color.md deleted file mode 100644 index 32035b0b..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-color.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color -``` - -Hex code, or HTML color for section fill - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## color Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-cols.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-cols.md deleted file mode 100644 index ea688ea1..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-cols.md +++ /dev/null @@ -1,29 +0,0 @@ -# Untitled number in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols -``` - -The amount of space that the section spans horizontally - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## cols Type - -`number` - -## cols Constraints - -**maximum**: the value of this number must smaller than or equal to: `5` - -**minimum**: the value of this number must greater than or equal to: `1` - -## cols Default Value - -The default value is: - -```json -1 -``` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md deleted file mode 100644 index 7e5ece63..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles -``` - -CSS overides for section container - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## customStyles Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md deleted file mode 100644 index 9cb308ce..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md +++ /dev/null @@ -1,21 +0,0 @@ -# Untitled number in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX -``` - -Number of items per column - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## itemCountX Type - -`number` - -## itemCountX Constraints - -**maximum**: the value of this number must smaller than or equal to: `12` - -**minimum**: the value of this number must greater than or equal to: `1` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md deleted file mode 100644 index 995ba7c1..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md +++ /dev/null @@ -1,21 +0,0 @@ -# Untitled number in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY -``` - -Number of items per row - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## itemCountY Type - -`number` - -## itemCountY Constraints - -**maximum**: the value of this number must smaller than or equal to: `12` - -**minimum**: the value of this number must greater than or equal to: `1` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md deleted file mode 100644 index a76d28dc..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md +++ /dev/null @@ -1,33 +0,0 @@ -# Untitled undefined type in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize -``` - -Size of items within the section - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## itemSize Type - -unknown - -## itemSize Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :--------- | :---------- | -| `"small"` | | -| `"medium"` | | -| `"large"` | | - -## itemSize Default Value - -The default value is: - -```json -"medium" -``` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-layout.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-layout.md deleted file mode 100644 index edd259a1..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-layout.md +++ /dev/null @@ -1,32 +0,0 @@ -# Untitled undefined type in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout -``` - -If set to grid, items have uniform width, and itemCount can be set - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## layout Type - -unknown - -## layout Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :------- | :---------- | -| `"grid"` | | -| `"auto"` | | - -## layout Default Value - -The default value is: - -```json -"auto" -``` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-rows.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-rows.md deleted file mode 100644 index a4ae3938..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata-properties-rows.md +++ /dev/null @@ -1,29 +0,0 @@ -# Untitled number in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows -``` - -The amount of space that the section spans vertically - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## rows Type - -`number` - -## rows Constraints - -**maximum**: the value of this number must smaller than or equal to: `5` - -**minimum**: the value of this number must greater than or equal to: `1` - -## rows Default Value - -The default value is: - -```json -1 -``` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata.md b/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata.md deleted file mode 100644 index 9a671c19..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-displaydata.md +++ /dev/null @@ -1,266 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/displayData -``` - -Optional meta data for customizing a section - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## displayData Type - -`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md)) - -# displayData Properties - -| Property | Type | Required | Nullable | Defined by | -| :---------------------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [collapsed](#collapsed) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed") | -| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color") | -| [customStyles](#customstyles) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles") | -| [itemSize](#itemsize) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize") | -| [rows](#rows) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows") | -| [cols](#cols) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols") | -| [layout](#layout) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout") | -| [itemCountX](#itemcountx) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX") | -| [itemCountY](#itemcounty) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY") | - -## collapsed - -If true, section needs to be clicked to open - -`collapsed` - -* is optional - -* Type: `boolean` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed") - -### collapsed Type - -`boolean` - -## color - -Hex code, or HTML color for section fill - -`color` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color") - -### color Type - -`string` - -## customStyles - -CSS overides for section container - -`customStyles` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles") - -### customStyles Type - -`string` - -## itemSize - -Size of items within the section - -`itemSize` - -* is optional - -* Type: unknown - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize") - -### itemSize Type - -unknown - -### itemSize Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :--------- | :---------- | -| `"small"` | | -| `"medium"` | | -| `"large"` | | - -### itemSize Default Value - -The default value is: - -```json -"medium" -``` - -## rows - -The amount of space that the section spans vertically - -`rows` - -* is optional - -* Type: `number` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows") - -### rows Type - -`number` - -### rows Constraints - -**maximum**: the value of this number must smaller than or equal to: `5` - -**minimum**: the value of this number must greater than or equal to: `1` - -### rows Default Value - -The default value is: - -```json -1 -``` - -## cols - -The amount of space that the section spans horizontally - -`cols` - -* is optional - -* Type: `number` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols") - -### cols Type - -`number` - -### cols Constraints - -**maximum**: the value of this number must smaller than or equal to: `5` - -**minimum**: the value of this number must greater than or equal to: `1` - -### cols Default Value - -The default value is: - -```json -1 -``` - -## layout - -If set to grid, items have uniform width, and itemCount can be set - -`layout` - -* is optional - -* Type: unknown - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout") - -### layout Type - -unknown - -### layout Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :------- | :---------- | -| `"grid"` | | -| `"auto"` | | - -### layout Default Value - -The default value is: - -```json -"auto" -``` - -## itemCountX - -Number of items per column - -`itemCountX` - -* is optional - -* Type: `number` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX") - -### itemCountX Type - -`number` - -### itemCountX Constraints - -**maximum**: the value of this number must smaller than or equal to: `12` - -**minimum**: the value of this number must greater than or equal to: `1` - -## itemCountY - -Number of items per row - -`itemCountY` - -* is optional - -* Type: `number` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY") - -### itemCountY Type - -`number` - -### itemCountY Constraints - -**maximum**: the value of this number must smaller than or equal to: `12` - -**minimum**: the value of this number must greater than or equal to: `1` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-icon.md b/docs/config-schema/dashy-config-properties-sections-items-properties-icon.md deleted file mode 100644 index d148087e..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-icon.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/icon -``` - -Icon will be displayed next to title - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## icon Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-color.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-color.md deleted file mode 100644 index fb6ef980..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-color.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color -``` - -A custom fill color of the item - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## color Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-description.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-description.md deleted file mode 100644 index 38bbcc65..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-description.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description -``` - -Short description, shown on hover or in a tooltip - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## description Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-icon.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-icon.md deleted file mode 100644 index 47297239..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-icon.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon -``` - -An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## icon Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-provider.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-provider.md deleted file mode 100644 index f6f1ea1c..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-provider.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider -``` - -Provider name, e.g. Microsoft - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## provider Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-target.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-target.md deleted file mode 100644 index 9374264e..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-target.md +++ /dev/null @@ -1,33 +0,0 @@ -# Untitled undefined type in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target -``` - -Opening method, when item is clicked - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## target Type - -unknown - -## target Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :---------- | :---------- | -| `"newtab"` | | -| `"sametab"` | | -| `"iframe"` | | - -## target Default Value - -The default value is: - -```json -"newtab" -``` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-title.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-title.md deleted file mode 100644 index b9553290..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-title.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title -``` - -Text shown on the item - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## title Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-url.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-url.md deleted file mode 100644 index b3c69915..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items-properties-url.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url -``` - -The destination to navigate to when item is clicked - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## url Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items-items.md deleted file mode 100644 index b51f451d..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items-items.md +++ /dev/null @@ -1,171 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items/items -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`object` ([Details](dashy-config-properties-sections-items-properties-items-items.md)) - -# items Properties - -| Property | Type | Required | Nullable | Defined by | -| :-------------------------- | :------------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title") | -| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description") | -| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon") | -| [url](#url) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url") | -| [target](#target) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target") | -| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color") | -| [provider](#provider) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider") | - -## title - -Text shown on the item - -`title` - -* is required - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title") - -### title Type - -`string` - -## description - -Short description, shown on hover or in a tooltip - -`description` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description") - -### description Type - -`string` - -## icon - -An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon - -`icon` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon") - -### icon Type - -`string` - -## url - -The destination to navigate to when item is clicked - -`url` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url") - -### url Type - -`string` - -## target - -Opening method, when item is clicked - -`target` - -* is optional - -* Type: unknown - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target") - -### target Type - -unknown - -### target Constraints - -**enum**: the value of this property must be equal to one of the following values: - -| Value | Explanation | -| :---------- | :---------- | -| `"newtab"` | | -| `"sametab"` | | -| `"iframe"` | | - -### target Default Value - -The default value is: - -```json -"newtab" -``` - -## color - -A custom fill color of the item - -`color` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color") - -### color Type - -`string` - -## provider - -Provider name, e.g. Microsoft - -`provider` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider") - -### provider Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-items.md b/docs/config-schema/dashy-config-properties-sections-items-properties-items.md deleted file mode 100644 index d74bbcde..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-items.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled array in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/items -``` - -Array of items to display with a section - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md)) diff --git a/docs/config-schema/dashy-config-properties-sections-items-properties-name.md b/docs/config-schema/dashy-config-properties-sections-items-properties-name.md deleted file mode 100644 index 735db51a..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items-properties-name.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled string in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items/properties/name -``` - -Title/ heading for a section - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## name Type - -`string` diff --git a/docs/config-schema/dashy-config-properties-sections-items.md b/docs/config-schema/dashy-config-properties-sections-items.md deleted file mode 100644 index 81f56829..00000000 --- a/docs/config-schema/dashy-config-properties-sections-items.md +++ /dev/null @@ -1,96 +0,0 @@ -# Untitled object in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections/items -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## items Type - -`object` ([Details](dashy-config-properties-sections-items.md)) - -# items Properties - -| Property | Type | Required | Nullable | Defined by | -| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [name](#name) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name") | -| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon") | -| [displayData](#displaydata) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData") | -| [items](#items) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items") | - -## name - -Title/ heading for a section - -`name` - -* is required - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name") - -### name Type - -`string` - -## icon - -Icon will be displayed next to title - -`icon` - -* is optional - -* Type: `string` - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon") - -### icon Type - -`string` - -## displayData - -Optional meta data for customizing a section - -`displayData` - -* is optional - -* Type: `object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData") - -### displayData Type - -`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md)) - -## items - -Array of items to display with a section - -`items` - -* is required - -* Type: `object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items") - -### items Type - -`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md)) diff --git a/docs/config-schema/dashy-config-properties-sections.md b/docs/config-schema/dashy-config-properties-sections.md deleted file mode 100644 index 54262fd9..00000000 --- a/docs/config-schema/dashy-config-properties-sections.md +++ /dev/null @@ -1,15 +0,0 @@ -# Untitled array in Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract#/properties/sections -``` - -Array of sections, containing items - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- | -| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") | - -## sections Type - -`object[]` ([Details](dashy-config-properties-sections-items.md)) diff --git a/docs/config-schema/dashy-config.md b/docs/config-schema/dashy-config.md deleted file mode 100644 index ea600c88..00000000 --- a/docs/config-schema/dashy-config.md +++ /dev/null @@ -1,77 +0,0 @@ -# Dashy Config Schema Schema - -```txt -https://example.com/schemas/abstract -``` - - - -| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In | -| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ | -| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json](../../out/dashy-config.schema.json "open original schema") | - -## Dashy Config Schema Type - -`object` ([Dashy Config Schema](dashy-config.md)) - -# Dashy Config Schema Properties - -| Property | Type | Required | Nullable | Defined by | -| :---------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------- | -| [pageInfo](#pageinfo) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo") | -| [appConfig](#appconfig) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig") | -| [sections](#sections) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections") | - -## pageInfo - - - -`pageInfo` - -* is optional - -* Type: `object` ([Details](dashy-config-properties-pageinfo.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo") - -### pageInfo Type - -`object` ([Details](dashy-config-properties-pageinfo.md)) - -## appConfig - -Application configuration - -`appConfig` - -* is optional - -* Type: `object` ([Details](dashy-config-properties-appconfig.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig") - -### appConfig Type - -`object` ([Details](dashy-config-properties-appconfig.md)) - -## sections - -Array of sections, containing items - -`sections` - -* is required - -* Type: `object[]` ([Details](dashy-config-properties-sections-items.md)) - -* cannot be null - -* defined in: [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections") - -### sections Type - -`object[]` ([Details](dashy-config-properties-sections-items.md)) From 32b390307206b078328899e5397618b4645093b1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 25 Jul 2021 15:01:27 +0100 Subject: [PATCH 005/108] :memo: New contents page for docs --- docs/readme.md | 31 +++++++++++++++++++------------ 1 file changed, 19 insertions(+), 12 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index 96802a47..64fa3656 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -1,13 +1,20 @@ -## Contents +![Dashy Docs](https://i.ibb.co/4mdNf7M/heading-docs.png) -- [Deployment](/docs/deployment.md) -- [Configuring](/docs/configuring.md) -- [Developing](/docs/developing.md) -- [Contributing](/docs/contributing.md) -- [User Guide](/docs/user-guide.md) -- [Troubleshooting](/docs/troubleshooting.md) -- [Backup & Restore](/docs/backup-restore.md) -- [Status Indicators](/docs/status-indicators.md) -- [Theming](/docs/theming.md) -- [Icons](/docs/icons.md) -- [Authentication](/docs/authentication.md) +### Running Dashy +- [Deployment](/docs/deployment.md) - Getting Dashy up and running +- [Configuring](/docs/configuring.md) - Complete list of all available options in the config file +- [Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc +- [Troubleshooting](/docs/troubleshooting.md) - Common errors and problems, and how to fix them + +### Development and Contributing +- [Developing](/docs/developing.md) - Running Dashy development server locally, and general workflow +- [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors +- [Contributing](/docs/contributing.md) - How to contribute to Dashy +- [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard + +### Feature Docs +- [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature +- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps +- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles +- [Icons](/docs/icons.md) - Outline of all available icon types for sections and items +- [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard From 1504203936fb1b08b73b92dd806b05203bed1b26 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 25 Jul 2021 15:01:58 +0100 Subject: [PATCH 006/108] :memo: Updated tree view in Development docs, and removed list of packages --- docs/developing.md | 64 +++++++++++++++++----------------------------- 1 file changed, 24 insertions(+), 40 deletions(-) diff --git a/docs/developing.md b/docs/developing.md index 0d085507..6cf849d7 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -154,33 +154,42 @@ The easiest method of checking performance is to use Chromium's build in auditin ├── App.vue # Vue.js starting file ├── assets # Static non-compiled assets │ ├── fonts # .ttf font files +│ ├── locales # All app text, each language in a separate JSON file │ ╰── interface-icons # SVG icons used in the app ├── components # All front-end Vue web components │ ├── Configuration # Components relating to the user config pop-up +│ │ ├── AppInfoModal.vue # A modal showing core app info, like version, language, etc │ │ ├── CloudBackupRestore.vue # Form where the user manages cloud sync options │ │ ├── ConfigContainer.vue # Main container, wrapping all other config components │ │ ├── CustomCss.vue # Form where the user can input custom CSS │ │ ├── EditSiteMeta.vue # Form where the user can edit site meta data -│ │ ╰── JsonEditor.vue # JSON editor, where the user can modify the main config file +│ │ ├── JsonEditor.vue # JSON editor, where the user can modify the main config file +│ │ ╰── RebuildApp.vue # A component allowing user to trigger a rebuild through the UI │ ├── FormElements # Basic form elements used throughout the app │ │ ├── Button.vue # Standard button component -│ │ └── Input.vue # Standard text field input component +│ │ ╰── Input.vue # Standard text field input component │ ├── LinkItems # Components for Sections and Link Items │ │ ├── Collapsable.vue # The collapsible functionality of sections +│ │ ├── ContextMenu.vue # The right-click menu, for showing Item opening methods and info │ │ ├── IframeModal.vue # Pop-up iframe modal, for viewing websites within the app │ │ ├── Item.vue # Main link item, which is displayed within an item group │ │ ├── ItemGroup.vue # Item group is a section containing icons │ │ ├── ItemIcon.vue # The icon used by both items and sections -│ │ ╰── ItemOpenMethodIcon.vue # A small icon, visible on hover, indicating opening method +│ │ ├── ItemOpenMethodIcon.vue # A small icon, visible on hover, indicating opening method +│ │ ╰── StatusIndicator.vue # Traffic light dot, showing if app is online or down │ ├── PageStrcture # Components relating the main structure of the page │ │ ├── Footer.vue # Footer, visible at the bottom of all pages │ │ ├── Header.vue # Header, visible at the top of pages, and includes title and nav +│ │ ├── LoadingScreen.vue # Splash screen shown on first load │ │ ├── Nav.vue # Navigation bar, includes a list of links │ │ ╰── PageTitle.vue # Page title and sub-title, visible within the Header │ ╰── Settings # Components relating to the quick-settings, in the top-right +│ ├── AppButtons.vue # Logout button and other app info │ ├── ConfigLauncher.vue # Icon that when clicked will launch the Configuration component +│ ├── CustomThemeMaker.vue # Color pickers for letting user build their own theme │ ├── ItemSizeSelector.vue # Set of buttons used to set and save item size │ ├── KeyboardShortcutInfo.vue# Small pop-up displaying the available keyboard shortcuts +│ ├── LanguageSwitcher.vue # Dropdown in a modal for changing app language │ ├── LayoutSelector.vue # Set of buttons, letting the user select their desired layout │ ├── SearchBar.vue # The input field in the header, used for searching the app │ ├── SettingsContainer.vue # Container that wraps all the quick-settings components @@ -191,54 +200,27 @@ The easiest method of checking performance is to use Chromium's build in auditin ├── styles # Directory of all globally used common SCSS styles ├── utils # Directory of re-used helper functions │ ├── ArrowKeyNavigation.js # Functionality for arrow-key navigation +│ ├── Auth.js # Handles all authentication related actions +│ ├── ClickOutside.js # A directive for detecting click, used to hide dropdown, modal or context menu +│ ├── ConfigAccumulator.js # Central place for managing and combining config +│ ├── ConfigHelpers.js # Helper functions for managing configuration │ ├── CloudBackup.js # Functionality for encrypting, processing and network calls │ ├── ConfigSchema.json # The schema, used to validate the users conf.yml file │ ├── ConfigValidator.js # A helper script that validates the config file against schema │ ├── defaults.js # Global constants and their default values │ ├── ErrorHandler.js # Helper function called when an error is returned │ ├── JsonToYaml.js # Function that parses and converts raw JSON into valid YAML +│ ├── languages.js # Handles fetching, switching and validating languages │ ╰── ThemeHelper.js # Function that handles the fetching and setting of user themes ╰── views # Directory of available pages, corresponding to available routes - ╰── Home.vue # The home page container + ├── Home.vue # The home page container + ├── About.vue # About page + ├── Login.vue # TAuthentication page + ├── Minimal.vue # The minimal view + ╰── Workspace.vue # The workspace view with apps in sidebar ``` --- -## Dependencies and Packages - -During development I made the conscious decision to not reinvent the wheel if not necessary. It is often really tempting to try an build everything yourself, but sometimes it's just not practical. Often there's packages out there, developed by amazing individuals which are probably built better than I could have done. That being said, I have looked through the code of most these dependencies, to verify that they are both legitimate and efficient. - -The following packages are used. Full credit, and massive kudos to each of their authors. - -### Core - -At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app. - -### Frontend Components - -- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` -- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` -- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` -- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` -- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` - - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` -- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` -- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT` - - Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT` - -### Utilities - -- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` -- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` -- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` - -### Server - -- [`connect`](https://github.com/senchalabs/connect) - Minimilistic middleware layer for chaining together Node.js requests handled by the server file `MIT` -- [`serve-static`](https://github.com/expressjs/serve-static) - Lightweight static Node file server `MIT` - -#### External Services -The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). - ## Notes ### Known Warnings @@ -248,3 +230,5 @@ When running the build command, several warnings appear. These are not errors, a `WARN A new version of sass-loader is available. Please upgrade for best experience.` - Currently we're using an older version of SASS loader, since the more recent releases do not seem to be compatible with the Vue CLI's webpack configuration. `WARN asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).` - For the PWA to support Windows 10, a splash screen asset is required, and is quite large. This throws a warning, however PWA assets are not loaded until needed, so shouldn't have any impact on application performance. A similar warning is thrown for the Raleway font, and that is looking to be addressed. + +`glob-parent Security Alert` - This will be fixed soon. The version of glob-parent that is used by the latest version of Vue-CLI has a security issue associated with it. I am waiting on Vue to update their dependencies. From 840a4296b3f5a0f7cfa9ac10696cfa89605e9e9f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 25 Jul 2021 16:46:03 +0100 Subject: [PATCH 007/108] :construction: Adds a component to check for updates --- src/components/Configuration/AppVersion.vue | 112 ++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 src/components/Configuration/AppVersion.vue diff --git a/src/components/Configuration/AppVersion.vue b/src/components/Configuration/AppVersion.vue new file mode 100644 index 00000000..48dfc4da --- /dev/null +++ b/src/components/Configuration/AppVersion.vue @@ -0,0 +1,112 @@ + + + + + From dcdcdfb9799b330775693463c94fe2511e7a34b5 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 25 Jul 2021 16:46:49 +0100 Subject: [PATCH 008/108] :sparkles: Shows app version + status in Config and About menu --- src/components/Configuration/AppInfoModal.vue | 7 ++++++- src/components/Configuration/ConfigContainer.vue | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/components/Configuration/AppInfoModal.vue b/src/components/Configuration/AppInfoModal.vue index ab136e0b..8fc237eb 100644 --- a/src/components/Configuration/AppInfoModal.vue +++ b/src/components/Configuration/AppInfoModal.vue @@ -2,8 +2,9 @@
-

Dashy V{{ appVersion }}

+

Dashy

+

Service Worker Status

{{ serviceWorkerInfo }}
@@ -39,10 +40,14 @@ @@ -20,7 +24,9 @@ export default { .page-titles { display: flex; - flex-direction: column; + flex-wrap: wrap; + flex-direction: row; + align-items: center; text-decoration: none; h1 { color: var(--heading-text-color); @@ -33,7 +39,13 @@ export default { text-shadow: 1px 1px 2px #130f23; opacity: var(--dimming-factor); } + img.site-logo { + margin: 0.2rem 0.5rem 0.2rem 0; + max-width: 3.5rem; + height: fit-content; + } @include phone { + flex-direction: column; text-align: center; padding: 0.25rem 0; } From ef6b6bb75757872f3f44f62badf16963feba1e7c Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 20:50:22 +0100 Subject: [PATCH 024/108] :card_file_box: Adds pageInfo.logo attribute to the schema --- src/utils/ConfigSchema.json | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/utils/ConfigSchema.json b/src/utils/ConfigSchema.json index c07d1e95..874fd18b 100644 --- a/src/utils/ConfigSchema.json +++ b/src/utils/ConfigSchema.json @@ -39,6 +39,15 @@ }, "footerText": { "type": "string" + }, + "logo": { + "type": "string", + "description": "Path to an optional image asset, to be displayed in the header", + "pattern": "^(http|\/)", + "examples": [ + "/web-icons/dashy-logo.png", + "https://i.ibb.co/yhbt6CY/dashy.png" + ] } }, "required": [ From 644739028f3af0531bb44b1dc1be88d4496f3328 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 20:50:53 +0100 Subject: [PATCH 025/108] :memo: Adds docs for pageInfo.logo attribute --- README.md | 2 ++ docs/configuring.md | 1 + 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index 5e495cb9..bcf041bf 100644 --- a/README.md +++ b/README.md @@ -345,6 +345,8 @@ Custom links for the navigation menu are defined under [`pageInfo.navLinks`](htt You can display either custom text or HTML in the footer, using the `pageInfo.footerText` attribute. +To display a logo or image asset next to the title, set `pageInfo.logo` to the path to your picture (either local or remote). + It's also possible to hide parts of the page that you do not need (e.g. navbar, footer, search, heading, etc). This is done using the [`appConfig.hideComponents`](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#appconfighidecomponents-optional) attribute. For example, a `pageInfo` section might look something like this: diff --git a/docs/configuring.md b/docs/configuring.md index 4e1ca038..3b03513c 100644 --- a/docs/configuring.md +++ b/docs/configuring.md @@ -38,6 +38,7 @@ To disallow any changes from being written to disk via the UI config editor, set **`description`** | `string` | _Optional_ | Description of your dashboard, also displayed as a subtitle **`navLinks`** | `array` | _Optional_ | Optional list of a maximum of 6 links, which will be displayed in the navigation bar. See [`navLinks`](#pageinfonavlinks-optional) **`footerText`** | `string` | _Optional_ | Text to display in the footer (note that this will override the default footer content). This can also include HTML and inline CSS +**`logo`** | `string` | _Optional_ | The path to an image to display in the header (to the right of the title). This can be either local, where `/` is the root of `./public`, or any remote image, such as `https://i.ibb.co/yhbt6CY/dashy.png`. It's recommended to scale your image down, so that it doesn't impact load times **[⬆️ Back to Top](#configuring)** From be79049fb86a95a09657848ac1afb331011b17dd Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 20:51:31 +0100 Subject: [PATCH 026/108] :bookmark: Bumps to V-1.4.5 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a7c219ed..19b06176 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.4.4", + "version": "1.4.5", "license": "MIT", "main": "server", "scripts": { From 91ededa7db8bfede5f445d8559ff659e7494c7ae Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 21:07:12 +0100 Subject: [PATCH 027/108] :adhesive_bandage: Read logo from local storage, if available --- src/utils/ConfigAccumalator.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/ConfigAccumalator.js b/src/utils/ConfigAccumalator.js index 6a5e0928..b1426eef 100644 --- a/src/utils/ConfigAccumalator.js +++ b/src/utils/ConfigAccumalator.js @@ -51,6 +51,7 @@ export default class ConfigAccumulator { const filePageInfo = this.conf.pageInfo || {}; const pi = this.conf.pageInfo || defaults; // The page info object to return pi.title = localPageInfo.title || filePageInfo.title || defaults.title; + pi.logo = localPageInfo.logo || filePageInfo.logo || defaults.logo; pi.description = localPageInfo.description || filePageInfo.description || defaults.description; pi.navLinks = localPageInfo.navLinks || filePageInfo.navLinks || defaults.navLinks; pi.footerText = localPageInfo.footerText || filePageInfo.footerText || defaults.footerText; From 99265d924177b18f188c112af141307ccd3a3993 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 22:43:46 +0100 Subject: [PATCH 028/108] :beers: Death by documentation... This will need spell checking in the morning --- docs/assets/sponsor-button.svg | 7 ++ docs/contributing.md | 148 ++++++++------------------------- docs/credits.md | 0 docs/developing.md | 143 +++++++++++++++++++++++-------- docs/development-guides.md | 35 +++++++- docs/troubleshooting.md | 20 ++++- 6 files changed, 198 insertions(+), 155 deletions(-) create mode 100644 docs/assets/sponsor-button.svg create mode 100644 docs/credits.md diff --git a/docs/assets/sponsor-button.svg b/docs/assets/sponsor-button.svg new file mode 100644 index 00000000..7476c336 --- /dev/null +++ b/docs/assets/sponsor-button.svg @@ -0,0 +1,7 @@ + + Artboard + Created with Sketch. + + + Sponsor me on Github + \ No newline at end of file diff --git a/docs/contributing.md b/docs/contributing.md index b3393ca2..9dc8f2e3 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -1,131 +1,49 @@ +# Contributing + +First off, thank you for considering contributing towards Dashy! 🙌 +There are several ways that you can help out (but don't feel you have to). +Any contributions, every contribution, however small will always be very much appreciated, and you will be appropriately credited in the readme - huge thank you to everyone who has helped so far. + +## Submit a PR +Contributing to the code or documentation is super helpful. You can fix a bug, add a new feature or improve an existing one. I've written [several guides](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md) with step-by-step tutorials of common tasks within Dashy. And I've tried to keep the code neat and documentation thorough, so understanding what everything does should be fairly straight forward, but feel free to ask if you have any questions. + +## Add Translations +If you speak another language, then adding translations would be really helpful, and you will be credited in the readme for your work. Multi-language support makes Dashy accessible for non-English speakers, which I feel is important. This is a very quick and easy task, , as all application text is located in [`locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json), so adding a new language is as simple as copying this file and translating the values. You don't have to translate it all, as any missing attributes will just fallback to English. For a full tutorial, see the [Translating Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations). -First off, thank you for considering contributing to Dashy! There are two main ways you can help out: [Submitting a Pull Request](#submitting-a-pr) or [Raising an Issue](#raising-an-issue). +## Raise a bug +If you've found a bug, then please do raise it as an issue. This will help me know if there's something that needs fixing. Try and include as much detail as possible, such as your environment, steps to reproduce, any console output and maybe an example screenshot or recording if necessary. You can [Raise a Bug here](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D) 🐛. -### Submitting a PR +## Join the discussion +I've enabled the discussion feature on GitHub, here you can share tips and tricks, useful information, or your dashboard. You can also ask questions, and offer basic support to other users. -Pull requests are proposed code changes, that can then be directly merged into Dashy's master branch and deployed to users. Even a small PR would be a big help. +## Share your dashboard +Dashy now has a [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-) where you can show off a screenshot of your dashboard, and get inspiration from other users. I also really enjoy seeing how people are using Dashy. To [submit your dashboard](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#submitting-your-dashboard), please either open a PR or raise an issue. -Not sure what to work on? Here are some ideas: -- Fix a bug, or solve an open issue -- Improve the docs -- Add a new theme -- Implement a new widget -- Add more display options -- Refactor or improve an area of the code -- Implement a new feature, or improve an existing one +## Spread the word +Dashy is still a relatively young project, and as such not many people know of it. It would be great to see more users, and so it would be awesome if you could consider sharing on social platforms. -Before you submit your pull request, please ensure the following: -- Must be backwards compatible -- All lint checks and tests must pass -- If a new option in the the config file is added, it needs to be added into the schema, and documented in the configuring guide -- If a new dependency is required, it must be essential, and it must be thoroughly checked out for security or efficiency issues +## Leave a review +Dashy is on the following platforms, and if you could spare a few seconds to give it an upvote or review, this will also help new users find it. +- [ProductHunt](https://www.producthunt.com/posts/dashy) +- DockerHub +- GitHub -Please also include the following information in your PR: -- PR type (bug fix, feature, code style updates, documentation, etc) -- Issue number (if applicable) -- A brief description of your changes -- A note confirming that your code follows the checklist (above) +## Make a small donation -#### Getting Started +Please only do this is you can definitely afford to. Don't feel any pressure to donate anything, as Dashy and my other projects will always be 100% free, for everyone, for ever. -To set up your development environment, and get Dashy running locally, please see: [Developing Docs](/docs/developing.md) +[![Sponsor Lissy93 on GitHub]()](https://github.com/sponsors/Lissy93) -#### For new Contributors +Sponsoring will give you several perks, from $1 / £0.70 per month, as well as a sponsor badge on your profile, you can also be credited on the readme, with a link to your website/ profile/ socials, get priority support, have your feature ideas implemented, plus lots more. For more info, see [@Lissy93's Sponsor Page](https://github.com/sponsors/Lissy93). -If you have never created a pull request before, welcome :tada: :smile: [Here is a great tutorial](https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github) -on how to create a pull request.. +You can also send one-off small contriutions using crypto: +- **BTC**: `3853bSxupMjvxEYfwGDGAaLZhTKxB2vEVC` +- **ETH**: `0x0fc98cBf8bea932B4470C46C0FbE1ed1f6765017` / `aliciasykes.eth` +- **XMR**: `471KZdxb6N63aABR4WYwMRjTVkc1p1x7wGsUTEF7AMYzL8L94A5pCuYWkosgJQ5Ze8Y2PscVCGZFJa3hDPg6MaDq47GUm8r` -1. [Fork](http://help.github.com/fork-a-repo/) the project, clone your fork, - and configure the remotes: - ```bash - # Clone your fork of the repo into the current directory - git clone https://github.com// - # Navigate to the newly cloned directory - cd - # Assign the original repo to a remote called "upstream" - git remote add upstream https://github.com/hoodiehq/ - ``` - -2. If you cloned a while ago, get the latest changes from upstream: - - ```bash - git checkout master - git pull upstream master - ``` - -3. Create a new topic branch (off the main project development branch) to - contain your feature, change, or fix: - - ```bash - git checkout -b - ``` - -4. Make sure to update, or add to the tests when appropriate. Patches and - features will not be accepted without tests. Run `yarn test` to check that - all tests pass after you've made changes, and `yarn lint` for linting. - - ```bash - git add ./path/to/modified/files - git commit -m "Fixed #xx by doing xyz" - ``` - -5. If you added or changed a feature, make sure to document it accordingly in - the docs and if applicable, in the `README.md` file. - -6. Push your topic branch up to your fork: - - ```bash - git push origin - ``` - -8. [Open a Pull Request](https://help.github.com/articles/using-pull-requests/) - with a clear title and description. - -You can use emojis in your commit message, to indicate the category of the task. -For a reference of what each emoji means in the context of commits, see [gitmoji.dev](https://gitmoji.dev/). - -#### Testing the Production App - -For larger pull requests, please also check that it works as expected in a production environment. - -Testing production app in development environment: -- Natively - - Build: `yarn build` - - Run: `yarn start` -- With Docker: - - Build: `docker build -t dashy .` - - Run: `docker run -p 8080:80 dashy` - -Please also ensure that running the following scripts return no errors: -- `yarn lint` -- `yarn test` -- `yarn validate-config` - -A good resource for testing the Docker image on a totally fresh system, is by using [Play with Docker](https://labs.play-with-docker.com/). This will let you clone or pull your image, and spin up a container. This is useful for checking that everything behaves as it should on an independent system, and should get around the _'works on my computer'_ issue. - -All required checks will be run as a git-hook after doing a git commit. If you have any issues wit this, it can be disabled with the `--no-verify` flag - -#### Merging a PR - -Only maintainers can merge a PR. A pull request can only be merged if: -- All CI checks are passing -- It has been approved by either the author, or at least two maintainers -- It has no requested changes -- It is up to date with current master - ---- - -### Raising an Issue - -If you've found a bug, or something that isn't working as you'd expect, please raise an issue, so that it can be resolved. If you're having trouble getting things up and running, feel free to ask a question. Feature requests and feedback are also welcome, as it helps Dashy improve. - -Click one of the links below, to open an issue: -- [Raise a Bug 🐛](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D) - Found a bug, or something not working as it should? -- [Submit a Feature Request 🦄](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A6%84+Feature+Request&template=feature-request---.md&title=%5BFEATURE_REQUEST%5D) - Is there a feature that you think is missing from Dashy? -- [Ask a Question 🤷‍♀️](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question&template=question------.md&title=%5BQUESTION%5D) - Got a question about using, building or developing Dashy? -- [Share Feedback 🌈](https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%8C%88+Feedback&template=share-feedback---.md&title=%5BFEEDBACK%5D) - Got any thoughts on the current or future development of Dashy? +## Request a feature via BountySource --- diff --git a/docs/credits.md b/docs/credits.md new file mode 100644 index 00000000..e69de29b diff --git a/docs/developing.md b/docs/developing.md index 6cf849d7..6b4a15ba 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -47,18 +47,22 @@ Note: - If you are using NPM, replace `yarn` with `npm run` - If you are using Docker, precede each command with `docker exec -it [container-id]`. Container ID can be found by running `docker ps` -## Environmental Variables +### Environmental Variables +All environmental variables are optional. Currently there are not many environmental variables used, as most of the user preferences are stored under `appConfig` in the `conf.yml` file. + +You can set variables within your local development environment using a `.env` file. + +Any environmental variables used by the frontend are preceded with `VUE_APP_`. Vue will merge the contents of your `.env` file into the app in a similar way to the ['dotenv'](https://github.com/motdotla/dotenv) package, where any variables that you set on your system will always take preference over the contents of any `.env` file. + - `PORT` - The port in which the application will run (defaults to `4000` for the Node.js server, and `80` within the Docker container) - `NODE_ENV` - Which environment to use, either `production`, `development` or `test` - `VUE_APP_DOMAIN` - The URL where Dashy is going to be accessible from. This should include the protocol, hostname and (if not 80 or 443), then the port too, e.g. `https://localhost:3000`, `http://192.168.1.2:4002` or `https://dashy.mydomain.com` -All environmental variables are optional. Currently there are not many environmental variables used, as most of the user preferences are stored under `appConfig` in the `conf.yml` file. -If you do add new variables, ensure that there is always a fallback (define it in [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js)), so as to not cause breaking changes. Don't commit your `.env` file to git, but instead take a few moments to document what you've added under the appropriate section. Try and follow the concepts outlined in the [12 factor app](https://12factor.net/config), as these are good practices. +If you do add new variables, ensure that there is always a fallback (define it in [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js)), so as to not cause breaking changes. Don't commit your `.env` file to git, but instead take a few moments to document what you've added under the appropriate section. Try and follow the concepts outlined in the [12 factor app](https://12factor.net/config). -Any environmental variables used by the frontend are preceded with `VUE_APP_`. Vue will merge the contents of your `.env` file into the app in a similar way to the ['dotenv'](https://github.com/motdotla/dotenv) package, where any variables that you set on your system will always take preference over the contents of any `.env` file. -## Environment Modes +### Environment Modes Both the Node app and Vue app supports several environments: `production`, `development` and `test`. You can set the environment using the `NODE_ENV` variable (either with your OS, in the Docker script or in an `.env` file - see [Environmental Variables](#environmental-variables) above). The production environment will build the app in full, minifying and streamlining all assets. This means that building takes longer, but the app will then run faster. Whereas the dev environment creates a webpack configuration which enables HMR, doesn't hash assets or create vendor bundles in order to allow for fast re-builds when running a dev server. It supports sourcemaps and other debugging tools, re-compiles and reloads quickly but is not optimized, and so the app will not be as snappy as it could be. The test environment is intended for test running servers, it ignores assets that aren't needed for testing, and focuses on running all the E2E, regression and unit tests. For more information, see [Vue CLI Environment Modes](https://cli.vuejs.org/guide/mode-and-env.html#modes). @@ -67,6 +71,70 @@ By default: - `production` is used by `yarn build` (or `vue-cli-service build`) and `yarn build-and-start` and `yarn pm2-start` - `development` is used by `yarn dev` (or `vue-cli-service serve`) - `test` is used by `yarn test` (or `vue-cli-service test:unit`) + +--- + +## Git Strategy + +### Git Flow +Like most Git repos, we are following the [Github Flow](https://guides.github.com/introduction/flow) standard. + +1. Create a branch (or fork if you don'd have write acces) +2. Code some awesome stuff, then add and commit your changes +3. Create a Pull Request, complete the checklist and ensure the build succeeds +4. Follow up with any reviews on your code +5. Merge 🎉 + +### Git Branch Naming +The format of your branch name should be something similar to: `[TYPE]/[TICKET]_[TITLE]` +For example, `FEATURE/420_Awesome-feature` or `FIX/690_login-server-error` + +### Commit Emojis +Using a single emoji at the start of each commit message, to indicate the type task, makes the commit ledger easier to understand, plus it looks cool. + +- 🎨 `:art:` - Improve structure / format of the code. +- ⚡️ `:zap:` - Improve performance. +- 🔥 `:fire:` - Remove code or files. +- 🐛 `:bug:` - Fix a bug. +- 🚑️ `:ambulance:` - Critical hotfix +- ✨ `:sparkles:` - Introduce new features. +- 📝 `:memo:` - Add or update documentation. +- 🚀 `:rocket:` - Deploy stuff. +- 💄 `:lipstick:` - Add or update the UI and style files. +- 🎉 `:tada:` - Begin a project. +- ✅ `:white_check_mark:` - Add, update, or pass tests. +- 🔒️ `:lock:` - Fix security issues. +- 🔖 `:bookmark:` - Make a Release or Version tag. +- 🚨 `:rotating_light:` - Fix compiler / linter warnings. +- 🚧 `:construction:` - Work in progress. +- ⬆️ `:arrow_up:` - Upgrade dependencies. +- 👷 `:construction_worker:` - Add or update CI build system. +- ♻️ `:recycle:` - Refactor code. +- 🩹 `:adhesive_bandage:` - Simple fix for a non-critical issue. +- 🔧 `:wrench:` - Add or update configuration files. +- 🍱 `:bento:` - Add or update assets. +- 🗃️ `:card_file_box:` - Perform database schema related changes. +- ✏️ `:pencil2:` - Fix typos. +- 🌐 `:globe_with_meridians:` - Internationalization and translations. + +For a full list of options, see [gitmoji.dev](https://gitmoji.dev/) + +### PR Guidelines +Once you've made your changes, and pushed them to your fork or branch, you're ready to open a pull request! + +For a pull request to be merged, it must: +- Must be backwards compatible +- The build, lint and tests (run by GH actions) must pass +- There must not be any merge conflicts + +When you submit your PR, include the required info, by filling out the PR template. Including: +- A brief description of your changes +- The issue, ticket or discussion number (if applicable) +- For UI relate updates include a screenshot +- If any dependencies were added, explain why it was needed, state the cost associated, and confirm it does not introduce any security issues +- Finally, check the checkboxes, to confirm that the standards are met, and hit submit! + +--- ## Resources for Beginners New to Web Development? Glad you're here! Dashy is a pretty simple app, so it should make a good candidate for your first PR. Presuming that you already have a basic knowledge of JavaScript, the following articles should point you in the right direction for getting up to speed with the technologies used in this project: - [Introduction to Vue.js](https://v3.vuejs.org/guide/introduction.html) @@ -82,6 +150,8 @@ New to Web Development? Glad you're here! Dashy is a pretty simple app, so it sh As well as Node, Git and Docker- you'll also need an IDE (e.g. [VS Code](https://code.visualstudio.com/) or [Vim](https://www.vim.org/)) and a terminal (Windows users may find [WSL](https://docs.microsoft.com/en-us/windows/wsl/) more convenient). +--- + ## Style Guide Linting is done using [ESLint](https://eslint.org/), and using the [Vue.js Styleguide](https://github.com/vuejs/eslint-config-standard), which is very similar to the [AirBnB Stylguide](https://github.com/airbnb/javascript). You can run `yarn lint` to report and fix issues. While the dev server is running, issues will be reported to the console automatically. Any lint errors will trigger the build to fail. Note that all lint checks must pass before any PR can be merged. Linting is also run as a git pre-commit hook @@ -99,38 +169,13 @@ The most significant things to note are: For the full styleguide, see: [github.com/airbnb/javascript](https://github.com/airbnb/javascript) -## Frontend Components +--- -All frontend code is located in the `./src` directory, which is split into 5 sub-folders: -- Components - All frontend web components are located here. Each component should have a distinct, well defined and simple task, and ideally should not be too long. The components directory is organised into a series of sub-directories, representing a specific area of the application - - PageStrcture - Components relating to overall page structure (nav, footer, etc) - - FormElements - Reusable form elements (button, input field, etc) - - LinkItems - Components relating to Dashy's sections and items (item group, item, item icon, etc) - - Configuration - Components relating to Dashy's configuration forms (cloud backup, JSON editor, etc) -- Views - Each view directly corresponds to a route (defined in the router), and in effectively a page. They should have minimal logic, and just contain a few components -- Utils - These are helper functions, or logic that is used within the app does not include an UI elements -- Styles - Any SCSS that is used globally throughout that app, and is not specific to a single component goes here. This includes variables, color themes, typography settings, CSS reset and media queries -- Assets - Static assets that need to be bundled into the application, but do not require any manipulation go here. This includes interface icons and fonts +## Application Structure -The structure of the components directory is similar to that of the frontend application layout +### Directory Structure -

- -### Updating Dependencies - -Running `yarn upgrade` will updated all dependencies based on the ranges specified in the `package.json`. The `yarn.lock` file will be updated, as will the contents of `./node_modules`, for more info, see the [yarn upgrade documentation](https://classic.yarnpkg.com/en/docs/cli/upgrade/). It is important to thoroughly test after any big dependency updates. - -## Development Tools - -### Performance - Lighthouse -The easiest method of checking performance is to use Chromium's build in auditing tool, Lighthouse. To run the test, open Developer Tools (usually F12) --> Lighthouse and click on the 'Generate Report' button at the bottom. - -### Dependencies - BundlePhobia -[BundlePhobia](https://bundlephobia.com/) is a really useful app that lets you analyze the cost of adding any particular dependency to an application - -## Directory Structure - -### Files in the Root: `./` +#### Files in the Root: `./` ``` ╮ ├── package.json # Project meta-data, dependencies and paths to scripts @@ -147,7 +192,7 @@ The easiest method of checking performance is to use Chromium's build in auditin ╯ ``` -### Frontend Source: `./src/` +#### Frontend Source: `./src/` ``` ./src @@ -219,8 +264,36 @@ The easiest method of checking performance is to use Chromium's build in auditin ├── Minimal.vue # The minimal view ╰── Workspace.vue # The workspace view with apps in sidebar ``` + +### Frontend Components + +All frontend code is located in the `./src` directory, which is split into 5 sub-folders: +- **Components** - All frontend web components are located here. Each component should have a distinct, well defined and simple task, and ideally should not be too long. The components directory is organised into a series of sub-directories, representing a specific area of the application + - **PageStrcture** - Components relating to overall page structure (nav, footer, etc) + - FormElements - Reusable form elements (button, input field, etc) + - LinkItems - Components relating to Dashy's sections and items (item group, item, item icon, etc) + - Configuration - Components relating to Dashy's configuration forms (cloud backup, JSON editor, etc) +- **Views** - Each view directly corresponds to a route (defined in the router), and in effectively a page. They should have minimal logic, and just contain a few components +- **Utils** - These are helper functions, or logic that is used within the app does not include an UI elements +- **Styles** - Any SCSS that is used globally throughout that app, and is not specific to a single component goes here. This includes variables, color themes, typography settings, CSS reset and media queries +- **Assets** - Static assets that need to be bundled into the application, but do not require any manipulation go here. This includes interface icons and fonts + +The structure of the components directory is similar to that of the frontend application layout + +

+ + --- +## Development Tools + +### Performance - Lighthouse +The easiest method of checking performance is to use Chromium's build in auditing tool, Lighthouse. To run the test, open Developer Tools (usually F12) --> Lighthouse and click on the 'Generate Report' button at the bottom. + +### Dependencies - BundlePhobia +[BundlePhobia](https://bundlephobia.com/) is a really useful app that lets you analyze the cost of adding any particular dependency to an application + +--- ## Notes ### Known Warnings diff --git a/docs/development-guides.md b/docs/development-guides.md index f05282ca..c972cec1 100644 --- a/docs/development-guides.md +++ b/docs/development-guides.md @@ -4,14 +4,35 @@ A series of short tutorials, to guide you through the most common development ta Sections: - [Creating a new theme](#creating-a-new-theme) -- [Adding Translations](#adding-translations) +- [Writing Translations](#adding-translations) - [Adding a new option in the config file](#adding-a-new-option-in-the-config-file) +- [Updating Dependencies](#updating-dependencies) ## Creating a new theme -See [Theming](./theming.md) +Adding a new theme is really easy. There's two things you need to do: Pass the theme name to Dashy, so that it can be added to the theme selector dropdown menu, and then write some styles! -## Adding Translations +##### 1. Add Theme Name +Choose a snappy name for you're theme, and add it to the `builtInThemes` array inside [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js#L27). + +##### 2. Write some Styles! +Put your theme's styles inside [`color-themes.scss`](https://github.com/Lissy93/dashy/blob/master/src/styles/color-themes.scss). +Create a new block, and make sure that `data-theme` matches the theme name you chose above. For example: + +```css +html[data-theme='tiger'] { + --primary: #f58233; + --background: #0b1021; +} +``` + +Then you can go ahead and write you're own custom CSS. Although all CSS is supported here, the best way to define you're theme is by setting the CSS variables. You can find a [list of all CSS variables, here](https://github.com/Lissy93/dashy/blob/master/docs/theming.md#css-variables). + +For a full guide on styling, see [Theming Docs](./theming.md). + +Note that if you're theme is just for yourself, and you're not submitting a PR, then you can instead just pass it under `appConfig.cssThemes` inside your config file. And then put your theme in your own stylesheet, and pass it into the Docker container - [see how](https://github.com/Lissy93/dashy/blob/master/docs/theming.md#adding-your-own-theme). + +## Writing Translations Dashy is using [vue-i18n](https://vue-i18n.intlify.dev/guide/) to manage multi-language support. @@ -110,4 +131,10 @@ Checklist: - [] Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option - [] Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js) - [] Document the new value in [`configuring.md`](./configuring.md) -- [] Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value \ No newline at end of file +- [] Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value + +--- + +## Updating Dependencies + +Running `yarn upgrade` will updated all dependencies based on the ranges specified in the `package.json`. The `yarn.lock` file will be updated, as will the contents of `./node_modules`, for more info, see the [yarn upgrade documentation](https://classic.yarnpkg.com/en/docs/cli/upgrade/). It is important to thoroughly test after any big dependency updates. \ No newline at end of file diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index ea81a751..dee14a41 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -1,2 +1,20 @@ +# Troubleshooting + +This document contains common problems and their solutions. + +### Yarn Error + +For more info, see [Issue #1](https://github.com/Lissy93/dashy/issues/1) + +First of all, check that you've got yarn installed correctly - see the [yarn installation docs](https://classic.yarnpkg.com/en/docs/install) for more info. + +If you're getting an error about scenarios, then you've likely installed the wrong yarn... (you're [not](https://github.com/yarnpkg/yarn/issues/2821) the only one!). You can fix it by uninstalling, adding the correct repo, and reinstalling, for example, in Debian: +- `sudo apt remove yarn` +- `curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | sudo apt-key add -` +- `echo "deb https://dl.yarnpkg.com/debian/ stable main" | sudo tee /etc/apt/sources.list.d/yarn.list` +- `sudo apt update && sudo apt install yarn` + +Alternatively, as a workaround, you have several options: +- Try using [NPM](https://www.npmjs.com/get-npm) instead: So clone, cd, then run `npm install`, `npm run build` and `npm start` +- Try using [Docker](https://www.docker.com/get-started) instead, and all of the system setup and dependencies will already be taken care of. So from within the directory, just run `docker build -t lissy93/dashy .` to build, and then use docker start to run the project, e.g: `docker run -it -p 8080:80 lissy93/dashy` (see the [deploying docs](https://github.com/Lissy93/dashy/blob/master/docs/deployment.md#deploy-with-docker) for more info) -Coming Soon... \ No newline at end of file From e305d161ca2862b4f6fee11c3835dc18c944f983 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Mon, 26 Jul 2021 22:50:55 +0100 Subject: [PATCH 029/108] :pencil2: Fixes typos in the docs --- docs/contributing.md | 4 ++-- docs/development-guides.md | 12 ++++++------ 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 9dc8f2e3..d2e0c369 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -5,7 +5,7 @@ There are several ways that you can help out (but don't feel you have to). Any contributions, every contribution, however small will always be very much appreciated, and you will be appropriately credited in the readme - huge thank you to everyone who has helped so far. ## Submit a PR -Contributing to the code or documentation is super helpful. You can fix a bug, add a new feature or improve an existing one. I've written [several guides](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md) with step-by-step tutorials of common tasks within Dashy. And I've tried to keep the code neat and documentation thorough, so understanding what everything does should be fairly straight forward, but feel free to ask if you have any questions. +Contributing to the code or documentation is super helpful. You can fix a bug, add a new feature or improve an existing one. I've written [several guides](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md) with step-by-step tutorials of common tasks within Dashy. For setting up the development envionment, outline of the standards, and understanding the PR flow, see the [Deployment Docs](https://github.com/Lissy93/dashy/blob/master/docs/deployment.md). And I've tried to keep the code neat and documentation thorough, so understanding what everything does should be fairly straight forward, but feel free to ask if you have any questions. ## Add Translations If you speak another language, then adding translations would be really helpful, and you will be credited in the readme for your work. Multi-language support makes Dashy accessible for non-English speakers, which I feel is important. This is a very quick and easy task, , as all application text is located in [`locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json), so adding a new language is as simple as copying this file and translating the values. You don't have to translate it all, as any missing attributes will just fallback to English. For a full tutorial, see the [Translating Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations). @@ -33,7 +33,7 @@ Dashy is on the following platforms, and if you could spare a few seconds to giv Please only do this is you can definitely afford to. Don't feel any pressure to donate anything, as Dashy and my other projects will always be 100% free, for everyone, for ever. -[![Sponsor Lissy93 on GitHub]()](https://github.com/sponsors/Lissy93) +[![Sponsor Lissy93 on GitHub](./assets/sponsor-button.svg)](https://github.com/sponsors/Lissy93) Sponsoring will give you several perks, from $1 / £0.70 per month, as well as a sponsor badge on your profile, you can also be credited on the readme, with a link to your website/ profile/ socials, get priority support, have your feature ideas implemented, plus lots more. For more info, see [@Lissy93's Sponsor Page](https://github.com/sponsors/Lissy93). diff --git a/docs/development-guides.md b/docs/development-guides.md index c972cec1..72022f2c 100644 --- a/docs/development-guides.md +++ b/docs/development-guides.md @@ -4,7 +4,7 @@ A series of short tutorials, to guide you through the most common development ta Sections: - [Creating a new theme](#creating-a-new-theme) -- [Writing Translations](#adding-translations) +- [Writing Translations](#writing-translations) - [Adding a new option in the config file](#adding-a-new-option-in-the-config-file) - [Updating Dependencies](#updating-dependencies) @@ -127,11 +127,11 @@ If your property needs additional logic for fetching, setting or processing, the Finally, add your new property to the [`configuring.md`](./configuring.md) API docs. Put it under the relevant section, and be sure to include field name, data type, a description and mention that it is optional. If your new feature needs more explaining, then you can also document it under the relevant section elsewhere in the documentation. Checklist: -- [] Ensure the new attribute is actually necessary, and nothing similar already exists -- [] Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option -- [] Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js) -- [] Document the new value in [`configuring.md`](./configuring.md) -- [] Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value +- [ ] Ensure the new attribute is actually necessary, and nothing similar already exists +- [ ] Update the [Schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.js) with the parameters for your new option +- [ ] Set a default value (if required) within [`defaults.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/defaults.js) +- [ ] Document the new value in [`configuring.md`](./configuring.md) +- [ ] Test that the reading of the new attribute is properly handled, and will not cause any errors when it is missing or populated with an unexpected value --- From fa2de53990b9af02c0f700f0eea45b2dc588a5e6 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 17:58:02 +0100 Subject: [PATCH 030/108] :memo: WIP Adds Security.md, Support.md, Changelog.md --- .github/CHANGELOG.md | 271 +++++++++++++++++++++++++++++++++++++++++++ .github/SECURITY.md | 29 +++++ .github/SUPPORT.md | 5 + 3 files changed, 305 insertions(+) create mode 100644 .github/CHANGELOG.md create mode 100644 .github/SECURITY.md create mode 100644 .github/SUPPORT.md diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md new file mode 100644 index 00000000..b48c939a --- /dev/null +++ b/.github/CHANGELOG.md @@ -0,0 +1,271 @@ +# Changelog + +## 1.4.5 +## 1.4.4 +## 1.4.3 +## 1.4.2 +## 1.4.1 +## 1.4.0 +## 1.3.9 +## 1.3.8 - Builds a Custom Theme Configurator +- Adds property to enable the user + +## 1.3.7 - Enable Custom Styesheet in Docker [PR #92](https://github.com/Lissy93/dashy/pull/92) +- Enables the user to pass a custom stylesheet in with Docker +- Adds support for 1-Click deployment to Render.com + +## 1.3.6 - Showcase [#91](https://github.com/Lissy93/dashy/pull/91) +- Adds @Shadowking001's screenshot to showcase + +## 1.3.5 - Showcase [PR #84](https://github.com/Lissy93/dashy/pull/84) +- Adds @dtctek's screenshot to showcase + +## 1.3.4 - Enables User to Hide Unwanted Components [PR #78](https://github.com/Lissy93/dashy/pull/78) +- Adds several additional options to the config, allowing the user to hide structural components that they don't need +- Including hideHeading, hideNav, hideSearch, hideSettings, hideFooter, hideSplashScreen + +## 1.3.3 - Adds Support for Emoji Icons [PR #76](https://github.com/Lissy93/dashy/pull/76) +- Enables user to use emojis for item and section icons +- Adds a handler to convert Unicode, or Shortcode into an Emoji + +## 1.3.2 - Showcase Addition [PR #75](https://github.com/Lissy93/dashy/pull/75) +- Adds @cerealconyogurt's screenshot to the showcase + +## 1.3.1 - UI Improvements [PR #73](https://github.com/Lissy93/dashy/pull/73) +- New style of Large item +- 2 new color themes +- Added CSS variables for search label and footer background +- Improves process for auto-checking if font-awesome is needed +- Silences non-critical warnings in production build +- Adds new optional font-face for cyber punk +- Shortens readme, and adds contribute links to showcase + +## 1.3.0 - Custom Headers for Status Check [PR #72](https://github.com/Lissy93/dashy/pull/72) +- Enables user to pass custom headers to the status check endpoint +- Enables user to use a different URL for the status check request + +## 1.2.9 - Creates a Showcase Page [PR #68](https://github.com/Lissy93/dashy/pull/68) +- Adds a page in the docs for users to share their screenshots of their dashboard + +## 1.2.8 - Adds Remember-Me Functionality into the Login Form [PR #66](https://github.com/Lissy93/dashy/pull/66) +- Adds a dropdown menu in the login form with various time intervals available +- Adds appropriate expiry into session storage, in order to keep user logged in for their desired time interval + +## 1.2.7 - Implements a Right-Click Context Menu [#62](https://github.com/Lissy93/dashy/pull/62) +- Built a context menu, showing all item opening methods, on right-click +- Made a clickOutside directive, in order to close menu when user clicks away +- Adds launching functionality, user can click to launch + +## 1.2.6 - Make Font Assets Local [PR #60](https://github.com/Lissy93/dashy/pull/60) +- Downloaded font files to assets +- Removed all calls to font CDN, replaced with local calls + +## 1.2.5 - Small Fixes, and Efficiency Improvements [PR #57](https://github.com/Lissy93/dashy/pull/57) +- Adds correct license +- Improves service workers, and adds serviceWorkerStatus local storage item +- Adds missing statusCheck and statusCheckInterval docs into Configuring.md +- Adds an About App page, containing info needed to raise a bug report +- Adds TDLR license into main readme +- Introduces app versioning +- Adds safeguards into ConfigAccumalaror, to prevent error being thrown +- Updates PR template +- Improved Webpack build experience, with progress bar and completion notification +- Adds new and improved icons for layout options +- Make the Page Title into a home page link +- Adds missing favicon, fixes #55 +- Adds assets to PWA manifest.json +- Documents app commands in readme +- Enable passing website as URL param to the workspace +- Modified items, so that title text doesn't get shortened, + +## 1.2.4 - Adds Support for Continuous Status Checking [#52](https://github.com/Lissy93/dashy/pull/52) +- Enables user to re-call the status check at a specified interval +- Processes interval in ms, and updates the traffic light when required + +## 1.2.3 - Bug Fix [PR #49](https://github.com/Lissy93/dashy/pull/49) +- Removes duplicate Docker env var, fixes #48 + +## 1.2.2 - Better Favicon Support +- Enables user to force direct/ local favicon fetching +- Adds support for additional favicon API, returning high-res app icons +- Adds support for generative icons + +## 1.2.1 - Bugfix [#44](https://github.com/Lissy93/dashy/pull/44) +- Fixes footer positioning on mobile, makes sticky, fixes #42 + +## 1.2.0 - Adds Writing Config to Disk from UI Functionality [PR #43](https://github.com/Lissy93/dashy/pull/43) +- Creates a new server endpoint for handling the backing up of a the file +- Adds backup existing file functionality +- Adds writing new file functionality +- Does error checking, testing and adds some security parameters +- Adds a radio button in the UI, so user chan choose save method +- Process config within the UI, convert to YAML, and write changes to disk + +## 1.1.8 - Bugfix [#40](https://github.com/Lissy93/dashy/pull/40) +- Status check tooltip was not visible in Material themes, raised in issue #39 + +## 1.1.7 - Adds Workspace View [PR #38](https://github.com/Lissy93/dashy/pull/38) +- Adds a new route, for the workspace view +- Builds the sidebar, which displays the users apps +- Loads the app into the workspace's main iframe when clicked +- Adds some collapsing functionality, better styles, subtle animations and theme support + +## 1.1.6 - Implements Status Indicators, and Monitoring Functionality [PR #34](https://github.com/Lissy93/dashy/pull/34) +- Wrote a Node endpoint for pinging the users desired services +- Added status checking functionality in frontend +- Build small traffic-light component to display status of users services +- Adds animations, and handles errors +- Writes docs, and tests code + +## 1.1.5 - Adds Authentication / Login Functionality [PR #32](https://github.com/Lissy93/dashy/pull/32) +- Enables the user to protect their dashboard behind a login screen +- Creates a Authentication handler to manage the hashing of passwords, and generation of a token +- Build a quick login form, where user can input username and password +- Adds a log out button + +## 1.1.4 - Support for Custom HTML Footer [PR #30](https://github.com/Lissy93/dashy/pull/30) +- Enables user to insert structure for the footer defined as HTML + +## 1.1.3 - Adds Support for 1-Click Cloud Deployments [PR #29](https://github.com/Lissy93/dashy/pull/29) +- Support for 1-Click Deploy to Netlify +- Support for 1-Click Deploy to Heroku + +## 1.1.2 - Docker Efficiency Improvements [PR #26](https://github.com/Lissy93/dashy/pull/26) +- Writes a Node health check script, and implements into the Docker container +- Changes default port in docker-compose, as 8080 is commonly used by other apps +- Adds the 1-Click deploy with PWD into the readme +- Updates dependencies +- Adds a getting started guide to the docs +- Adds splash screen for first load +- Deleted unused assets +- Makes linter run as a pre-commit hook +- Fixes lint errors in server.js and validate-config.js + +## 1.1.1 - Bug Fixes [PR #20](https://github.com/Lissy93/dashy/pull/20) + [PR #21](https://github.com/Lissy93/dashy/pull/21) +- Adds issue template +- Bug fixes + - Improves github PR and issue templates + - Shortens readme file + - Adds documentation in the docs folder + - Fixes Layout tab not showing in portrait #19 + - Improves mobile performance for both the settings, config and backup pop-ups + - Fixes issue where theme not applied on load when the settings are hidden + - Adds minimum dimensions to modalsShortens readme file + - Adds documentation in the docs folder + - Adds minimum dimensions to modals + +## 1.1.0 - Hotfix [#18](https://github.com/Lissy93/dashy/pull/18) +- Implementing the JSON validator had actually broken the entire JSON editor +- Fixed it by remove explicit use of Ajv, and using a derivative instead + +## 1.0.5 - Documentation [PR #16](https://github.com/Lissy93/dashy/pull/16) +- Previously there was very little documentation, this release fixed that +- Wrote specific docs for: + - Getting Started + - Configuring + - Backup & Restore + - Theming + - Developing + +## 1.0.0 - Implements Config Validation [PR #13](https://github.com/Lissy93/dashy/pull/13) +- Write a JSON schema for the conf.yml file +- Wrote a validation script to compare users config against schema +- Adds a formatter to print helpful messages about what needs fixing +- Implements validation process into build script +- Implements validation process into UI config configurator's validation + +## 0.9.5 - Brand New Docker Container [PR #12](https://github.com/Lissy93/dashy/pull/12) +- With help from several users, a new container based on Alpine is released +- A sample Docker Compose script is also written, and docs are updated +- A 1-Click button for deploying to Play-with-Docker is added to the Readme + +## 0.9.0 - Adds Hide Settings Functionality [PR #11](https://github.com/Lissy93/dashy/pull/11) +- Enables user to hide settings from UI +- Users preference is saved in local storage +- User can hide other structural elements of the UI from the config + +## 0.8.5 - Adds new Built-In Themes [PR #9](https://github.com/Lissy93/dashy/pull/9) +- Adds Minimal-Dark and Minimal-Light theme +- Adds Material-Dark and Material-Light theme +- Adds additional theme docs +- Adds option for sections to have items too + +## 0.8.0 - Implements Custom CSS Editor [PR: #8](https://github.com/Lissy93/dashy/pull/8) +- Adds a page in the config menu +- Adds syntax highlighting, CSS validation and sanitization +- Saves users CSS, and applies styles on page load + +## 0.7.5 - Adds Cloud Backup and Restore Feature [PR #6](https://github.com/Lissy93/dashy/pull/6) +- Creates a form for entering backup ID and decryption password +- Puts form in modal, and adds button to launch form, with custom icon +- Implemented the cryptography stuff for end-to-end data encryption +- Wrote and tested the backend, and deployed as a serverless function on CF workers +- On the frontend, users input is encrypted, and passed to backend cloud function +- Response from the backend is handles appropriately, and message displayed to the user +- Implements the restoring from server functionality, with data integrity checks + +## 0.7.0 - Support for Custom Nav Links [PR #4](https://github.com/Lissy93/dashy/pull/4) +- User can add custom nav bar links from the Config Settings menu +- Better UI styling to the config menu +- New icons inside buttons + +## 0.6.5 - UI Config Editor [PR #3](https://github.com/Lissy93/dashy/pull/3) +Adds the ability for the user to edit their configuration directly from the UI +- Edit all section and item data using a rich JSON editor +- Download/ backup conf.yml directly from the UI +- Edit site meta data: title, description, footer, etc +- Reset all locally stored data to the initial state +- Also includes a new toast component, for subtle notifications + +## 0.6.0 +- Adds option for a custom full-size background image +- Made footer customizable +- Fixes error being thrown when navbar links are empty + +## 0.5.5 +- Makes more specific color variables, which inherit base vars +- Makes it possible for users to write their own theme +- Fix some color edge cases +- Adds docs for theming + +## 0.5.0 +- Converts all SCSS variables to CSS variables +- Implements theme switching functionality +- Adds a dropdown menu, enabling user to select theme +- Adds an initial theme option to `appConfig.theme` +- Saves selected theme to local storage +- Wrote a ton of color themes + +## 0.4.5 +- Implements arrow key navigation + +## 0.4.0 +- Adds support for Font-Awesome icons +- Auto-loads font-awesome only when needed +- Adds support for SVG icons + +## 0.3.5 +- Shows opening method on hover +- Opening method can be specified in config, as `item[n].target` + +## 0.3.0 +- Docker support + +## 0.2.5 +- Huge code quality overhaul, now uses AirBnB style ESLint +- Adds in-code docs, removes unneeded code, moves reusable helpers into utils dir +- Adds a readme, records a demo gif and adds some basic deployment docs +- Removes dependencies which are not 100% necessary + +## 0.2.0 +- Implements collapsing functionality, for less used or very long sections +- Sections can read default state from `section[n].collapsed` within config +- After change, state of each section is stored in local storage + +## 0.1.5 +- Improves instant search functionality +- Implements keyboard navigation for selecting items +- Launch selected item with enter, or Ctrl + Enter to open in new tab + +## 0.1.0 +Project started. Forked from [Lissy93/Dash](https://github.com/Lissy93/dash) \ No newline at end of file diff --git a/.github/SECURITY.md b/.github/SECURITY.md new file mode 100644 index 00000000..3b9ba613 --- /dev/null +++ b/.github/SECURITY.md @@ -0,0 +1,29 @@ + +Security is taken very seriously + +## Supported Versions +The current versions, and previous minor versions and / or the past 5 versions are supported. Releases either older than 5 versions, or from the last major version are no longer maintained or monitored, and hence the security of which cannot be guaranteed. + +## Keeping your Instance of Dashy Secure +See [Docs: Management - Security](/docs/management.md#securing) + +## Reporting a Security Issue +If you think you've found a critical issue, please send an email to `security@mail.alicia.omg.lol`, to encrypt it, you can use [`0688 F8D3 4587 D954 E9E5 1FB8 FEDB 68F5 5C02 83A7`](https://keybase.io/aliciasykes/pgp_keys.asc?fingerprint=0688f8d34587d954e9e51fb8fedb68f55c0283a7). You should receive a response within 48 hours. + +All non-critical issues can be raised as a ticket. + +Please include the following information: +- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) +- Full paths of source file(s) related to the manifestation of the issue +- The location of the affected source code (tag/branch/commit or direct URL) +- Any special configuration required to reproduce the issue +- Step-by-step instructions to reproduce the issue +- Proof-of-concept or exploit code (if possible) +- Impact of the issue, including how an attacker might exploit the issue + +This info will help with finding and fixing the issue. + +Please use only English. + +## Issues That Should Not Be Raised +Please do not raise issues in this repo which relate to Vue or Vue CLI, we're already using the latest versions of these dependencies, so any issues here to be taken up with Vue. The same applies to other dev dependencies that are at the latest version. diff --git a/.github/SUPPORT.md b/.github/SUPPORT.md new file mode 100644 index 00000000..28b82425 --- /dev/null +++ b/.github/SUPPORT.md @@ -0,0 +1,5 @@ +# SUPPORT + +For help with getting Dashy up and running, please see the [Discussion](https://github.com/Lissy93/dashy/discussions). + +If you'd like to help support Dashy's future development, see [Contributing](/docs/contributing.md) \ No newline at end of file From dc8faa74a943e9fc2f1829e69a02c65bd72742b9 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 17:58:43 +0100 Subject: [PATCH 031/108] :memo: Lots of small updates to the readme --- README.md | 142 +++++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 104 insertions(+), 38 deletions(-) diff --git a/README.md b/README.md index c3628bcf..ea79fe18 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ You will need both [git](https://git-scm.com/downloads) and the latest or LTS ve - Build: `yarn build` - Run: `yarn start` -> See the Management docs for [all Dashy's commands](./docs/management.md#basic-commands) +> See docs [Full list of Dashy's commands](./docs/management.md#basic-commands) #### Deploy to the Cloud ☁️ @@ -116,15 +116,13 @@ Dashy supports 1-Click deployments on several popular cloud platforms. To spin u > For full configuration documentation, see: [**Configuring**](./docs/configuring.md) -Dashy is configured with a single [YAML](https://yaml.org/) file, located at `./public/conf.yml` (or `./app/public/conf.yml` for Docker). Any other optional user-customizable assets are also located in the `./public/` directory, e.g. `favicon.ico`, `manifest.json`, `robots.txt` and `web-icons/*`. If you are using Docker, the easiest way to method is to mount a Docker volume (e.g. `-v /root/my-local-conf.yml:/app/public/conf.yml`) +All of Dashy's configuration is specified in a single [YAML](https://yaml.org/) file, located at `./public/conf.yml` (or `./app/public/conf.yml` for Docker). You can find a complete list of available options in th [Configuring Docs](/docs/configuring.md). If you're using Docker, you'll probably want to pass this file in as a Docker volume (e.g. `-v /root/my-local-conf.yml:/app/public/conf.yml`). -In the production environment, the app needs to be rebuilt in order for changes to take effect. This should happen automatically, but can also be triggered by running `yarn build`, or `docker exec -it [container-id] yarn build` if you are using Docker (where container ID can be found by running `docker ps`). +The config can also be edited directly through the UI, with changes written to your conf.yml file. After making any modifications the app does need to be rebuilt, this should happen automatically but you can also trigger a build with `yarn build`, `docker exec -it [container-id] yarn build`, or directly through the UI. -You can check that your config matches Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json) before deploying, by running `yarn validate-config.` +You can check that your config is correct and valid, by running: `yarn validate-config`. This will validate that your configuration matches Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json). -It is now possible also possible to update Dashy's config directly through the UI, and have changes written to disk. You can disable this feature by setting: `appConfig.allowConfigEdit: false`. If you are using users within Dashy, then you need to be logged in to a user of `type: admin` in order to modify the configuration globally. You can also trigger a rebuild of the app through the UI (Settings --> Rebuild). - -You may find these [example config](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10) helpful for getting you started +Finally, you may find these [example config](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10) helpful for getting you started. **[⬆️ Back to Top](#dashy)** @@ -366,39 +364,85 @@ pageInfo: --- + +## Support 👨‍👩‍👦 + +### Getting Help 🙋‍♀️ + +> For general discussions, check out the [Discussions Board](https://github.com/Lissy93/dashy/discussions) + +If you're having trouble getting things up and running, feel free to ask a question. The best way to do so is in the [discussion](https://github.com/Lissy93/dashy/discussions), or if you think you think the issue is on Dashy's side, you can [raise a ticket](https://github.com/Lissy93/dashy/issues/new/choose). It's best to check the [docs](./docs) and [previous questions](https://github.com/Lissy93/dashy/issues?q=label%3A%22%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question%22+) first, as you'll likley find the solution there. + +### Raising Issues 🐛 + +Found a bug, or something that isn't working as you'd expect? Please raise it as an issue so that it can be resolved. Feature requests are also welcome. Similarlty, feedback is very useful, as it helps me know what areas of Dashy need some improvement. + +- [Raise a Bug 🐛](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D) +- [Submit a Feature Request 🦄](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A6%84+Feature+Request&template=feature-request---.md&title=%5BFEATURE_REQUEST%5D) +- [Share Feedback 🌈](https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%8C%88+Feedback&template=share-feedback---.md&title=%5BFEEDBACK%5D) + +### Supporting Dashy 💖 + +> For full details, and other ways you can help out, see: [**Contributing**](./docs/contributing.md) + +If you're using Dashy, and would like to help support it's development, then that would be awesome! Contributions of any type, however small are always very much appreciated, and you will be appropriatley credited for your effort. + +Several areas that we need a bit of help with at the moment are: +- Adding translations - If you speak a second language, help make Dashy availible to non-native English speakers by adding text for you're language +- Donate a small amount, by [Sponsoring @Lissy93 on GitHub](https://github.com/sponsors/Lissy93) (only if you can afford to), and you'll also recieve some extra perks! +- Community Engagement: Join the discussion, and help answer other users questions, or spread the word by sharing Dashy online or leaving a review / upvote. +- Share your dashboard in the [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-), to help provide inspiration for others +- Submit a PR, to add a new feature, fix a bug, update the docs, add a theme or something else + +[![Sponsor Lissy93 on GitHub](./docs/assets/sponsor-button.svg)](https://github.com/sponsors/Lissy93) + +### Credits 🏆 + +> For a full list of credits, and attributions to packages used within Dashy, see: [**Credits**](./docs/credits.md) + +Thank you so much to everyone who has helped with Dashy so far, every single contributuib is very much appreciated. + +**Sponsors** + +**Contributors** +**![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg)** + +**Packages** +- Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv) +- Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93 +[`prism.js`](https://github.com/PrismJS/prism) `MIT` +- Core: Vue.js, TypeScript, SCSS, Node.js, ESLint +- The backup & sync server uses [Cloudflare workers](https://workers.cloudflare.com/) plus [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) +- Services: The 1-Click demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). + ## Developing 🧱 > For full development documentation, see: [**Developing**](./docs/developing.md) +To set up the development environment: 1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy` 2. Install dependencies: `yarn` 3. Start dev server: `yarn dev` -Hot reload is enabled, so changes will be detected automatically, triggering the app to be rebuilt and refreshed. Ensure that all lint checks and tests are passing before pushing an code or deploying the app. +Hot reload is enabled, so changes will be automatically detected, compiled and refreshed. -If you are new to Vue.js or web development and want to learn more, [here are some resources](docs/developing.md#resources-for-beginners) to help get you started. Dashy is a pretty straight-forward application, so would make an ideal candidate for your first PR! +Like most Git repos, we are following the [Github Flow](https://guides.github.com/introduction/flow) standard. +1. Create a branch (or fork if you're not a collaborator) +2. Code some awesome stuff, then add and commit your changes +3. Create a Pull Request, complete the checklist and ensure the build succeeds +4. Follow up with any reviews on your code +5. Merge 🎉 -**[⬆️ Back to Top](#dashy)** +Branch names are specified in the following format: `[TYPE]/[TICKET]_[TITLE]`. E.g. `FEATURE/420_Awesome-feature` or `FIX/690_login-server-error`. ---- +Most commits have been using git commit emojis, see [gitmoji.dev](https://gitmoji.dev/) for what each emoji indicates. -## Contributing 😇 - -> For full contributing guide, see: [**Contributing**](/docs/contributing.md) - -Pull requests are welcome, and would by much appreciated! - -Some ideas for PRs include: bug fixes, improve the docs, submit a screenshot of your dashboard to the showcase, add new themes, implement a new widget, add or improve the display options, improve or refactor the code, or implement a new feature. - -Before you submit your pull request, please ensure the following: +Before you submit your pull request, please ensure you've checked off all the boxes in the template. For your PR to be merged, it must: - Must be backwards compatible -- All lint checks and tests must pass -- If a new option in the the config file is added, it needs to be added into the [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json), and documented in the [configuring](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md) guide -- If a new dependency is required, it must be essential, and it must be thoroughly checked out for security or efficiency issues -- Your pull request will need to be up-to-date with master, and the PR template must be filled in - -### Repo Status +- The build, lint and tests (run by GH actions) must pass +- There must not be any merge conflicts +**Repo Status**: ![Open PRs](https://flat.badgen.net/github/open-prs/lissy93/dashy?icon=github) ![Total PRs](https://flat.badgen.net/github/prs/lissy93/dashy?icon=github) ![GitHub commit activity](https://img.shields.io/github/commit-activity/m/lissy93/dashy?style=flat-square) @@ -434,19 +478,26 @@ For more general questions about any of the technologies used, [StackOverflow](h --- ## Documentation 📘 +#### Running Dashy +- [Deployment](/docs/deployment.md) - Getting Dashy up and running +- [Configuring](/docs/configuring.md) - Complete list of all available options in the config file +- [Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc +- [Troubleshooting](/docs/troubleshooting.md) - Common errors and problems, and how to fix them -- [Deployment](/docs/deployment.md) -- [Configuring](/docs/configuring.md) -- [Developing](/docs/developing.md) -- [Contributing](/docs/contributing.md) -- [User Guide](/docs/user-guide.md) -- [Troubleshooting](/docs/troubleshooting.md) -- [Backup & Restore](/docs/backup-restore.md) -- [Status Indicators](/docs/status-indicators.md) -- [Theming](/docs/theming.md) -- [Icons](/docs/icons.md) -- [Authentication](/docs/authentication.md) -- [Showcase](/docs/showcase.md) +#### Development and Contributing +- [Developing](/docs/developing.md) - Running Dashy development server locally, and general workflow +- [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors +- [Contributing](/docs/contributing.md) - How to contribute to Dashy +- [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard +- [Credits]() + +#### Feature Docs +- [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard +- [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature +- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps +- [Icons](/docs/icons.md) - Outline of all available icon types for sections and items +- [Language Switching](/docs/multi-language-support.md) +- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles **[⬆️ Back to Top](#dashy)** @@ -494,6 +545,21 @@ There are a few self-hosted web apps, that serve a similar purpose to Dashy. If **[⬆️ Back to Top](#dashy)** +--- + +## 🛣️ Roadmap + +> For past and future app updates, see: [**Changelog**](./docs/changelog.md) + + +The following features and tasks are planned for the near future. +- Widget support- cards showing live stats and interactive content from your self-hosted services +- UI Drag & Drop editor and visual configurator +- Conversion to TypeScript +- Improved test coverage + + **[⬆️ Back to Top](#dashy)** + --- ## License 📜 From 19536187cfa279fbb20f900cbb2b522e3786b3b8 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 17:59:59 +0100 Subject: [PATCH 032/108] :memo: Writes new contributing file --- docs/contributing.md | 20 +++++++++++++------- 1 file changed, 13 insertions(+), 7 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index d2e0c369..36b82ab0 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -2,14 +2,13 @@ First off, thank you for considering contributing towards Dashy! 🙌 There are several ways that you can help out (but don't feel you have to). -Any contributions, every contribution, however small will always be very much appreciated, and you will be appropriately credited in the readme - huge thank you to everyone who has helped so far. +Any contributions, however small will always be very much appreciated, and you will be appropriately credited in the readme - huge thank you to [everyone who has helped](/docs/credits.md) so far 💞 ## Submit a PR -Contributing to the code or documentation is super helpful. You can fix a bug, add a new feature or improve an existing one. I've written [several guides](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md) with step-by-step tutorials of common tasks within Dashy. For setting up the development envionment, outline of the standards, and understanding the PR flow, see the [Deployment Docs](https://github.com/Lissy93/dashy/blob/master/docs/deployment.md). And I've tried to keep the code neat and documentation thorough, so understanding what everything does should be fairly straight forward, but feel free to ask if you have any questions. +Contributing to the code or documentation is super helpful. You can fix a bug, add a new feature or improve an existing one. I've written [several guides](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md) to help you get started. For setting up the development environment, outline of the standards, and understanding the PR flow, see the [Development Docs](https://github.com/Lissy93/dashy/blob/master/docs/development.md). I've tried to keep the code neat and documentation thorough, so understanding what everything does should be fairly straight forward, but feel free to ask if you have any questions. ## Add Translations -If you speak another language, then adding translations would be really helpful, and you will be credited in the readme for your work. Multi-language support makes Dashy accessible for non-English speakers, which I feel is important. This is a very quick and easy task, , as all application text is located in [`locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json), so adding a new language is as simple as copying this file and translating the values. You don't have to translate it all, as any missing attributes will just fallback to English. For a full tutorial, see the [Translating Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations). - +If you speak another language, then adding translations would be really helpful, and you will be credited in the readme for your work. Multi-language support makes Dashy accessible for non-English speakers, which I feel is important. This is a very quick and easy task, as all application text is located in [`locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json), so adding a new language is as simple as copying this file and translating the values. You don't have to translate it all, as any missing attributes will just fallback to English. For a full tutorial, see the [Multi-Language Support Docs](https://github.com/Lissy93/dashy/blob/master/docs/multi-language-support.md). ## Raise a bug If you've found a bug, then please do raise it as an issue. This will help me know if there's something that needs fixing. Try and include as much detail as possible, such as your environment, steps to reproduce, any console output and maybe an example screenshot or recording if necessary. You can [Raise a Bug here](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D) 🐛. @@ -30,7 +29,6 @@ Dashy is on the following platforms, and if you could spare a few seconds to giv - GitHub ## Make a small donation - Please only do this is you can definitely afford to. Don't feel any pressure to donate anything, as Dashy and my other projects will always be 100% free, for everyone, for ever. [![Sponsor Lissy93 on GitHub](./assets/sponsor-button.svg)](https://github.com/sponsors/Lissy93) @@ -42,8 +40,17 @@ You can also send one-off small contriutions using crypto: - **ETH**: `0x0fc98cBf8bea932B4470C46C0FbE1ed1f6765017` / `aliciasykes.eth` - **XMR**: `471KZdxb6N63aABR4WYwMRjTVkc1p1x7wGsUTEF7AMYzL8L94A5pCuYWkosgJQ5Ze8Y2PscVCGZFJa3hDPg6MaDq47GUm8r` - ## Request a feature via BountySource +BountySource is a platform for sponsoring the development of certain features on open source projects. If there is a feature you'd like implemented into Dashy, but either isn't high enough priority or is deemed to be more work than it's worth, then you can instead contribute a bounty towards it's development. You won't pay a penny until your proposal is fully built, and you are satisfied with the result. This helps support the developers, and makes Dashy better for everyone. + +For more info, see [Dashy on Bounty Source](https://www.bountysource.com/teams/dashy) + +### Enable Anonymous Error Reporting +Enabling error tracking helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more stable and reliable long term. Error reporting is disabled by default, and no data will ever be sent to an external endpoint without your explicit consent. + +Sentry is used to identify, report and categorize errors. All statistics collected are anonymized and stored securely, for more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). + +To enable error reporting, just set: `appConfig.errorReporting: true`. --- @@ -51,7 +58,6 @@ You can also send one-off small contriutions using crypto: ![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg) - ### Star-Gazers Over Time ![Stargazers](https://starchart.cc/Lissy93/dashy.svg) From ce793039eb57b2883b2216d6e07754bae763c3e1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 18:00:55 +0100 Subject: [PATCH 033/108] :memo: Wrote a guide for Internationalization --- docs/multi-language-support.md | 164 +++++++++++++++++++++++++++++++++ 1 file changed, 164 insertions(+) create mode 100644 docs/multi-language-support.md diff --git a/docs/multi-language-support.md b/docs/multi-language-support.md new file mode 100644 index 00000000..360a2548 --- /dev/null +++ b/docs/multi-language-support.md @@ -0,0 +1,164 @@ +# Internationalization + +Internationalization is the process of making an application available in other languages. This is important, as not everyone is a native English speaker. + +## Available Languages + +An up-to-date list of all currently supported languages can be found in [`./src/utils/languages.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/languages.js). Languages are specified by their 2-digit [ISO-639 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (e.g. `en`, `fr`, `de`, `es`, etc) + +--- + +## How to change Language + +By default, Dashy will attempt to use the language of your browser or system. If a translation for your language does not yet exist, it will fallback to English. + +You can also manually select your language. This can be done, either through the UI (Config --> Language), or by setting it in your config file: +```yaml +appConfig: + lang: de +``` + +--- + +## Adding a new Language + +Dashy is using [vue-i18n](https://vue-i18n.intlify.dev/guide/) to manage multi-language support. + +Adding a new language is pretty straightforward, with just three steps: + +##### 1. Create a new Language File +Create a new JSON file in `./src/assets/locales` name is a 2-digit [ISO-639 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) for your language, E.g. for German `de.json`, French `fr.json` or Spanish `es.json` - You can find a list of all ISO codes at [iso.org](https://www.iso.org/obp/ui). +If your language is a specific dialect or regional language, then use the Posfix [CLDR](http://cldr.unicode.org/) format, where, e.g. `en-GB.json` (British), `es-MX.json` (Spanish, in Mexico) or `zh-CN.json` (Chinese, simplified) - A list of which can be found [here](https://github.com/unicode-org/cldr-json/blob/master/cldr-json/cldr-core/availableLocales.json) + + +##### 2. Translate! +Using [`en.json`](https://github.com/Lissy93/dashy/tree/master/src/assets/locales/en.json) as an example, translate the JSON values to your language, while leaving the keys as they are. It's fine to leave out certain items, as if they're missing they will fall-back to English. If you see any attribute which include curly braces (`{xxx}`), then leave the inner value of these braces as is, as this is for variables. + +```json +{ + "theme-maker": { + "export-button": "Benutzerdefinierte Variablen exportieren", + "reset-button": "Stile zurücksetzen für", + "show-all-button": "Alle Variablen anzeigen", + "save-button": "Speichern", + "cancel-button": "Abbrechen", + "saved-toast": "{theme} Erfolgreich aktualisiert", + "reset-toast": "Benutzerdefinierte Farben für {theme} entfernt" + }, +} +``` + +##### 3. Add your file to the app + +In [`./src/utils/languages.js`](https://github.com/Lissy93/dashy/tree/master/src/utils/languages.js), you need to do 2 small things: + +First import your new translation file, do this at the top of the page. +E.g. `import de from '@/assets/locales/de.json';` + +Second, add it to the array of languages, e.g: +```javascript +export const languages = [ + { + name: 'English', + code: 'en', + locale: en, + flag: '🇬🇧', + }, + { + name: 'German', // The name of your language + code: 'de', // The ISO code of your language + locale: de, // The name of the file you imported (no quotes) + flag: '🇩🇪', // An optional flag emoji + }, +]; +``` +You can also add your new language to the readme, under the [Language Switching](https://github.com/Lissy93/dashy#language-switching-) section and optionally include your name/ username if you'd like to be credited for your work. Done! + +If you are not comfortable with making pull requests, or do not want to modify the code, then feel free to instead send the translated file to me, and I can add it into the application. I will be sure to credit you appropriately. + +--- + +## Adding Text + +If you're working on a new component, then any text that is displayed to the user should be extracted out of the component, and stored in the file. This also applies to any existing components, that might have been forgotten to be translated. + +Thankfully, everything is already setup, and so is as easy as adding text to the JSON file, and pasting the key to that text in your component. + + +#### 1. Add Translated Text + +Firstly, go to [`./src/assets/locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json), and either find the appropriate section, or create a new section. Lets say you're new component is called `my-widget`, you could add `"my-widget": {}` to store all your text as key-value-pairs. E.g. + +```json +"my-widget": { + "awesome-text": "I am some text, that will be seen by the user" +} +``` + +Note that you **must** add English translations for all text. Missing languages are not a problem, as they will always fallback to Enslish, but if the English is missing, then nothing can be displayed. + + +#### 2. Use Text within Component + +Once your text is in the translation file, you can now use it within your component. There is a global `$t` function, with takes the key of your new translation, and returns the value. For example: + +```vue +

{{ $t('my-widget.awesome-text') }}

+``` + +Note that the `{{ }}` just tells Vue that this is JavaScript/ dynamic. +This will render: `

I am some text, that will be seen by the user

` + +If you need to display text programmatically, from within the components JavaScript (e.g. in a toast popup), then use `this.$t`. +For example: `alert(this.$t('my-widget.awesome-text'))`. + +You may also need to pass a variable to be displayed within a translation. Vue I18n supports [Interpolations](https://vue-i18n.intlify.dev/guide/essentials/syntax.html#interpolations) using mustache-like syntax. + +For example, you would set your translation to: +```json +{ + "welcome-message": "Hello {name}!" +} +``` + +And then pass that variable (`name`) within a JSON object as the second parameter on `$t`, like: +```vue +

{{ $t('welcome-message', { name: 'Alicia' }) }}

+``` + +Which will render: +```html +

Hello Alicia!

+``` + +There are many other advanced features, including Pluralization, Datetime & Number Formatting, Message Support and more, all of which are outlined in the [Vue-i18n Docs](https://vue-i18n.intlify.dev/guide/). + +#### Basic Example + +Using the search bar as an example, this would look something like: + +In [`./src/components/Settings/SearchBar.vue`](https://github.com/Lissy93/dashy/blob/master/src/components/Settings/SearchBar.vue): +```vue + +``` + +Then in [`./src/assets/locales/en.json`](https://github.com/Lissy93/dashy/blob/master/src/assets/locales/en.json): + +```json +{ +"search": { + "search-label": "Search", + "search-placeholder": "Start typing to filter", + }, + ... +} +``` From e74c1a25c62ecc2f2c4c2ede0630e17cbf949295 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 18:01:32 +0100 Subject: [PATCH 034/108] :memo: Adds Internationalization to contents --- docs/readme.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index 64fa3656..515778cb 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -11,10 +11,12 @@ - [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors - [Contributing](/docs/contributing.md) - How to contribute to Dashy - [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard +- [Credits]() ### Feature Docs +- [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard - [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature - [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps -- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles - [Icons](/docs/icons.md) - Outline of all available icon types for sections and items -- [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard +- [Language Switching](/docs/multi-language-support.md) +- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles From 31eda86ff21b163b9d7b566ca37b8c5caa1fd696 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 29 Jul 2021 18:02:31 +0100 Subject: [PATCH 035/108] :memo: Shortens enviornment section in development.md --- docs/developing.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/developing.md b/docs/developing.md index 6b4a15ba..ef9186bc 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -63,14 +63,14 @@ If you do add new variables, ensure that there is always a fallback (define it i ### Environment Modes -Both the Node app and Vue app supports several environments: `production`, `development` and `test`. You can set the environment using the `NODE_ENV` variable (either with your OS, in the Docker script or in an `.env` file - see [Environmental Variables](#environmental-variables) above). +You can set the environment using the `NODE_ENV` variable. +The correct environment will be selected based on the script you run by default +The following environments are supported. +- `production` +- `development` +- `test` -The production environment will build the app in full, minifying and streamlining all assets. This means that building takes longer, but the app will then run faster. Whereas the dev environment creates a webpack configuration which enables HMR, doesn't hash assets or create vendor bundles in order to allow for fast re-builds when running a dev server. It supports sourcemaps and other debugging tools, re-compiles and reloads quickly but is not optimized, and so the app will not be as snappy as it could be. The test environment is intended for test running servers, it ignores assets that aren't needed for testing, and focuses on running all the E2E, regression and unit tests. For more information, see [Vue CLI Environment Modes](https://cli.vuejs.org/guide/mode-and-env.html#modes). - -By default: -- `production` is used by `yarn build` (or `vue-cli-service build`) and `yarn build-and-start` and `yarn pm2-start` -- `development` is used by `yarn dev` (or `vue-cli-service serve`) -- `test` is used by `yarn test` (or `vue-cli-service test:unit`) +For more info, see [Vue CLI Environment Modes](https://cli.vuejs.org/guide/mode-and-env.html#modes). --- From b038c39f2b9b811a2f395040aaf4d9d3aa44d7e1 Mon Sep 17 00:00:00 2001 From: Niklas Zabel Date: Thu, 29 Jul 2021 19:29:27 +0200 Subject: [PATCH 036/108] add German language --- src/assets/locales/de.json | 142 +++++++++++++++++++++++++++++++++++++ src/utils/languages.js | 6 ++ 2 files changed, 148 insertions(+) create mode 100644 src/assets/locales/de.json diff --git a/src/assets/locales/de.json b/src/assets/locales/de.json new file mode 100644 index 00000000..99cddfbd --- /dev/null +++ b/src/assets/locales/de.json @@ -0,0 +1,142 @@ +{ + "home": { + "no-results": "keine Suchresultate", + "no-data": "keine Daten Konfiguriert" + }, + "search": { + "search-label": "Suche", + "search-placeholder": "Starte tippen um zu filtern", + "clear-search-tooltip": "Leere die Suche" + }, + "login": { + "title": "Dashy", + "username-label": "Username", + "password-label": "Passwort", + "login-button": "Login", + "remember-me-label": "Angemeldet bleiben für", + "remember-me-never": "Niemals", + "remember-me-hour": "4 Stunden", + "remember-me-day": "1 Tag", + "remember-me-week": "1 Woche" + }, + "config": { + "main-tab": "Config", + "view-config-tab": "zeige Config", + "edit-config-tab": "bearbeite Config", + "custom-css-tab": "eigene Styles", + "heading": "Konfiguration optionen", + "download-config-button": "Download Config", + "edit-config-button": "bearbeite Config", + "edit-css-button": "bearbeite Custom CSS", + "cloud-sync-button": "aktiviere Cloud Sync", + "edit-cloud-sync-button": "bearbeite Cloud Sync", + "rebuild-app-button": "Anwendung neu erstellen", + "change-language-button": "ändere App Sprache", + "reset-settings-button": "Lokale Einstellungen zurücksetzten", + "app-info-button": "App Info", + "backup-note": "Es wird empfohlen ein Backup der Konfiguration zu erstellen, bevor Änderungen durchgeführt werden.", + "reset-config-msg-l1": "Dadurch werden alle Benutzereinstellungen aus dem lokalen Speicher entfernt, hat jedoch keine Auswirkungen auf Ihre Datei 'conf.yml'.", + "reset-config-msg-l2": "Sie sollten zuerst alle Änderungen, die Sie lokal vorgenommen haben, sichern, wenn Sie sie in Zukunft verwenden möchten.", + "reset-config-msg-l3": "Sind Sie sicher, dass Sie fortfahren möchten?", + "data-cleared-msg": "Daten erfolgreich gelöscht", + "actions-label": "Aktionen", + "copy-config-label": "Config kopieren", + "data-copied-msg": "Config wurde in die Zwischenablage kopiert", + "reset-config-label": "Config zurücksetzten", + "css-save-btn": "Änderungen speichern", + "css-note-label": "Bemerkung", + "css-note-l1": "Sie müssen die Seite aktualisieren, damit Ihre Änderungen wirksam werden.", + "css-note-l2": "Stilüberschreibungen werden nur lokal gespeichert, daher wird empfohlen, eine Kopie Ihres CSS zu erstellen.", + "css-note-l3": "Um alle benutzerdefinierten Stile zu entfernen, löschen Sie den Inhalt und klicken Sie auf Änderungen speichern." + }, + "settings": { + "theme-label": "Theme", + "layout-label": "Layout", + "layout-auto": "Auto", + "layout-horizontal": "Horizontal", + "layout-vertical": "Vertikal", + "item-size-label": "Item größe", + "item-size-small": "klein", + "item-size-medium": "mittel", + "item-size-large": "groß", + "config-launcher-label": "Config" + }, + "updates": { + "app-version-note": "Dashy version", + "up-to-date": "Up-to-Date", + "out-of-date": "Update Verfügbar", + "unsupported-version-l1": "Sie verwenden eine nicht unterstützte Version von Dashy", + "unsupported-version-l2": "Für die beste Erfahrung und aktuelle Sicherheitspatches aktualisieren Sie bitte auf" + }, + "language-switcher": { + "title": "Ändere die Applikationssprache", + "dropdown-label": "Sprache Auswählen", + "save-button": "Speichern", + "success-msg": "Sprache geändert zu" + }, + "theme-maker": { + "title": "Theme Konfigurator", + "export-button": "Benutzerdefinierte Variablen exportieren", + "reset-button": "Styles zurücksetzen für", + "show-all-button": "Alle Variablen anzeigen", + "save-button": "Speichern", + "cancel-button": "Abbrechen", + "saved-toast": "{theme} wurde Erfolgreich geupdated", + "copied-toast": "Theme Daten für {theme} in Zwischenablage kopiert.", + "reset-toast": "Benutzerdefinierte Farben für {theme} entfernt" + }, + "config-editor": { + "save-location-label": "Speicherort", + "location-local-label": "Lokal", + "location-disk-label": "Änderungen in die Konfigurationsdatei schreiben", + "save-button": "speichere Änderungen", + "valid-label": "Config ist gültig", + "status-success-msg": "Aufgabe abgeschlossen", + "status-fail-msg": "Aufgabe fehlgeschlagen", + "success-msg-disk": "Konfigurationsdatei erfolgreich auf die Festplatte geschrieben", + "success-msg-local": "Lokale Änderungen erfolgreich gespeichert", + "success-note-l1": "Die App sollte automatisch rebuild werden.", + "success-note-l2": "Dies kann bis zu einer Minute dauern.", + "success-note-l3": "Sie müssen die Seite aktualisieren, damit die Änderungen wirksam werden.", + "error-msg-save-mode": "Bitte wählen Sie einen Speichermodus: Lokal oder Datei", + "error-msg-cannot-save": "Beim Speichern der Konfiguration ist ein Fehler aufgetreten", + "error-msg-bad-json": "Fehler in JSON, möglicherweise fehlerhaft", + "warning-msg-validation": "Validierungswarnung" + }, + "app-rebuild": { + "title": "Rebuild Application", + "rebuild-note-l1": "Damit die in die Datei conf.yml geschriebenen Änderungen wirksam werden, ist ein rebuild erforderlich.", + "rebuild-note-l2": "Dies sollte automatisch passieren, aber wenn nicht, können Sie es hier manuell auslösen.", + "rebuild-note-l3": "Dies ist bei lokal gespeicherten Änderungen nicht erforderlich.", + "rebuild-button": "Start Build", + "rebuilding-status-1": "Building...", + "rebuilding-status-2": "Das kann ein paar minuten dauern", + "error-permission": "Sie sind nicht berechtigt, diese Aktion auszulösen", + "success-msg": "Build erfolgreich abgeschlossen", + "fail-msg": "Build-Vorgang fehlgeschlagen", + "reload-note": "Ein Neuladen der Seite ist jetzt erforderlich, damit die Änderungen wirksam werden.", + "reload-button": "Seite neuladen" + }, + "cloud-sync": { + "title": "Cloud Backup & Wiederherstellung", + "intro-l1": "Cloud-Backup und Wiederherstellung ist eine optionale Funktion, mit der Sie Ihre Config in das Internet hochladen und dann auf einem anderen Gerät oder einer anderen Dashy-Instanz wiederherstellen können.", + "intro-l2": "Alle Daten sind vollständig Ende-zu-Ende mit AES verschlüsselt. Ihr Passwort wird als Schlüssel verwendet wird.", + "intro-l3": "Weitere Informationen finden Sie im", + "backup-title-setup": "Backup erstellen", + "backup-title-update": "Backup aktualisieren", + "password-label-setup": "Passwort auswählen", + "password-label-update": "Passwort eigeben", + "backup-button-setup": "Backup", + "backup-button-update": "Backup aktualisieren", + "backup-id-label": "Your Backup ID", + "backup-id-note": "Dies wird verwendet, um später aus Backups wiederherzustellen. Bewahren Sie es zusammen mit Ihrem Passwort an einem sicheren Ort auf.", + "restore-title": "Backup wiederherstellen", + "restore-id-label": "Restore ID", + "restore-password-label": "Passwort", + "restore-button": "wiederherstellen", + "backup-error-unknown": "Anfrage kann nicht verarbeitet werden", + "backup-error-password": "Falsches Passwort. Bitte geben Sie Ihr aktuelles Passwort ein.", + "backup-success-msg": "Erfolgreich beendet", + "restore-success-msg": "Config erfolgreich wiederhergestellt" + } + } \ No newline at end of file diff --git a/src/utils/languages.js b/src/utils/languages.js index 5c5ddc79..841d4fc5 100644 --- a/src/utils/languages.js +++ b/src/utils/languages.js @@ -9,6 +9,12 @@ export const languages = [ locale: en, flag: '🇬🇧', }, + { + name: 'German', + code: 'de', + locale: de, + flag: '🇩🇪', + }, // Including: // name - Human readable name for your language (e.g German) // code - ISO language code (e.g. de) From f5c2510da13596d0475f33b124d04e8deee01a27 Mon Sep 17 00:00:00 2001 From: Niklas Zabel Date: Thu, 29 Jul 2021 19:43:28 +0200 Subject: [PATCH 037/108] add German language --- src/utils/languages.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/utils/languages.js b/src/utils/languages.js index 841d4fc5..334e4574 100644 --- a/src/utils/languages.js +++ b/src/utils/languages.js @@ -1,5 +1,6 @@ // Locales - Import translation files here! import en from '@/assets/locales/en.json'; +import de from '@/assets/locales/de.json'; // Language data - Add your country name, locale code and imported file here export const languages = [ From e862f7f3a97a25d89c3f779df5a46548403989c6 Mon Sep 17 00:00:00 2001 From: Niklas Zabel Date: Thu, 29 Jul 2021 20:00:54 +0200 Subject: [PATCH 038/108] correction of typing errors --- src/assets/locales/en.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index eb638c34..b0ae0e40 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -111,8 +111,8 @@ "rebuild-button": "Start Build", "rebuilding-status-1": "Building...", "rebuilding-status-2": "This may take a few minutes", - "error-permission": "You do no have permission to trigger this action", - "success-msg": "Build completed succesfully", + "error-permission": "You don't have permission to trigger this action", + "success-msg": "Build completed successfully", "fail-msg": "Build operation failed", "reload-note": "A page reload is now required for changes to take effect", "reload-button": "Reload Page" From 848e707c5dca028a20b9d7beb75d360f77b5326e Mon Sep 17 00:00:00 2001 From: Niklas Zabel Date: Thu, 29 Jul 2021 20:25:07 +0200 Subject: [PATCH 039/108] section language of the README has been updated --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index bcf041bf..20f7ea3c 100644 --- a/README.md +++ b/README.md @@ -313,6 +313,7 @@ Alternatively, set you're language in the config file, under `appConfig.language #### Supported Languages - 🇬🇧 **English**: `en` +- 🇩🇪 **German**: `de` #### Add your Language I would love for Dashy to be available and comfortable to use for all, including non-native English speakers. If you speak another language, and have a few minutes to sapir, you're help with translating it would be very much appreciated. From 09096fe07611bad53d8fdba5012a5e0a4a9493c9 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 16:23:23 +0100 Subject: [PATCH 040/108] =?UTF-8?q?=F0=9F=93=9D=20Wrote=20changelog,=20req?= =?UTF-8?q?uested=20in=20#87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/CHANGELOG.md | 135 ++++++++++++++++++++++++------------------- 1 file changed, 77 insertions(+), 58 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index b48c939a..a3a48b96 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,37 +1,56 @@ # Changelog -## 1.4.5 -## 1.4.4 -## 1.4.3 -## 1.4.2 -## 1.4.1 -## 1.4.0 -## 1.3.9 -## 1.3.8 - Builds a Custom Theme Configurator -- Adds property to enable the user +## 🌐 1.4.5 - Adds German Translations [PR #107](https://github.com/Lissy93/dashy/pull/107) +- German language support, contributed by @Niklashere -## 1.3.7 - Enable Custom Styesheet in Docker [PR #92](https://github.com/Lissy93/dashy/pull/92) +## ✨ 1.4.4 - Adds Support for Logo Image [PR #105](https://github.com/Lissy93/dashy/pull/105) +- Adds option in config file for user to specify path to an image +- If found, will display said image in the header + +## ✨ 1.4.3 - Auto-Checks for Updates [PR #101](https://github.com/Lissy93/dashy/pull/101) and [PR #102](https://github.com/Lissy93/dashy/pull/102) +- Write a script to compare current version with git master version +- Periodically checks for updates, and displays message to user +- Enables user to disable update-checks in the config file +- Checks not using vulnerable version on project-build + +## ✨ 1.4.2 - Adds Multi-Language Support [PR #99](https://github.com/Lissy93/dashy/pull/99) +- Implements vue-i18n, sets object globally +- Extracts all text to a single JSON file +- Auto-detects users language, and applies, if availible +- Builds a form to let user manually select their language +- Lets users language be saved and read from local storage, or config file + +## ✨ 1.4.1 - Adds Support for Custom Key Bindings [PR #94](https://github.com/Lissy93/dashy/pull/94) +- Adds new attribute under item for saving numeric key binding +- Listens for keypress, and launches corresponding item, if found + +## ✨ 1.4.0 - Builds a Custom Theme Configurator +- Adds property to save custom theme variables +- Builds UI form, with color pickers, a pallette and popup +- Integrates the saving colors, and applying saved colors functionality + +## 🔨 1.3.9 - Enable Custom Styesheet in Docker [PR #92](https://github.com/Lissy93/dashy/pull/92) - Enables the user to pass a custom stylesheet in with Docker - Adds support for 1-Click deployment to Render.com -## 1.3.6 - Showcase [#91](https://github.com/Lissy93/dashy/pull/91) +## 🌟 1.3.8 - Showcase [#91](https://github.com/Lissy93/dashy/pull/91) - Adds @Shadowking001's screenshot to showcase -## 1.3.5 - Showcase [PR #84](https://github.com/Lissy93/dashy/pull/84) +## 🌟 1.3.7 - Showcase [PR #84](https://github.com/Lissy93/dashy/pull/84) - Adds @dtctek's screenshot to showcase -## 1.3.4 - Enables User to Hide Unwanted Components [PR #78](https://github.com/Lissy93/dashy/pull/78) +## ✨ 1.3.6 - Enables User to Hide Unwanted Components [PR #78](https://github.com/Lissy93/dashy/pull/78) - Adds several additional options to the config, allowing the user to hide structural components that they don't need - Including hideHeading, hideNav, hideSearch, hideSettings, hideFooter, hideSplashScreen -## 1.3.3 - Adds Support for Emoji Icons [PR #76](https://github.com/Lissy93/dashy/pull/76) +## ✨ 1.3.5 - Adds Support for Emoji Icons [PR #76](https://github.com/Lissy93/dashy/pull/76) - Enables user to use emojis for item and section icons - Adds a handler to convert Unicode, or Shortcode into an Emoji -## 1.3.2 - Showcase Addition [PR #75](https://github.com/Lissy93/dashy/pull/75) +## 🌟 1.3.4 - Showcase Addition [PR #75](https://github.com/Lissy93/dashy/pull/75) - Adds @cerealconyogurt's screenshot to the showcase -## 1.3.1 - UI Improvements [PR #73](https://github.com/Lissy93/dashy/pull/73) +## 💄 1.3.3 - UI Improvements [PR #73](https://github.com/Lissy93/dashy/pull/73) - New style of Large item - 2 new color themes - Added CSS variables for search label and footer background @@ -40,27 +59,27 @@ - Adds new optional font-face for cyber punk - Shortens readme, and adds contribute links to showcase -## 1.3.0 - Custom Headers for Status Check [PR #72](https://github.com/Lissy93/dashy/pull/72) +## ⚡️ 1.3.0 - Custom Headers for Status Check [PR #72](https://github.com/Lissy93/dashy/pull/72) - Enables user to pass custom headers to the status check endpoint - Enables user to use a different URL for the status check request -## 1.2.9 - Creates a Showcase Page [PR #68](https://github.com/Lissy93/dashy/pull/68) +## 🌟 1.2.9 - Creates a Showcase Page [PR #68](https://github.com/Lissy93/dashy/pull/68) - Adds a page in the docs for users to share their screenshots of their dashboard -## 1.2.8 - Adds Remember-Me Functionality into the Login Form [PR #66](https://github.com/Lissy93/dashy/pull/66) +## ✨ 1.2.8 - Adds Remember-Me Functionality into the Login Form [PR #66](https://github.com/Lissy93/dashy/pull/66) - Adds a dropdown menu in the login form with various time intervals available - Adds appropriate expiry into session storage, in order to keep user logged in for their desired time interval -## 1.2.7 - Implements a Right-Click Context Menu [#62](https://github.com/Lissy93/dashy/pull/62) +## ✨ 1.2.7 - Implements a Right-Click Context Menu [#62](https://github.com/Lissy93/dashy/pull/62) - Built a context menu, showing all item opening methods, on right-click - Made a clickOutside directive, in order to close menu when user clicks away - Adds launching functionality, user can click to launch -## 1.2.6 - Make Font Assets Local [PR #60](https://github.com/Lissy93/dashy/pull/60) +## ⚡️ 1.2.6 - Make Font Assets Local [PR #60](https://github.com/Lissy93/dashy/pull/60) - Downloaded font files to assets - Removed all calls to font CDN, replaced with local calls -## 1.2.5 - Small Fixes, and Efficiency Improvements [PR #57](https://github.com/Lissy93/dashy/pull/57) +## 🐛 1.2.5 - Small Fixes, and Efficiency Improvements [PR #57](https://github.com/Lissy93/dashy/pull/57) - Adds correct license - Improves service workers, and adds serviceWorkerStatus local storage item - Adds missing statusCheck and statusCheckInterval docs into Configuring.md @@ -78,22 +97,22 @@ - Enable passing website as URL param to the workspace - Modified items, so that title text doesn't get shortened, -## 1.2.4 - Adds Support for Continuous Status Checking [#52](https://github.com/Lissy93/dashy/pull/52) +## ✨ 1.2.4 - Adds Support for Continuous Status Checking [#52](https://github.com/Lissy93/dashy/pull/52) - Enables user to re-call the status check at a specified interval - Processes interval in ms, and updates the traffic light when required -## 1.2.3 - Bug Fix [PR #49](https://github.com/Lissy93/dashy/pull/49) +## 🐛 1.2.3 - Bug Fix [PR #49](https://github.com/Lissy93/dashy/pull/49) - Removes duplicate Docker env var, fixes #48 -## 1.2.2 - Better Favicon Support +## ✨ 1.2.2 - Better Favicon Support - Enables user to force direct/ local favicon fetching - Adds support for additional favicon API, returning high-res app icons - Adds support for generative icons -## 1.2.1 - Bugfix [#44](https://github.com/Lissy93/dashy/pull/44) +## 🐛 1.2.1 - Bugfix [#44](https://github.com/Lissy93/dashy/pull/44) - Fixes footer positioning on mobile, makes sticky, fixes #42 -## 1.2.0 - Adds Writing Config to Disk from UI Functionality [PR #43](https://github.com/Lissy93/dashy/pull/43) +## ✨ 1.2.0 - Adds Writing Config to Disk from UI Functionality [PR #43](https://github.com/Lissy93/dashy/pull/43) - Creates a new server endpoint for handling the backing up of a the file - Adds backup existing file functionality - Adds writing new file functionality @@ -101,36 +120,36 @@ - Adds a radio button in the UI, so user chan choose save method - Process config within the UI, convert to YAML, and write changes to disk -## 1.1.8 - Bugfix [#40](https://github.com/Lissy93/dashy/pull/40) +## 🐛 1.1.8 - Bugfix [#40](https://github.com/Lissy93/dashy/pull/40) - Status check tooltip was not visible in Material themes, raised in issue #39 -## 1.1.7 - Adds Workspace View [PR #38](https://github.com/Lissy93/dashy/pull/38) +## ✨ 1.1.7 - Adds Workspace View [PR #38](https://github.com/Lissy93/dashy/pull/38) - Adds a new route, for the workspace view - Builds the sidebar, which displays the users apps - Loads the app into the workspace's main iframe when clicked - Adds some collapsing functionality, better styles, subtle animations and theme support -## 1.1.6 - Implements Status Indicators, and Monitoring Functionality [PR #34](https://github.com/Lissy93/dashy/pull/34) +## ✨ 1.1.6 - Implements Status Indicators, and Monitoring Functionality [PR #34](https://github.com/Lissy93/dashy/pull/34) - Wrote a Node endpoint for pinging the users desired services - Added status checking functionality in frontend - Build small traffic-light component to display status of users services - Adds animations, and handles errors - Writes docs, and tests code -## 1.1.5 - Adds Authentication / Login Functionality [PR #32](https://github.com/Lissy93/dashy/pull/32) +## ✨ 1.1.5 - Adds Authentication / Login Functionality [PR #32](https://github.com/Lissy93/dashy/pull/32) - Enables the user to protect their dashboard behind a login screen - Creates a Authentication handler to manage the hashing of passwords, and generation of a token - Build a quick login form, where user can input username and password - Adds a log out button -## 1.1.4 - Support for Custom HTML Footer [PR #30](https://github.com/Lissy93/dashy/pull/30) +## 💄 1.1.4 - Support for Custom HTML Footer [PR #30](https://github.com/Lissy93/dashy/pull/30) - Enables user to insert structure for the footer defined as HTML -## 1.1.3 - Adds Support for 1-Click Cloud Deployments [PR #29](https://github.com/Lissy93/dashy/pull/29) +## 🚀 1.1.3 - Adds Support for 1-Click Cloud Deployments [PR #29](https://github.com/Lissy93/dashy/pull/29) - Support for 1-Click Deploy to Netlify - Support for 1-Click Deploy to Heroku -## 1.1.2 - Docker Efficiency Improvements [PR #26](https://github.com/Lissy93/dashy/pull/26) +## 🔧 1.1.2 - Docker Efficiency Improvements [PR #26](https://github.com/Lissy93/dashy/pull/26) - Writes a Node health check script, and implements into the Docker container - Changes default port in docker-compose, as 8080 is commonly used by other apps - Adds the 1-Click deploy with PWD into the readme @@ -141,7 +160,7 @@ - Makes linter run as a pre-commit hook - Fixes lint errors in server.js and validate-config.js -## 1.1.1 - Bug Fixes [PR #20](https://github.com/Lissy93/dashy/pull/20) + [PR #21](https://github.com/Lissy93/dashy/pull/21) +## 🐛 1.1.1 - Bug Fixes [PR #20](https://github.com/Lissy93/dashy/pull/20) + [PR #21](https://github.com/Lissy93/dashy/pull/21) - Adds issue template - Bug fixes - Improves github PR and issue templates @@ -154,11 +173,11 @@ - Adds documentation in the docs folder - Adds minimum dimensions to modals -## 1.1.0 - Hotfix [#18](https://github.com/Lissy93/dashy/pull/18) +## 🚑️ 1.1.0 - Hotfix [#18](https://github.com/Lissy93/dashy/pull/18) - Implementing the JSON validator had actually broken the entire JSON editor - Fixed it by remove explicit use of Ajv, and using a derivative instead -## 1.0.5 - Documentation [PR #16](https://github.com/Lissy93/dashy/pull/16) +## 📝 1.0.5 - Documentation [PR #16](https://github.com/Lissy93/dashy/pull/16) - Previously there was very little documentation, this release fixed that - Wrote specific docs for: - Getting Started @@ -167,35 +186,35 @@ - Theming - Developing -## 1.0.0 - Implements Config Validation [PR #13](https://github.com/Lissy93/dashy/pull/13) +## ✨ 1.0.0 - Implements Config Validation [PR #13](https://github.com/Lissy93/dashy/pull/13) - Write a JSON schema for the conf.yml file - Wrote a validation script to compare users config against schema - Adds a formatter to print helpful messages about what needs fixing - Implements validation process into build script - Implements validation process into UI config configurator's validation -## 0.9.5 - Brand New Docker Container [PR #12](https://github.com/Lissy93/dashy/pull/12) +## 🔧 0.9.5 - Brand New Docker Container [PR #12](https://github.com/Lissy93/dashy/pull/12) - With help from several users, a new container based on Alpine is released - A sample Docker Compose script is also written, and docs are updated - A 1-Click button for deploying to Play-with-Docker is added to the Readme -## 0.9.0 - Adds Hide Settings Functionality [PR #11](https://github.com/Lissy93/dashy/pull/11) +## ✨ 0.9.0 - Adds Hide Settings Functionality [PR #11](https://github.com/Lissy93/dashy/pull/11) - Enables user to hide settings from UI - Users preference is saved in local storage - User can hide other structural elements of the UI from the config -## 0.8.5 - Adds new Built-In Themes [PR #9](https://github.com/Lissy93/dashy/pull/9) +## 💄 0.8.5 - Adds new Built-In Themes [PR #9](https://github.com/Lissy93/dashy/pull/9) - Adds Minimal-Dark and Minimal-Light theme - Adds Material-Dark and Material-Light theme - Adds additional theme docs - Adds option for sections to have items too -## 0.8.0 - Implements Custom CSS Editor [PR: #8](https://github.com/Lissy93/dashy/pull/8) +## ✨ 0.8.0 - Implements Custom CSS Editor [PR: #8](https://github.com/Lissy93/dashy/pull/8) - Adds a page in the config menu - Adds syntax highlighting, CSS validation and sanitization - Saves users CSS, and applies styles on page load -## 0.7.5 - Adds Cloud Backup and Restore Feature [PR #6](https://github.com/Lissy93/dashy/pull/6) +## ✨ 0.7.5 - Adds Cloud Backup and Restore Feature [PR #6](https://github.com/Lissy93/dashy/pull/6) - Creates a form for entering backup ID and decryption password - Puts form in modal, and adds button to launch form, with custom icon - Implemented the cryptography stuff for end-to-end data encryption @@ -204,12 +223,12 @@ - Response from the backend is handles appropriately, and message displayed to the user - Implements the restoring from server functionality, with data integrity checks -## 0.7.0 - Support for Custom Nav Links [PR #4](https://github.com/Lissy93/dashy/pull/4) +## ✨ 0.7.0 - Support for Custom Nav Links [PR #4](https://github.com/Lissy93/dashy/pull/4) - User can add custom nav bar links from the Config Settings menu - Better UI styling to the config menu - New icons inside buttons -## 0.6.5 - UI Config Editor [PR #3](https://github.com/Lissy93/dashy/pull/3) +## ✨ 0.6.5 - UI Config Editor [PR #3](https://github.com/Lissy93/dashy/pull/3) Adds the ability for the user to edit their configuration directly from the UI - Edit all section and item data using a rich JSON editor - Download/ backup conf.yml directly from the UI @@ -217,18 +236,18 @@ Adds the ability for the user to edit their configuration directly from the UI - Reset all locally stored data to the initial state - Also includes a new toast component, for subtle notifications -## 0.6.0 +## ✨ 0.6.0 - Navbar, Footer and Background Image - Adds option for a custom full-size background image - Made footer customizable - Fixes error being thrown when navbar links are empty -## 0.5.5 +## ⚡️ 0.5.5 - Improved Theming - Makes more specific color variables, which inherit base vars - Makes it possible for users to write their own theme - Fix some color edge cases - Adds docs for theming -## 0.5.0 +## ✨ 0.5.0 - Theme Support - Converts all SCSS variables to CSS variables - Implements theme switching functionality - Adds a dropdown menu, enabling user to select theme @@ -236,36 +255,36 @@ Adds the ability for the user to edit their configuration directly from the UI - Saves selected theme to local storage - Wrote a ton of color themes -## 0.4.5 +## ✨ 0.4.5 - Keyboard Navigation - Implements arrow key navigation -## 0.4.0 +## ✨ 0.4.0 - Font Awesome Support - Adds support for Font-Awesome icons - Auto-loads font-awesome only when needed - Adds support for SVG icons -## 0.3.5 +## ✨ 0.3.5 - Opening Method - Shows opening method on hover - Opening method can be specified in config, as `item[n].target` -## 0.3.0 -- Docker support +## 🔨 0.3.0 - Docker +- Writes a Dockerfile -## 0.2.5 +## 🎨 0.2.5 - Code Quality, Docs and UI - Huge code quality overhaul, now uses AirBnB style ESLint - Adds in-code docs, removes unneeded code, moves reusable helpers into utils dir - Adds a readme, records a demo gif and adds some basic deployment docs - Removes dependencies which are not 100% necessary -## 0.2.0 +## ✨ 0.2.0 - Collapsible Sections - Implements collapsing functionality, for less used or very long sections - Sections can read default state from `section[n].collapsed` within config - After change, state of each section is stored in local storage -## 0.1.5 +## ⚡️ 0.1.5 - Search and Navigation - Improves instant search functionality - Implements keyboard navigation for selecting items - Launch selected item with enter, or Ctrl + Enter to open in new tab -## 0.1.0 -Project started. Forked from [Lissy93/Dash](https://github.com/Lissy93/dash) \ No newline at end of file +## 🎉 0.1.0 - Init +Project started. Forked from [Lissy93/Dash](https://github.com/Lissy93/dash) From 1f4b7737deeed4ac2801cef422089a9836ec1eae Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 16:29:45 +0100 Subject: [PATCH 041/108] :arrow_heading_down: Rebased from head --- README.md | 179 ++++++++++++++++--------------------------- docs/configuring.md | 7 +- docs/contributing.md | 2 +- 3 files changed, 73 insertions(+), 115 deletions(-) diff --git a/README.md b/README.md index ea79fe18..2f02d8a4 100644 --- a/README.md +++ b/README.md @@ -14,6 +14,40 @@ ![Current Version](https://img.shields.io/github/package-json/v/lissy93/dashy?style=flat-square&logo=azurepipelines&color=00af87) [![Known Vulnerabilities](https://snyk.io/test/github/lissy93/dashy/badge.svg)](https://snyk.io/test/github/lissy93/dashy) +
+ Contents +

+

+

+
+ ## Features 🌈 - Instant search by name, domain and tags - just start typing @@ -233,6 +267,8 @@ By default, this feature is off, but you can enable it globally by setting `appC ## Opening Methods 🖱️ +> For full documentation on views and opening methods, see: [**Alternate Views**](./docs/alternate-views.md) + One of the primary purposes of Dashy is to make launching commonly used apps and services as quick as possible. To aid in this, there are several different options on how items can be opened. You can configure your preference by setting the `target` property of any item, to one of the following values: - `sametab` - The app will be launched in the current tab - `newtab` - The app will be launched in a new tab @@ -280,6 +316,7 @@ Hit `Esc` at anytime to close any open apps, clear the search field, or hide any --- ## Config Editor ⚙️ +> For full config documentation, see: [**Configuring**](./docs/configuring.md) From the Settings Menu in Dashy, you can download, backup, edit and rest your config. An interactive editor makes editing the config file easy, it will tell you if you've got any errors. After making your changes, you can either apply them locally, or export into your main config file. After saving to the config file to the disk, the app will need to be rebuilt. This will happen automatically, but may take a few minutes. You can also manually trigger a rebuild from the Settings Menu. A full list of available config options can be found [here](./docs/configuring.md). It's recommend to make a backup of your configuration, as you can then restore it into a new instance of Dashy, without having to set it up again. [json2yaml](https://www.json2yaml.com/) is very useful for converting between YAML to JSON and visa versa. @@ -292,6 +329,7 @@ From the Settings Menu in Dashy, you can download, backup, edit and rest your co --- ## Language Switching 🌎 +> For full internationalization documentation, see: [**Multi-Language Support**](./docs/multi-language-support.md) Dashy has the ability to support multiple languages and locales. When available, you're language should be automatically detected and applied on load, based on your browser or systems settings. But you can also select a language through the UI, under Config --> Switch Language. @@ -304,30 +342,6 @@ Alternatively, set you're language in the config file, under `appConfig.language I would love for Dashy to be available and comfortable to use for all, including non-native English speakers. If you speak another language, and have a few minutes to sapir, you're help with translating it would be very much appreciated. There's not too much text to translate, and it's all located in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales), and you don't have to translate it all, as any missing items will just fallback to English. For more info, see the [Development Guides Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations), and feel free to reach out if you need any support. ---- - -## Sections & Items 🗃️ - -Dashy is made up of a series of sections, each containing a series of items. - -Section Features -- **Basics**: Each section must have a `name` and an array of `items`. Sections can also have an icon e.g. `icon: :rocket:`. This works the same way as item icons, so you can use Font Awesome, static images, emojis, etc. -- **Collapsing**: A section an be collapsed by clicking on it's name, useful for particularly long or less frequently used sections. Collapse state is remembered for next time you load the page, and you can also set `displayData.collapsed: true` on a given section. -- **Size**: You can change the size of a given section, by for example setting `displayData.cols: 2` to make a given section span 2 columns/ be double the width. Similarly `displayData.rows` can be used to set the height of a section by making is span more than rows. By default each of these properties are set to `1` -- **Grid Settings**: Within a given section, you can change how many items are displayed on each row or column, with `displayData.itemCountX` for horizontal count, and `displayData.itemCountY` for vertical count. -- **Colors**: You can give a custom color to a certain section with `displayData.color`, or pass other styles with `displayData.customStyles` -- **Layout**: From the UI, you can also choose a layout, either `grid`, `horizontal` or `vertical`, as well as set the size for items, either `small`, `medium` or `large`, and of course set a theme using the dropdown. -- For full list of section display options, see [`section.displayData` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectiondisplaydata-optional). - -Item Features -- **Basics**: Items can have a `title`, `description`, `URL` and `icon`. -- **Key Binding**: You can assign frequently used items a hotkey/ shortcut as a number, to quickly launch that app. E.g. if `hotkey: 6`, then pressing the number 6 will launch that application. -- **Opening Method**: Setting the `target` attribute will define how an item should be opened by default (either `newtab`, `sametab`, `modal` or `workspace`), or you can right-click on any item to see all options. -- **Status Checking**: Setting `statusCheck: true` will show a small traffic light next to that item, indicating weather the service is currently up/ online. You can also use a custom URL for status checks, with `statusCheckUrl` or pass some custom headers with `statusCheckHeaders`. -- **Color**: To change the text color of an item, use `color`, and `backgroundColor` for background. -- For full list of all item options, see [`section.item` docs](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#sectionitem) - - **[⬆️ Back to Top](#dashy)** --- @@ -336,13 +350,11 @@ Item Features Page settings are defined under [`pageInfo`](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#pageinfo). Here you can set things like title, sub-title, navigation links, footer text, etc -Custom links for the navigation menu are defined under [`pageInfo.navLinks`](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#pageinfonavlinks-optional). - -You can display either custom text or HTML in the footer, using the `pageInfo.footerText` attribute. - -To display a logo or image asset next to the title, set `pageInfo.logo` to the path to your picture (either local or remote). - -It's also possible to hide parts of the page that you do not need (e.g. navbar, footer, search, heading, etc). This is done using the [`appConfig.hideComponents`](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#appconfighidecomponents-optional) attribute. +- `title` - Your dashboard title, displayed in the header and browser tab +- `description` - Description of your dashboard, also displayed as a subtitle +- `logo` - The path to an image to display in the header (to the right of the title). This can be either local, where `/` is the root of `./public`, or any remote image, such as `https://i.ibb.co/yhbt6CY/dashy.png` +- `navLinks` - Optional list of a maximum of 6 links, which will be displayed in the navigation bar, see [`pageInfo.navLinks`](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md#pageinfonavlinks-optional) for structure +- `footerText` - Text to display in the footer (note that this will override the default footer content). This can also include HTML and inline CSS For example, a `pageInfo` section might look something like this: @@ -364,12 +376,11 @@ pageInfo: --- - ## Support 👨‍👩‍👦 ### Getting Help 🙋‍♀️ -> For general discussions, check out the [Discussions Board](https://github.com/Lissy93/dashy/discussions) +> For general discussions, check out the **[Discussions Board](https://github.com/Lissy93/dashy/discussions)** If you're having trouble getting things up and running, feel free to ask a question. The best way to do so is in the [discussion](https://github.com/Lissy93/dashy/discussions), or if you think you think the issue is on Dashy's side, you can [raise a ticket](https://github.com/Lissy93/dashy/issues/new/choose). It's best to check the [docs](./docs) and [previous questions](https://github.com/Lissy93/dashy/issues?q=label%3A%22%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question%22+) first, as you'll likley find the solution there. @@ -381,6 +392,8 @@ Found a bug, or something that isn't working as you'd expect? Please raise it as - [Submit a Feature Request 🦄](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A6%84+Feature+Request&template=feature-request---.md&title=%5BFEATURE_REQUEST%5D) - [Share Feedback 🌈](https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%8C%88+Feedback&template=share-feedback---.md&title=%5BFEEDBACK%5D) +**Issue Status** [![Resolution Time](http://isitmaintained.com/badge/resolution/lissy93/dashy.svg) ![Open Issues](http://isitmaintained.com/badge/open/lissy93/dashy.svg) ![Closed Issues](https://badgen.net/github/closed-issues/lissy93/dashy)](https://isitmaintained.com/project/lissy93/dashy) + ### Supporting Dashy 💖 > For full details, and other ways you can help out, see: [**Contributing**](./docs/contributing.md) @@ -402,12 +415,13 @@ Several areas that we need a bit of help with at the moment are: Thank you so much to everyone who has helped with Dashy so far, every single contributuib is very much appreciated. -**Sponsors** +#### Sponsors -**Contributors** -**![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg)** +#### Contributors +![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg) -**Packages** +#### Packages +Dashy was made possible thanks to the following packages and components. Full credit to their respective authors. - Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv) - Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93 [`prism.js`](https://github.com/PrismJS/prism) `MIT` @@ -415,6 +429,8 @@ Thank you so much to everyone who has helped with Dashy so far, every single con - The backup & sync server uses [Cloudflare workers](https://workers.cloudflare.com/) plus [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - Services: The 1-Click demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). +**[⬆️ Back to Top](#dashy)** + ## Developing 🧱 > For full development documentation, see: [**Developing**](./docs/developing.md) @@ -452,32 +468,8 @@ Before you submit your pull request, please ensure you've checked off all the bo **[⬆️ Back to Top](#dashy)** --- - -## Support 🙋‍♀️ - -> For general discussions, the [Discussions Board](https://github.com/Lissy93/dashy/discussions) is now active! - -If you've found a bug, or something that isn't working as you'd expect, please raise an issue, so that it can be resolved. Similarly, if you're having trouble getting things up and running, feel free to ask a question. Feature requests and feedback are also welcome, as it helps Dashy improve. - -- [Raise a Bug 🐛](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D) -- [Submit a Feature Request 🦄](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A6%84+Feature+Request&template=feature-request---.md&title=%5BFEATURE_REQUEST%5D) -- [Ask a Question 🤷‍♀️](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question&template=question------.md&title=%5BQUESTION%5D) -- [Share Feedback 🌈](https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%8C%88+Feedback&template=share-feedback---.md&title=%5BFEEDBACK%5D) - -[**Issue Status**](https://isitmaintained.com/project/lissy93/dashy) ![Resolution Time](http://isitmaintained.com/badge/resolution/lissy93/dashy.svg) ![Open Issues](http://isitmaintained.com/badge/open/lissy93/dashy.svg) ![Closed Issues](https://badgen.net/github/closed-issues/lissy93/dashy) - - -For more general questions about any of the technologies used, [StackOverflow](https://stackoverflow.com/questions/) may be more helpful first port of info - - If you need to get in touch securely with the author (me, Alicia Sykes), drop me a message at: -- **Email**: `alicia at omg dot lol` -- **Public Key** [`0688 F8D3 4587 D954 E9E5 1FB8 FEDB 68F5 5C02 83A7`](https://keybase.io/aliciasykes/pgp_keys.asc?fingerprint=0688f8d34587d954e9e51fb8fedb68f55c0283a7) - -**[⬆️ Back to Top](#dashy)** - ---- - ## Documentation 📘 +> For full docs, see: **[Documentation Contents](./docs/readme.md)** #### Running Dashy - [Deployment](/docs/deployment.md) - Getting Dashy up and running - [Configuring](/docs/configuring.md) - Complete list of all available options in the config file @@ -489,64 +481,20 @@ For more general questions about any of the technologies used, [StackOverflow](h - [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors - [Contributing](/docs/contributing.md) - How to contribute to Dashy - [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard -- [Credits]() +- [Credits](/docs/credits.md) - Shout out to the amazing people who have contributed so far #### Feature Docs - [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard - [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature - [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps - [Icons](/docs/icons.md) - Outline of all available icon types for sections and items -- [Language Switching](/docs/multi-language-support.md) +- [Language Switching](/docs/multi-language-support.md) - How to change language, add a language, or update text - [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles **[⬆️ Back to Top](#dashy)** --- -## Credits 🏆 - -### Contributors 👥 - -![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg) - -### Dependencies 🔗 - -This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them. - -##### Core -At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app. - -##### Frontend Components -- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` -- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` -- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` -- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` -- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` - - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` -- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` -- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT` - - Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT` - -##### Utilities -- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` -- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` -- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` - -##### Backup & Sync Server -Although the app is purely frontend, there is an optional cloud backup and restore feature. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - -##### External Services -The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). - -### Alternatives 🙌 - -There are a few self-hosted web apps, that serve a similar purpose to Dashy. If you're looking for a dashboard, and Dashy doesn't meet your needs, I highly recommend you check these projects out! -[HomeDash2](https://lamarios.github.io/Homedash2), [Homer](https://github.com/bastienwirtz/homer) (`Apache License 2.0`), [Organizr](https://organizr.app/) (`GPL-3.0 License`) and [Heimdall](https://github.com/linuxserver/Heimdall) (`MIT License`) - -**[⬆️ Back to Top](#dashy)** - ---- - ## 🛣️ Roadmap > For past and future app updates, see: [**Changelog**](./docs/changelog.md) @@ -560,6 +508,15 @@ The following features and tasks are planned for the near future. **[⬆️ Back to Top](#dashy)** +--- + +## Alternatives 🙌 + +There are a few self-hosted web apps, that serve a similar purpose to Dashy. If you're looking for a dashboard, and Dashy doesn't meet your needs, I highly recommend you check these projects out! +[HomeDash2](https://lamarios.github.io/Homedash2), [Homer](https://github.com/bastienwirtz/homer) (`Apache License 2.0`), [Organizr](https://organizr.app/) (`GPL-3.0 License`) and [Heimdall](https://github.com/linuxserver/Heimdall) (`MIT License`) + +**[⬆️ Back to Top](#dashy)** + --- ## License 📜 @@ -589,10 +546,10 @@ _There is no warranty that this app will work as expected, and the author cannot _liable for anything that goes wrong._ For more info, see TLDR Legal's [Explanation of MIT](https://tldrlegal.com/license/mit-license) -![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png?v8) - **[⬆️ Back to Top](#dashy)** --- -Dashy - A feature-rich dashboard for your homelab 🚀 | Product Hunt + +

+
diff --git a/docs/configuring.md b/docs/configuring.md index 3b03513c..a024031f 100644 --- a/docs/configuring.md +++ b/docs/configuring.md @@ -5,12 +5,13 @@ All app configuration is specified in [`/public/conf.yml`](https://github.com/Li Tips: - You may find it helpful to look at some sample config files to get you started, a collection of which can be found [here](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10) - You can check that your config file fits the schema, by running `yarn validate-config` -- After modifying your config, the app needs to be recompiled, by running `yarn build` - this happens automatically whilst the app is running -- It is recommended to make and keep a backup of your config file. You can download your current config through the UI either from the Config menu, or using the `/download` endpoint. +- After modifying your config, the app needs to be recompiled, by running `yarn build` - this happens automatically whilst the app is running if you're using Docker +- It is recommended to make and keep a backup of your config file. You can download your current config through the UI either from the Config menu, or using the `/download` endpoint. Alternatively, you can use the [Cloud Backup](./docs/backup-restore.md) feature. +- The config can also be modified directly through the UI, validated and written to the conf.yml file. - All fields are optional, unless otherwise stated. ### About YAML -If you're new to YAML, it's pretty straight-forward. The format is exactly the same as that of JSON, but instead of using curly braces, structure is denoted using whitespace. This [quick guide](https://linuxhandbook.com/yaml-basics/) should get you up to speed in a few minutes, for more advanced topics take a look at this [Wikipedia article](https://en.wikipedia.org/wiki/YAML) and for some practicle examples, the [Azure pipelines schema](https://docs.microsoft.com/en-us/azure/devops/pipelines/yaml-schema?view=azure-devops&tabs=schema%2Cparameter-schema) may be useful. +If you're new to YAML, it's pretty straight-forward. The format is exactly the same as that of JSON, but instead of using curly braces, structure is denoted using whitespace. This [quick guide](https://linuxhandbook.com/yaml-basics/) should get you up to speed in a few minutes, for more advanced topics take a look at this [Wikipedia article](https://en.wikipedia.org/wiki/YAML). ### Config Saving Methods When updating the config through the JSON editor in the UI, you have two save options: **Local** or **Write to Disk**. diff --git a/docs/contributing.md b/docs/contributing.md index 36b82ab0..3ae4efdc 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -45,7 +45,7 @@ BountySource is a platform for sponsoring the development of certain features on For more info, see [Dashy on Bounty Source](https://www.bountysource.com/teams/dashy) -### Enable Anonymous Error Reporting +## Enable Anonymous Error Reporting Enabling error tracking helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more stable and reliable long term. Error reporting is disabled by default, and no data will ever be sent to an external endpoint without your explicit consent. Sentry is used to identify, report and categorize errors. All statistics collected are anonymized and stored securely, for more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). From 8711944d1bbda89607b1245e51fc2e12a7528be3 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 16:33:14 +0100 Subject: [PATCH 042/108] :memo: Todo, write docs for alternate views --- docs/alternate-views.md | 0 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 docs/alternate-views.md diff --git a/docs/alternate-views.md b/docs/alternate-views.md new file mode 100644 index 00000000..e69de29b From 3fcad07e502750a729eb74ff7475eeb0932b89da Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 16:43:06 +0100 Subject: [PATCH 043/108] :memo: Changes section heading depth for support sec --- README.md | 29 +++++++++++++++-------------- 1 file changed, 15 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 2f02d8a4..832abda1 100644 --- a/README.md +++ b/README.md @@ -27,20 +27,17 @@
  • ☁ Cloud Backup & Sync
  • 💂 Authentication
  • 🚦 Status Indicators
  • -
  • 🖱️ Opening Methods
  • +
  • 🖱️ Opening Methods
  • 🔎 Searching and Shortcuts
  • -
  • ⚙️ Config Editor
  • +
  • ⚙️ Config Editor
  • 🌎 Language Switching
  • 🌳 Dashboard Info
  • -
  • 👨‍👩‍👦 Support -
  • 🧱 Developing
  • -
  • 📘 Documentation
  • +
  • 📘 Documentation
  • 🛣️ Roadmap
  • 🙌 Alternatives
  • 📜 License
  • @@ -376,15 +373,15 @@ pageInfo: --- -## Support 👨‍👩‍👦 - -### Getting Help 🙋‍♀️ +## Getting Help 🙋‍♀️ > For general discussions, check out the **[Discussions Board](https://github.com/Lissy93/dashy/discussions)** If you're having trouble getting things up and running, feel free to ask a question. The best way to do so is in the [discussion](https://github.com/Lissy93/dashy/discussions), or if you think you think the issue is on Dashy's side, you can [raise a ticket](https://github.com/Lissy93/dashy/issues/new/choose). It's best to check the [docs](./docs) and [previous questions](https://github.com/Lissy93/dashy/issues?q=label%3A%22%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question%22+) first, as you'll likley find the solution there. -### Raising Issues 🐛 +**[⬆️ Back to Top](#dashy)** + +## Raising Issues 🐛 Found a bug, or something that isn't working as you'd expect? Please raise it as an issue so that it can be resolved. Feature requests are also welcome. Similarlty, feedback is very useful, as it helps me know what areas of Dashy need some improvement. @@ -394,7 +391,9 @@ Found a bug, or something that isn't working as you'd expect? Please raise it as **Issue Status** [![Resolution Time](http://isitmaintained.com/badge/resolution/lissy93/dashy.svg) ![Open Issues](http://isitmaintained.com/badge/open/lissy93/dashy.svg) ![Closed Issues](https://badgen.net/github/closed-issues/lissy93/dashy)](https://isitmaintained.com/project/lissy93/dashy) -### Supporting Dashy 💖 +**[⬆️ Back to Top](#dashy)** + +## Supporting Dashy 💖 > For full details, and other ways you can help out, see: [**Contributing**](./docs/contributing.md) @@ -409,7 +408,9 @@ Several areas that we need a bit of help with at the moment are: [![Sponsor Lissy93 on GitHub](./docs/assets/sponsor-button.svg)](https://github.com/sponsors/Lissy93) -### Credits 🏆 +**[⬆️ Back to Top](#dashy)** + +## Credits 🏆 > For a full list of credits, and attributions to packages used within Dashy, see: [**Credits**](./docs/credits.md) @@ -424,7 +425,7 @@ Thank you so much to everyone who has helped with Dashy so far, every single con Dashy was made possible thanks to the following packages and components. Full credit to their respective authors. - Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv) - Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93 -[`prism.js`](https://github.com/PrismJS/prism) `MIT` +[`prism.js`](https://github.com/PrismJS/prism) - Core: Vue.js, TypeScript, SCSS, Node.js, ESLint - The backup & sync server uses [Cloudflare workers](https://workers.cloudflare.com/) plus [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - Services: The 1-Click demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). From 8ed777416ba2b8534fdab80b38576ad5eb8fad4a Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 19:54:41 +0100 Subject: [PATCH 044/108] :arrow_heading_up: Rebased from develop --- docs/readme.md | 8 +-- public/conf.yml | 131 +++++++++++++++++++++++++++++++++++++----------- 2 files changed, 107 insertions(+), 32 deletions(-) diff --git a/docs/readme.md b/docs/readme.md index 515778cb..4fd72f6e 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -3,20 +3,20 @@ ### Running Dashy - [Deployment](/docs/deployment.md) - Getting Dashy up and running - [Configuring](/docs/configuring.md) - Complete list of all available options in the config file -- [Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc +- [App Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc - [Troubleshooting](/docs/troubleshooting.md) - Common errors and problems, and how to fix them ### Development and Contributing - [Developing](/docs/developing.md) - Running Dashy development server locally, and general workflow - [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors -- [Contributing](/docs/contributing.md) - How to contribute to Dashy +- [Contributing](/docs/contributing.md) - How you can help keep Dashy alive - [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard -- [Credits]() +- [Credits](/docs/credits.md) - List of people and projects that have made Dashy possible ### Feature Docs - [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard - [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature -- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps - [Icons](/docs/icons.md) - Outline of all available icon types for sections and items - [Language Switching](/docs/multi-language-support.md) +- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps - [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles diff --git a/public/conf.yml b/public/conf.yml index 99c1cd80..0d91a873 100644 --- a/public/conf.yml +++ b/public/conf.yml @@ -1,33 +1,108 @@ --- pageInfo: - title: Dashy - navLinks: - - title: Home - path: / - - title: About - path: /about - - title: Source Code - path: https://github.com/Lissy93/dashy + title: Home Lab + description: Dashy + logo: https://i.ibb.co/yhbt6CY/dashy.png + #logo: /web-icons/dashy-logo.png appConfig: - theme: colorful - fontAwesomeKey: 0821c65656 + theme: nord-frost + language: en + disableUpdateChecks: false sections: -- name: Getting Started +- name: Productivity + displayData: + collapsed: false + cols: 2 items: - - title: Source - description: Source code and documentation on GitHub - icon: fab fa-github - url: https://github.com/Lissy93/dashy - - title: Issues - description: View currently open issues, or raise a new one - icon: fas fa-bug - url: https://github.com/Lissy93/dashy/issues - - title: Demo 1 - description: 'Live Demo #1' - icon: far fa-rocket - url: https://dashy-demo-1.netlify.app - - title: Demo 2 - description: 'Live Demo #2' - icon: fad fa-planet-ringed - url: https://dashy-demo-2.netlify.app - + - title: Archive Box + description: Web site archiving + icon: far fa-archive + - title: Baserow + description: Feature-rich dynamic tables (similar to Airtable) + icon: fal fa-table + - title: Bookstack + description: Self-hosted Wiki + icon: far fa-books + - title: Domain Mod + description: Manage domains and other internet assets + icon: fal fa-globe + - title: Firefly + description: Financial manager, for keeping track of expenses, income, budgets, etc + icon: far fa-piggy-bank + - title: Fresh RSS + description: RSS feed reader and news aggregator + icon: far fa-rss-square + - title: Git Tea + description: Git service, hosting mirrors of my public repos + icon: fab fa-git-alt + - title: LessPass + description: Deterministic stateless password manager + icon: far fa-key + - title: NextCloud + description: Cloud office suit and collaboration platform + icon: far fa-cloud + - title: Paperless + description: Scan, index, and archive physical paper documents + icon: far fa-paper-plane + - title: Photo Prism + description: Browsing, organizing, and sharing photos and albums + icon: far fa-images + - title: Standard Notes + description: Encrypted notes app, with extensions and desktop + mobile apps + icon: far fa-sticky-note + - title: Syncthing + description: Peer-to-peer file synchronization + icon: far fa-recycle + - title: VS Code Web + description: Cloud based VS Code development environment + icon: far fa-code + - title: XBrowserSync + description: Bookmarks, history and browser sync + icon: far fa-bookmark +- name: Firewall + items: + - title: OPNsense + description: Firewall Central Management + icon: far fa-sensor-fire + target: modal + - title: NetData + description: System resource usage on firewall + icon: far fa-digital-tachograph + - title: MalTrail + description: Malicious traffic detection system + icon: far fa-viruses + - title: Ntopng + description: Network traffic probe and network use monitor + icon: far fa-tachometer-alt-fastest + - title: Sensei + description: Additional data features + icon: far fa-chart-line + - title: Monit + description: Status of firewall system alerts + icon: far fa-monitor-heart-rate + - title: Firewall Logs + description: Real-time view of firewall data and logs + icon: far fa-file-spreadsheet + - title: WireGuard + description: Manage WireGuard client and server on firewall + icon: far fa-project-diagram +- name: Networks + items: + - title: Pi-Hole + description: DNS settings for ad & tracker blocking + icon: fab fa-raspberry-pi + - title: PiAlert + description: Presence monitoring and ARP scanning + icon: far fa-engine-warning + - title: SmokePing + description: Network latency monitoring + icon: far fa-smoke + - title: StatPing + description: Up-time monitoring for local service + icon: far fa-chart-network + - title: LibreSpeed + description: Local network speed and latency test + icon: far fa-rabbit-fast + - title: Grafana + description: Data visualised on dashboards + icon: far fa-analytics From 07f9150924c586f1f21a4fec695fcb76f9326ac3 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 19:57:32 +0100 Subject: [PATCH 045/108] :construction: Reverted conf.yml to demo data --- public/conf.yml | 131 +++++++++++------------------------------------- 1 file changed, 28 insertions(+), 103 deletions(-) diff --git a/public/conf.yml b/public/conf.yml index 0d91a873..2bc33c90 100644 --- a/public/conf.yml +++ b/public/conf.yml @@ -1,108 +1,33 @@ --- pageInfo: - title: Home Lab - description: Dashy - logo: https://i.ibb.co/yhbt6CY/dashy.png - #logo: /web-icons/dashy-logo.png + title: Dashy + navLinks: + - title: Home + path: / + - title: About + path: /about + - title: Source Code + path: https://github.com/Lissy93/dashy appConfig: - theme: nord-frost - language: en - disableUpdateChecks: false + theme: colorful + fontAwesomeKey: 0821c65656 sections: -- name: Productivity - displayData: - collapsed: false - cols: 2 +- name: Getting Started items: - - title: Archive Box - description: Web site archiving - icon: far fa-archive - - title: Baserow - description: Feature-rich dynamic tables (similar to Airtable) - icon: fal fa-table - - title: Bookstack - description: Self-hosted Wiki - icon: far fa-books - - title: Domain Mod - description: Manage domains and other internet assets - icon: fal fa-globe - - title: Firefly - description: Financial manager, for keeping track of expenses, income, budgets, etc - icon: far fa-piggy-bank - - title: Fresh RSS - description: RSS feed reader and news aggregator - icon: far fa-rss-square - - title: Git Tea - description: Git service, hosting mirrors of my public repos - icon: fab fa-git-alt - - title: LessPass - description: Deterministic stateless password manager - icon: far fa-key - - title: NextCloud - description: Cloud office suit and collaboration platform - icon: far fa-cloud - - title: Paperless - description: Scan, index, and archive physical paper documents - icon: far fa-paper-plane - - title: Photo Prism - description: Browsing, organizing, and sharing photos and albums - icon: far fa-images - - title: Standard Notes - description: Encrypted notes app, with extensions and desktop + mobile apps - icon: far fa-sticky-note - - title: Syncthing - description: Peer-to-peer file synchronization - icon: far fa-recycle - - title: VS Code Web - description: Cloud based VS Code development environment - icon: far fa-code - - title: XBrowserSync - description: Bookmarks, history and browser sync - icon: far fa-bookmark -- name: Firewall - items: - - title: OPNsense - description: Firewall Central Management - icon: far fa-sensor-fire - target: modal - - title: NetData - description: System resource usage on firewall - icon: far fa-digital-tachograph - - title: MalTrail - description: Malicious traffic detection system - icon: far fa-viruses - - title: Ntopng - description: Network traffic probe and network use monitor - icon: far fa-tachometer-alt-fastest - - title: Sensei - description: Additional data features - icon: far fa-chart-line - - title: Monit - description: Status of firewall system alerts - icon: far fa-monitor-heart-rate - - title: Firewall Logs - description: Real-time view of firewall data and logs - icon: far fa-file-spreadsheet - - title: WireGuard - description: Manage WireGuard client and server on firewall - icon: far fa-project-diagram -- name: Networks - items: - - title: Pi-Hole - description: DNS settings for ad & tracker blocking - icon: fab fa-raspberry-pi - - title: PiAlert - description: Presence monitoring and ARP scanning - icon: far fa-engine-warning - - title: SmokePing - description: Network latency monitoring - icon: far fa-smoke - - title: StatPing - description: Up-time monitoring for local service - icon: far fa-chart-network - - title: LibreSpeed - description: Local network speed and latency test - icon: far fa-rabbit-fast - - title: Grafana - description: Data visualised on dashboards - icon: far fa-analytics + - title: Source + description: Source code and documentation on GitHub + icon: fab fa-github + url: https://github.com/Lissy93/dashy + - title: Issues + description: View currently open issues, or raise a new one + icon: fas fa-bug + url: https://github.com/Lissy93/dashy/issues + - title: Demo 1 + description: 'Live Demo #1' + icon: far fa-rocket + url: https://dashy-demo-1.netlify.app + - title: Demo 2 + description: 'Live Demo #2' + icon: fad fa-planet-ringed + url: https://dashy-demo-2.netlify.app + \ No newline at end of file From d1801c6b268d127073c405ef0518ec1e6543c43d Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 30 Jul 2021 20:05:34 +0100 Subject: [PATCH 046/108] :wrench: Sets editor to use LF UTF-8 by default --- .editorconfig | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/.editorconfig b/.editorconfig index 7053c49a..f34b86fd 100644 --- a/.editorconfig +++ b/.editorconfig @@ -1,5 +1,24 @@ +root = true + +# Basics - All Files +[*] +end_of_line = lf +charset = utf-8 +insert_final_newline = true + +# JS, TS and Vue [*.{js,jsx,ts,tsx,vue}] indent_style = space indent_size = 2 trim_trailing_whitespace = true insert_final_newline = true + +# YAML, for config file +[*.{yml,yaml}] +indent_size = 2 + +# Markdown for docs +[*.md] +trim_trailing_whitespace = false + +# Licensed under MIT, (C) 2021 Alicia Sykes \ No newline at end of file From 66b3f598cf4b8618b5b489591ffa2679a50974a8 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 14:11:09 +0100 Subject: [PATCH 047/108] =?UTF-8?q?=E2=9A=96=EF=B8=8F=20Updates=20MIT=20X1?= =?UTF-8?q?1=20License?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GitHub wasn't correctly detecting the license type, I think it was because the formatting was off, or there was a typo, so I've regenerated it. 🤞 This should now work. --- LICENSE | 32 ++++++++++++++++++-------------- 1 file changed, 18 insertions(+), 14 deletions(-) diff --git a/LICENSE b/LICENSE index 05cc619f..73fe53af 100644 --- a/LICENSE +++ b/LICENSE @@ -1,17 +1,21 @@ -Licensed under MIT X11. Copyright © 2021 Alicia Sykes +MIT License -Permission is hereby granted, free of charge, to any person obtaining a copy of this -software and associated documentation files (the “Software”), to deal in the Software -without restriction, including without limitation the rights to use, copy, modify, merge, -publish, distribute, sublicense, and/or sell copies of the Software, and to permit -persons to whom the Software is furnished to do so, subject to the following conditions: +Copyright (c) 2021 Alicia Sykes -The above copyright notice and this permission notice shall be included in all copies or -substantial portions of the Software. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: -THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, -INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR -PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, -TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAREOR THE USE -OR OTHER DEALINGS IN THE SOFTWARE. +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. From b9fa5e9b9fafc5f6f1e203eef31af708f9e3cf8a Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 15:31:33 +0100 Subject: [PATCH 048/108] :man_judge: Adds dependency licenses, and includes FOSSA summary --- .github/LEGAL.md | 1002 ++++++++++++++++++++++++++++++++++++++++++++++ README.md | 11 + 2 files changed, 1013 insertions(+) create mode 100644 .github/LEGAL.md diff --git a/.github/LEGAL.md b/.github/LEGAL.md new file mode 100644 index 00000000..1b5eb89d --- /dev/null +++ b/.github/LEGAL.md @@ -0,0 +1,1002 @@ +# 3rd-Party Software for [dashy](https://github.com/lissy93/dashy) + +The following 3rd-party software packages may be used by or distributed with **dashy**. + +## Direct Dependencies + +| Package | Licenses | +| --------------------------------------------------------------------- | --------------------------------------------------------------- | +| **[ajv (8.6.2)](#ajv-8-6-2)** | MIT | +| **[axios (0.21.1)](#axios-0-21-1)** | MIT | +| **[body-parser (1.19.0)](#body-parser-1-19-0)** | MIT | +| **[connect (3.7.0)](#connect-3-7-0)** | MIT | +| **[crypto-js (4.1.1)](#crypto-js-4-1-1)** | MIT | +| **[highlight.js (11.1.0)](#highlight.js-11-1-0)** | **Multi-license:** BSD-2-Clause _OR_ BSD-3-Clause, BSD-3-Clause | +| **[js-yaml (4.1.0)](#js-yaml-4-1-0)** | MIT | +| **[npm-run-all (4.1.5)](#npm-run-all-4-1-5)** | MIT | +| **[prismjs (1.24.1)](#prismjs-1-24-1)** | MIT | +| **[register-service-worker (1.7.2)](#register-service-worker-1-7-2)** | MIT | +| **[remedial (1.0.8)](#remedial-1-0-8)** | **Multi-license:** Apache-2.0 _OR_ MIT | +| **[serve-static (1.14.1)](#serve-static-1-14-1)** | MIT | +| **[v-jsoneditor (1.4.4)](#v-jsoneditor-1-4-4)** | MIT | +| **[v-tooltip (2.1.3)](#v-tooltip-2-1-3)** | MIT | +| **[vue (2.6.14)](#vue-2-6-14)** | MIT | +| **[vue-cli-plugin-yaml (1.0.2)](#vue-cli-plugin-yaml-1-0-2)** | MIT | +| **[vue-i18n (8.25.0)](#vue-i18n-8-25-0)** | MIT | +| **[vue-js-modal (2.0.0-rc.6)](#vue-js-modal-2-0-0-rc-6)** | MIT | +| **[vue-material-tabs (0.1.6)](#vue-material-tabs-0-1-6)** | MIT | +| **[vue-prism-editor (1.2.2)](#vue-prism-editor-1-2-2)** | MIT | +| **[vue-router (3.5.2)](#vue-router-3-5-2)** | MIT | +| **[vue-select (3.12.2)](#vue-select-3-12-2)** | MIT | +| **[vue-swatches (2.1.1)](#vue-swatches-2-1-1)** | MIT | +| **[vue-toasted (1.1.28)](#vue-toasted-1-1-28)** | MIT | + +### Details + +#### **ajv (8.6.2)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2015-2021 Evgeny Poberezkin + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **axios (0.21.1)** + +- Declared License(s) + + - MIT + + - Attribution: + Copyright (c) 2014-present Matt Zabriskie + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **body-parser (1.19.0)** + +- Declared License(s) + + - MIT + + - Attribution: + (The MIT License) + + Copyright (c) 2014 Jonathan Ong + Copyright (c) 2014-2015 Douglas Christopher Wilson + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **connect (3.7.0)** + +- Declared License(s) + + - MIT + + - Attribution: + (The MIT License) + + Copyright (c) 2010 Sencha Inc. + Copyright (c) 2011 LearnBoost + Copyright (c) 2011-2014 TJ Holowaychuk + Copyright (c) 2015 Douglas Christopher Wilson + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **crypto-js (4.1.1)** + +- Declared License(s) + + - MIT + + - Attribution: + \# License + + [The MIT License (MIT)](http://opensource.org/licenses/MIT) + + Copyright (c) 2009-2013 Jeff Mott + Copyright (c) 2013-2016 Evan Vosberg + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + - BSD-2-Clause + +--- + +--- + +#### **highlight.js (11.1.0)** + +- Declared License(s) + + - **Multi-license:** BSD-2-Clause + + - Attribution: + Copyright (c) 2021, highlight.js Contributors<> + All rights reserved.<> + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + 1. Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + 2. Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + + and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. _OR_ BSD-3-Clause + + - Attribution: + BSD 3-Clause License + + Copyright (c) 2006, Ivan Sagalaev. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + \* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + \* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + \* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + - BSD-3-Clause + + - Attribution: + BSD 3-Clause License + + Copyright (c) 2006, Ivan Sagalaev. + All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are met: + + \* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + + \* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + + \* Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" + AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR + SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER + CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +- Discovered License(s) + - MIT + - CC-BY-SA-4.0 + - **Multi-license:** MIT _OR_ PHP-3.01 + - public-domain + +--- + +--- + +#### **js-yaml (4.1.0)** + +- Declared License(s) + + - MIT + + - Attribution: + (The MIT License) + + Copyright (C) 2011-2015 by Vitaly Puzrin + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **npm-run-all (4.1.5)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2015 Toru Nagashima + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **prismjs (1.24.1)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT LICENSE + + Copyright (c) 2012 Lea Verou + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **register-service-worker (1.7.2)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2013-present, Yuxi (Evan) You + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **remedial (1.0.8)** + +- Declared License(s) + + - **Multi-license:** Apache-2.0 + + - Attribution: + Copyright 2018 AJ ONeal + + This is open source software; you can redistribute it and/or modify it under the + terms of either: + + a) the "MIT License" + b) the "Apache-2.0 License" + + MIT License + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + + Apache-2.0 License Summary + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. + _OR_ MIT + + - Attribution: + Copyright (c) 2018 AJ ONeal + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **serve-static (1.14.1)** + +- Declared License(s) + + - MIT + + - Attribution: + (The MIT License) + + Copyright (c) 2010 Sencha Inc. + Copyright (c) 2011 LearnBoost + Copyright (c) 2011 TJ Holowaychuk + Copyright (c) 2014-2016 Douglas Christopher Wilson + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + 'Software'), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **v-jsoneditor (1.4.4)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2018 + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **v-tooltip (2.1.3)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2018 Guillaume Chau (alias Akryum) + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue (2.6.14)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2013-present, Yuxi (Evan) You + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. + +- Discovered License(s) + - Apache-2.0 + - GPL-2.0-or-later + +--- + +--- + +#### **vue-cli-plugin-yaml (1.0.2)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2018 Eduardo Hidalgo H + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-i18n (8.25.0)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2016 kazuya kawaguchi + + Permission is hereby granted, free of charge, to any person obtaining a copy of + this software and associated documentation files (the "Software"), to deal in + the Software without restriction, including without limitation the rights to + use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of + the Software, and to permit persons to whom the Software is furnished to do so, + subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS + FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR + COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER + IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN + CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-js-modal (2.0.0-rc.6)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2017 Yev Vlasenko + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-material-tabs (0.1.6)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2021 Jairo Blatt + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-prism-editor (1.2.2)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2020 Mesut Koca + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-router (3.5.2)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2013-present Evan You + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-select (3.12.2)** + +- Declared License(s) + + - MIT + + - Attribution: + The MIT License (MIT) + + Copyright (c) 2016 Jeff Sagal & vue-select contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-swatches (2.1.1)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2018 - Present Diego Jara + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +#### **vue-toasted (1.1.28)** + +- Declared License(s) + + - MIT + + - Attribution: + MIT License + + Copyright (c) 2017 Shakeeb Sadikeen + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. + +- Discovered License(s) + +--- + +--- + +[fossa]: # "Do not touch the comments below" +[fossa]: # "==depsig=e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855==" diff --git a/README.md b/README.md index ce6cd7a8..d6836d15 100644 --- a/README.md +++ b/README.md @@ -419,6 +419,9 @@ Thank you so much to everyone who has helped with Dashy so far, every single con #### Sponsors +Huge thanks to the sponsors helping to support Dashy's development! + + #### Contributors ![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg) @@ -522,6 +525,8 @@ There are a few self-hosted web apps, that serve a similar purpose to Dashy. If --- ## License 📜 +Dashy is License under [MIT X11](https://en.wikipedia.org/wiki/MIT_License) + ``` Copyright © 2021 Alicia Sykes @@ -540,6 +545,10 @@ PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAREOR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +Except as contained in this notice, Dashy shall not be used in advertising or otherwise +to promote the sale, use or other dealings in this Software without prior written +authorization from the repo owner. ``` **TDLR;** _You can do whatever you like with Dashy: use it in private or commercial settings,_ @@ -548,6 +557,8 @@ _There is no warranty that this app will work as expected, and the author cannot _liable for anything that goes wrong._ For more info, see TLDR Legal's [Explanation of MIT](https://tldrlegal.com/license/mit-license) +[![FOSSA Status](https://app.fossa.com/api/projects/git%2Bgithub.com%2FLissy93%2Fdashy.svg?type=large)](https://app.fossa.com/projects/git%2Bgithub.com%2FLissy93%2Fdashy?ref=badge_large) + **[⬆️ Back to Top](#dashy)** --- From 626c298692fc3a8d7196cb051470d66eab4ec7a1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 15:32:32 +0100 Subject: [PATCH 049/108] :octocat: Adds an action to fetch, generate and insert Dashy's sponsors into Credits --- .github/workflows/insert-sponsors.yml | 23 +++++++++++++++ docs/credits.md | 42 +++++++++++++++++++++++++++ 2 files changed, 65 insertions(+) create mode 100644 .github/workflows/insert-sponsors.yml diff --git a/.github/workflows/insert-sponsors.yml b/.github/workflows/insert-sponsors.yml new file mode 100644 index 00000000..bd96dd64 --- /dev/null +++ b/.github/workflows/insert-sponsors.yml @@ -0,0 +1,23 @@ +# Generates a list of sponsors, and inserts it into specified files +# where the `` tag is +name: Inserts Current Sponsors in Readme +on: + workflow_dispatch + release: + types: [published] +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout 🛎️ + uses: actions/checkout@v2 + - name: Generate Sponsors in Readme 💖 + uses: JamesIves/github-sponsors-readme-action@1.0.5 + with: + token: ${{ secrets.PAT }} + file: 'README.md' + - name: Generate Sponsors in Credits 💖 + uses: JamesIves/github-sponsors-readme-action@1.0.5 + with: + token: ${{ secrets.PAT }} + file: 'docs/credits.md' diff --git a/docs/credits.md b/docs/credits.md index e69de29b..19f76da8 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -0,0 +1,42 @@ +# Credits + +## Sponsors + +## Contributors + +## Helpful Users + +## Dependencies 🔗 + +This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them. + +##### Core +At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app. + +##### Utilities +- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` +- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` +- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` +- [`vue-i18n`](https://github.com/kazupon/vue-i18n) - Internationalization plugin by @kazupon and community `MIT` + +##### Frontend Components +- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` +- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` +- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` +- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` +- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` + - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` +- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` +- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT` + - Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT` +- [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` + +##### Backup & Sync Server +Although the app is purely frontend, there is an optional cloud backup and restore feature. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) + +##### External Services +The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). + +--- + +> This page is auto-generated, using [contribute-list](https://github.com/marketplace/actions/contribute-list) by @akhilmhdh. From ff50f1b932d7e1f9297b5e2c834ae205b26449e8 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 15:35:14 +0100 Subject: [PATCH 050/108] :octocat: Fixes syntax error in sponsors action --- .github/workflows/insert-sponsors.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/insert-sponsors.yml b/.github/workflows/insert-sponsors.yml index bd96dd64..ddd5d67b 100644 --- a/.github/workflows/insert-sponsors.yml +++ b/.github/workflows/insert-sponsors.yml @@ -2,7 +2,7 @@ # where the `` tag is name: Inserts Current Sponsors in Readme on: - workflow_dispatch + workflow_dispatch: release: types: [published] jobs: From 2b847c38bb5837a0fb339bdb678e642f1eb17261 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 16:36:37 +0100 Subject: [PATCH 051/108] :memo: Adds social buttons --- docs/contributing.md | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index 3ae4efdc..ee3c2e61 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -22,11 +22,20 @@ Dashy now has a [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/sho ## Spread the word Dashy is still a relatively young project, and as such not many people know of it. It would be great to see more users, and so it would be awesome if you could consider sharing on social platforms. +[![Share Dashy on Mastodon](https://img.shields.io/badge/Share-Mastodon-%232b90d9?style=flat-square&logo=mastodon)](https://mastodon.social/?text=Check%20out%20Dashy%2C%20the%20privacy-friendly%2C%20self-hosted%20startpage%20for%20organizing%20your%20life%3A%20https%3A%2F%2Fgithub.com%2FLissy93%2Fdashy%20-%20By%20%40lissy93%40mastodon.social) +[![Share Dashy on Reddit](https://img.shields.io/badge/Share-Reddit-%23FF5700?style=flat-square&logo=reddit)](http://www.reddit.com/submit?url=https://github.com/Lissy93/dashy&title=Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy on Twitter](https://img.shields.io/badge/Share-Twitter-%231DA1F2?style=flat-square&logo=twitter)](https://twitter.com/intent/tweet?url=https://github.com/lissy93/dashy&text=Check%20out%20Dashy%20by%20@Lissy_Sykes,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy on Facebook](https://img.shields.io/badge/Share-Facebook-%234267B2?style=flat-square&logo=facebook)](https://www.facebook.com/sharer/sharer.php?u=https://github.com/lissy93/dashy) +[![Share Dashy on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-%230077b5?style=flat-square&logo=linkedin)](https://www.linkedin.com/shareArticle?mini=true&url=https://github.com/lissy93/dashy) +[![Share Dashy on Pinterest](https://img.shields.io/badge/Share-Pinterest-%23E60023?style=flat-square&logo=pinterest)](https://pinterest.com/pin/create/button/?url=https://github.com/lissy93/dashy&media=https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/1-home-lab-material.png&description=Check%20out%20Dashy,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy via Email](https://img.shields.io/badge/Share-Email-%238A90C7?style=flat-square&logo=protonmail)](mailto:info@example.com?&subject=Check%20out%20Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80&cc=&bcc=&body=https://github.com/lissy93/dashy) + ## Leave a review Dashy is on the following platforms, and if you could spare a few seconds to give it an upvote or review, this will also help new users find it. -- [ProductHunt](https://www.producthunt.com/posts/dashy) -- DockerHub -- GitHub + +[![ProductHunt](https://img.shields.io/badge/Review-ProductHunt-%23b74424?style=flat-square&logo=producthunt)](https://www.producthunt.com/posts/dashy) +[![AlternativeTo](https://img.shields.io/badge/Review-AlternativeTo-%235581a6?style=flat-square&logo=abletonlive)](https://alternativeto.net/software/dashy/about/) + ## Make a small donation Please only do this is you can definitely afford to. Don't feel any pressure to donate anything, as Dashy and my other projects will always be 100% free, for everyone, for ever. @@ -45,13 +54,6 @@ BountySource is a platform for sponsoring the development of certain features on For more info, see [Dashy on Bounty Source](https://www.bountysource.com/teams/dashy) -## Enable Anonymous Error Reporting -Enabling error tracking helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more stable and reliable long term. Error reporting is disabled by default, and no data will ever be sent to an external endpoint without your explicit consent. - -Sentry is used to identify, report and categorize errors. All statistics collected are anonymized and stored securely, for more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). - -To enable error reporting, just set: `appConfig.errorReporting: true`. - --- ### Contributors From 5270f41764d9708e3d335999c8a79f9759ff0af1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 16:48:37 +0100 Subject: [PATCH 052/108] :octocat: Adds an action to generate collabarators list --- .github/workflows/insert-contributors.yml | 18 ++++++++++++++++++ docs/credits.md | 8 ++++++++ 2 files changed, 26 insertions(+) create mode 100644 .github/workflows/insert-contributors.yml diff --git a/.github/workflows/insert-contributors.yml b/.github/workflows/insert-contributors.yml new file mode 100644 index 00000000..f40bb578 --- /dev/null +++ b/.github/workflows/insert-contributors.yml @@ -0,0 +1,18 @@ +# Generates and inserts a dynamic table of contributors into ./docs/credits.md +on: [push, pull_request] +jobs: + contrib-readme-job: + runs-on: ubuntu-latest + name: Inserts contributors into credits.md + steps: + - name: Contribute List + uses: akhilmhdh/contributors-readme-action@v2.2 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + image_size: 80 + readme_path: docs/credits.md + columns_per_row: 6 + commit_message: ':yellow_heart: Updates contributors list' + committer_username: liss-bot + committer_email: liss-bot@d0h.co \ No newline at end of file diff --git a/docs/credits.md b/docs/credits.md index 19f76da8..8aa87a4a 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -3,8 +3,16 @@ ## Sponsors ## Contributors + + ## Helpful Users + + + +## Bots + + ## Dependencies 🔗 From 3da7df512adcd891f3ea9b86bb98a565c27d8aa8 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 16:51:50 +0100 Subject: [PATCH 053/108] :memo: Revereted to previous deploy list --- docs/deployment.md | 124 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 111 insertions(+), 13 deletions(-) diff --git a/docs/deployment.md b/docs/deployment.md index 19026d34..036070ea 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -110,19 +110,117 @@ Some hosting providers required a bit of extra configuration, which was why I've **Note** If you use a static hosting provider, then status checks, writing new config changes to disk from the UI, and triggering a rebuild through the UI will not be availible. This is because these features need endpoints provided by Dashy's local Node server. Everything else should work just the same though. -**Service** | **1-Click Button** | **Info** ---- | --- | --- -**[Netlify ![Netlify Icon](https://i.ibb.co/ZxtzrP3/netlify.png)](https://www.netlify.com/)** | Deploy | Netlify offers Git-based serverless static hosting for web applications. Their services are free to use for personal use, and they support deployment from both public and private repos, as well as direct file upload. The free plan also allows you to use your own custom domain or sub-domain, SSL certificate and is very easy to setup.
    **Deploy Link**: `https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy` -**[Heroku ![Heroku Icon](https://i.ibb.co/d2P1WZ7/heroku.png)](https://www.heroku.com/)** | Deploy | Heroku is a fully managed cloud platform as a service. You define app settings in a Procfile and app.json, which specifying how the app should be build and how the server should be started. Heroku is free to use for unlimited, non-commercial, single dyno apps, and supports custom domains. Heroku's single-dyno service is not as quite performant as some other providers, and the app will have a short wake-up time when not visited for a while.
    **Deploy Link**: `https://heroku.com/deploy?template=https://github.com/Lissy93/dashy` -**[Cloudflare Workers ![cloudflare-icon](https://i.ibb.co/CvpFM1S/cloudflare.png)](https://workers.cloudflare.com/)** | Deploy | Cloudflare now support web workers, which is a simple yet powerful service for running cloud functions and hosting web content. It requires a Cloudflare account, but is completely free for smaller projects, and very reasonably priced ($0.15/million requests per month) for large applications. You can use your own domain, and applications are protected with Cloudflare's state of the art DDoS protection. For more info, see the docs on [Worker Sites](https://developers.cloudflare.com/workers/platform/sites).
    **Deploy Link**: `https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare` -**[Vercel ![vercel-icon](https://i.ibb.co/Ld2FZzb/vercel.png)](https://vercel.com/)** | Deploy | Vercel is a performance-focused platform for hosting static frontend apps. It comes bundled with some useful tools for monitoring and anaylzing application performance and other metrics. Vercel is free for personal use, allows for custom domains and has very reasonable limits.
    **Deploy Link**: `https://vercel.com/new/project?template=https://github.com/lissy93/dashy` -**[Digital Ocean ![digital-ocean-icon](https://i.ibb.co/V2MxtGC/digitalocean.png)](https://www.digitalocean.com/)** | Deploy | is a cloud service providing affordable developer-friendly virtual machines from $5/month. But they also have an app platform, where you can run web apps, static sites, APIs and background workers. CDN-backed static sites are free for personal use.
    **Deploy Link**: `https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean` -**[Google Cloud Run ![google-cloud-icon](https://i.ibb.co/J7MGymY/googlecloud.png)](https://cloud.google.com/run/)** | Deploy | Cloud Run is a service offered by [Google Cloud](https://cloud.google.com/). It's a fully managed serverless platform, for developing and deploying highly scalable containerized applications. Similar to AWS and Azure, GCP offers a wide range of cloud services, which are billed on a pay‐per‐use basis, but Cloud Run has a [free tier](https://cloud.google.com/run/pricing) offering 180,000 vCPU-seconds, 360,000 GiB-seconds, and 2 million requests per month.
    **Deploy Link**: `https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git` -**[Platform.sh ![platform-icon](https://i.ibb.co/GdfvH3Z/platformsh.png)](https://platform.sh)** | Deploy | Platform.sh is an end-to-end solution for developing and deploying applications. It is geared towards enterprise users with large teams, and focuses on allowing applications to scale up and down. Unlike the above providers, Platform.sh is not free, although you can deploy a test app to it without needing a payment method.
    **Deploy Link**: `https://console.platform.sh/projects/create-project/?template=https://github.com/Lissy93/dashy/tree/deploy_platform-sh` -**[Render ![render-icon](https://i.ibb.co/xCHtzgh/render.png)](https://render.com)** | Deploy | Render is cloud provider that provides easy deployments for static sites, Docker apps, web services, databases and background workers. Render is great for developing applications, and very easy to use. Static sites are free, and services start at $7/month. Currently there are only 2 server locations - Oregon, USA and Frankfurt, Germany. For more info, see the [Render Docs](https://render.com/docs)
    **Deploy Link**: `https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render` -**[Scalingo ![scalingo-icon](https://i.ibb.co/Rvf5c4y/scalingo.png)](https://scalingo.com/)** | Deploy | Scalingo is a scalable container-based cloud platform as a service. It's focus is on compliance and uptime, and is geared towards enterprise users. Scalingo is also not free, although they do have a 3-day free trial that does not require a payment method
    **Deploy Link**: `https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master` -**[Play-with-Docker ![pwd-icon](https://i.ibb.co/HVWVYF7/docker.png)](https://labs.play-with-docker.com/)** | Deploy | PWD is a community project by Marcos Liljedhal and Jonathan Leibiusky and sponsored by Docker, intended to provide a hands-on learning environment. Their labs let you quickly spin up a Docker container or stack, and test out the image in a temporary, sandboxed environment. There's no need to sign up, and it's completely free.
    **Deploy Link**: `https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml` -**[Surge.sh ![surge-icon](https://i.ibb.co/WgVC4mB/surge.png)](http://surge.sh/)** | Deploy | Surge.sh is quick and easy static web publishing platform for frontend-apps. Surge supports [password-protected projects](https://surge.sh/help/adding-password-protection-to-a-project). You can also [add a custom domain](https://surge.sh/help/adding-a-custom-domain) and then [force HTTPS by default](https://surge.sh/help/using-https-by-default) and optionally [set a custom SSL certificate](https://surge.sh/help/securing-your-custom-domain-with-ssl)
    **To Deploy**, you need to clone Dashy, cd into it, build it, then run `surge ./dist` +#### Netlify +[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy) + +[Netlify](https://www.netlify.com/) offers Git-based serverless cloud hosting for web applications. Their services are free to use for personal use, and they support deployment from both public and private repos, as well as direct file upload. The free plan also allows you to use your own custom domain or sub-domain, and is easy to setup. + +To deploy Dashy to Netlify, use the following link +``` +https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy +``` + +#### Heroku +[![Deploy to Heroku](https://www.herokucdn.com/deploy/button.svg)](https://heroku.com/deploy?template=https://github.com/Lissy93/dashy) + +[Heroku](https://www.heroku.com/) is a fully managed cloud platform as a service. You define app settings in a Procfile and app.json, which specifying how the app should be build and how the server should be started. Heroku is free to use for unlimited, non-commercial, single dyno apps, and supports custom domains. Heroku's single-dyno service is not as quite performant as some other providers, and the app will have a short wake-up time when not visited for a while + +To deploy Dashy to Heroku, use the following link +``` +https://heroku.com/deploy?template=https://github.com/Lissy93/dashy +``` + +#### Cloudflare Workers +[![Deploy to Cloudflare Workers](https://deploy.workers.cloudflare.com/button)](https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare) + +[Cloudflare Workers](https://workers.cloudflare.com/) is a simple yet powerful service for running cloud functions and hosting web content. It requires a Cloudflare account, but is completely free for smaller projects, and very reasonably priced ($0.15/million requests per month) for large applications. You can use your own domain, and applications are protected with Cloudflare's state of the art DDoS protection. For more info, see the docs on [Worker Sites](https://developers.cloudflare.com/workers/platform/sites) + +To deploy Dashy to Cloudflare, use the following link +``` +https://deploy.workers.cloudflare.com/?url=https://github.com/lissy93/dashy/tree/deploy_cloudflare +``` + +#### Vercel +[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/project?template=https://github.com/lissy93/dashy) + +[Vercel](https://vercel.com/) is a performance-focused platform for hosting static frontend apps. It comes bundled with some useful tools for monitoring and anaylzing application performance and other metrics. Vercel is free for personal use, allows for custom domains and has very reasonable limits. + +To deploy Dashy to Vercel, use the following link +``` +https://vercel.com/new/project?template=https://github.com/lissy93/dashy +``` + +#### DigitalOcean +[![Deploy to DO](https://www.deploytodo.com/do-btn-blue.svg)](https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean&refcode=3838338e7f79) + +[DigitalOcan](https://www.digitalocean.com/) is a cloud service providing affordable developer-friendly virtual machines from $5/month. But they also have an app platform, where you can run web apps, static sites, APIs and background workers. CDN-backed static sites are free for personal use. + +``` +https://cloud.digitalocean.com/apps/new?repo=https://github.com/lissy93/dashy/tree/deploy_digital-ocean +``` + +#### Google Cloud Platform +[![Run on Google Cloud](https://deploy.cloud.run/button.svg)](https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git) + +[Cloud Run](https://cloud.google.com/run/) is a service offered by [Google Cloud](https://cloud.google.com/). It's a fully managed serverless platform, for developing and deploying highly scalable containerized applications. Similar to AWS and Azure, GCP offers a wide range of cloud services, which are billed on a pay‐per‐use basis, but Cloud Run has a [free tier](https://cloud.google.com/run/pricing) offering 180,000 vCPU-seconds, 360,000 GiB-seconds, and 2 million requests per month. + +To deploy Dashy to GCP, use the following link +``` +https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git +``` + +#### Platform.sh +[![Deploy to Platform.sh](https://platform.sh/images/deploy/deploy-button-lg-blue.svg)](https://console.platform.sh/projects/create-project/?template=https://github.com/lissy93/dashy&utm_campaign=deploy_on_platform?utm_medium=button&utm_source=affiliate_links&utm_content=https://github.com/lissy93/dashy) + +[Platform.sh](https://platform.sh) is an end-to-end solution for developing and deploying applications. It is geared towards enterprise users with large teams, and focuses on allowing applications to scale up and down. Unlike the above providers, Platform.sh is not free, although you can deploy a test app to it without needing a payment method + +To deploy Dashy to Platform.sh, use the following link +``` +https://console.platform.sh/projects/create-project/?template=https://github.com/lissy93/dashy +``` + +#### Render +[![Deploy to Render](https://render.com/images/deploy-to-render-button.svg)](https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render) + +[Render](https://render.com) is cloud provider that provides easy deployments for static sites, Docker apps, web services, databases and background workers. Render is great for developing applications, and very easy to use. Static sites are free, and services start at $7/month. Currently there are only 2 server locations - Oregon, USA and Frankfurt, Germany. For more info, see the [Render Docs](https://render.com/docs) + +To deploy Dashy to Render, use the following link +``` +https://render.com/deploy?repo=https://github.com/lissy93/dashy/tree/deploy_render +``` + +#### Scalingo +[![Deploy on Scalingo](https://cdn.scalingo.com/deploy/button.svg)](https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master) + +[Scalingo](https://scalingo.com/) is a scalable container-based cloud platform as a service. It's focus is on compliance and uptime, and is geared towards enterprise users. Scalingo is also not free, although they do have a 3-day free trial that does not require a payment method + +To deploy Dashy to Scalingo, use the following link +``` +https://my.scalingo.com/deploy?source=https://github.com/lissy93/dashy#master +``` + +#### Play-with-Docker +[![Try in PWD](https://raw.githubusercontent.com/play-with-docker/stacks/cff22438/assets/images/button.png)](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) + +[Play with Docker](https://labs.play-with-docker.com/) is a community project by Marcos Liljedhal and Jonathan Leibiusky and sponsored by Docker, intended to provide a hands-on learning environment. Their labs let you quickly spin up a Docker container or stack, and test out the image in a temporary, sandboxed environment. There's no need to sign up, and it's completely free. + +To run Dashy in PWD, use the following URL: +``` +https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml +``` + +#### Surge.sh +[Surge.sh](http://surge.sh/) is quick and easy static web publishing platform for frontend-apps. + +Surge supports [password-protected projects](https://surge.sh/help/adding-password-protection-to-a-project). You can also [add a custom domain](https://surge.sh/help/adding-a-custom-domain) and then [force HTTPS by default](https://surge.sh/help/using-https-by-default) and optionally [set a custom SSL certificate](https://surge.sh/help/securing-your-custom-domain-with-ssl) + +To deploy Dashy to Surge.sh, first clone and cd into Dashy, install dependencies, and then use the following commands +``` +yarn add -g surge +yarn build +surge ./dist +``` + ### Hosting with CDN From c4b99ffd0e2b0229d0d3357dc2dec9c81aedb276 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 16:53:01 +0100 Subject: [PATCH 054/108] :bookmark: Bumped to V1.4.6, and updated changelog --- .github/CHANGELOG.md | 7 +++++++ package.json | 2 +- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index a3a48b96..c98f0738 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,12 @@ # Changelog +## 📝 - Documentation Updates +- Breaks many of the longer files into several more digestible articles +- Writes repo pages including, Security, Code of Conduct, Legal, Updates license +- Makes an automatically generated Credits page +- Adds a contributing page, with several ways that users can help out +- Implements this changelog, as requested in #87 + ## 🌐 1.4.5 - Adds German Translations [PR #107](https://github.com/Lissy93/dashy/pull/107) - German language support, contributed by @Niklashere diff --git a/package.json b/package.json index 19b06176..92e98b21 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.4.5", + "version": "1.4.6", "license": "MIT", "main": "server", "scripts": { From 17ffa8da8fb0f91fe2d7502e7df95ba8f1a7f122 Mon Sep 17 00:00:00 2001 From: liss-bot Date: Sat, 31 Jul 2021 15:57:39 +0000 Subject: [PATCH 055/108] :yellow_heart: Updates contributors list --- docs/credits.md | 71 ++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 68 insertions(+), 3 deletions(-) diff --git a/docs/credits.md b/docs/credits.md index 8aa87a4a..73acf419 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -3,15 +3,80 @@ ## Sponsors ## Contributors - + + + + + + + +
    + + Lissy93 +
    + Alicia Sykes +
    +
    + + BeginCI +
    + Begin +
    +
    + + turnrye +
    + Ryan Turner +
    +
    + + snyk-bot +
    + Snyk Bot +
    +
    ## Helpful Users - + + + + + +
    + + Lissy93 +
    + Alicia Sykes +
    +
    + + liss-bot +
    + Alicia Bot +
    +
    ## Bots - + + + + + +
    + + liss-bot +
    + Alicia Bot +
    +
    + + github-actions[bot] +
    + github-actions[bot] +
    +
    ## Dependencies 🔗 From ce4d962cdcb326a48e1bafdbc11bf65b2d176e6f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 17:00:51 +0100 Subject: [PATCH 056/108] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20Attempt=20to=20?= =?UTF-8?q?fix=20Sponsor=20workflow?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/insert-sponsors.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/insert-sponsors.yml b/.github/workflows/insert-sponsors.yml index ddd5d67b..6fd3cb85 100644 --- a/.github/workflows/insert-sponsors.yml +++ b/.github/workflows/insert-sponsors.yml @@ -1,6 +1,6 @@ # Generates a list of sponsors, and inserts it into specified files # where the `` tag is -name: Inserts Current Sponsors in Readme +name: Inserts Sponsors on: workflow_dispatch: release: @@ -14,10 +14,10 @@ jobs: - name: Generate Sponsors in Readme 💖 uses: JamesIves/github-sponsors-readme-action@1.0.5 with: - token: ${{ secrets.PAT }} + token: ${{ secrets.GITHUB_TOKEN }} file: 'README.md' - name: Generate Sponsors in Credits 💖 uses: JamesIves/github-sponsors-readme-action@1.0.5 with: - token: ${{ secrets.PAT }} + token: ${{ secrets.GITHUB_TOKEN }} file: 'docs/credits.md' From c3c8876111c9007349331e017fda79df10fc2356 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 17:12:55 +0100 Subject: [PATCH 057/108] :memo: Removes curley braces breaking gh build, and updates contribs --- docs/credits.md | 116 +++++++++++++++------------------ docs/multi-language-support.md | 8 +-- 2 files changed, 55 insertions(+), 69 deletions(-) diff --git a/docs/credits.md b/docs/credits.md index 73acf419..b346275d 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -1,8 +1,11 @@ -# Credits - -## Sponsors - -## Contributors +# Credits + +## Sponsors + + + + +## Contributors @@ -35,30 +38,13 @@
    - - -## Helpful Users - - - - - -
    - - Lissy93 -
    - Alicia Sykes -
    -
    - - liss-bot -
    - Alicia Bot -
    -
    - - -## Bots + + +## Helpful Users + + + +## Bots @@ -77,39 +63,39 @@
    - - -## Dependencies 🔗 - -This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them. - -##### Core -At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app. - -##### Utilities -- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` -- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` -- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` -- [`vue-i18n`](https://github.com/kazupon/vue-i18n) - Internationalization plugin by @kazupon and community `MIT` - -##### Frontend Components -- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` -- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` -- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` -- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` -- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` - - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` -- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` -- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT` - - Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT` -- [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` - -##### Backup & Sync Server -Although the app is purely frontend, there is an optional cloud backup and restore feature. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) - -##### External Services -The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). - ---- - -> This page is auto-generated, using [contribute-list](https://github.com/marketplace/actions/contribute-list) by @akhilmhdh. + + +## Dependencies 🔗 + +This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them. For a full breakdown of dependency licenses, please see [Legal](https://github.com/Lissy93/dashy/blob/master/.github/LEGAL.md) + +##### Core +At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app. + +##### Utilities +- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT` +- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT` +- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT` +- [`vue-i18n`](https://github.com/kazupon/vue-i18n) - Internationalization plugin by @kazupon and community `MIT` + +##### Frontend Components +- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT` +- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT` +- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT` +- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT` +- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT` + - Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License` +- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT` +- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT` + - Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT` +- [`vue-swatches`](https://github.com/saintplay/vue-swatches) - Color palete picker by @saintplay `MIT` + +##### Backup & Sync Server +Although the app is purely frontend, there is an optional cloud backup and restore feature. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto) + +##### External Services +The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/). + +--- + +> This page is auto-generated, using [contribute-list](https://github.com/marketplace/actions/contribute-list) by @akhilmhdh. diff --git a/docs/multi-language-support.md b/docs/multi-language-support.md index 360a2548..a99c5d76 100644 --- a/docs/multi-language-support.md +++ b/docs/multi-language-support.md @@ -122,13 +122,13 @@ For example, you would set your translation to: ``` And then pass that variable (`name`) within a JSON object as the second parameter on `$t`, like: -```vue -

    {{ $t('welcome-message', { name: 'Alicia' }) }}

    +```javascript +$t('welcome-message', { name: 'Alicia' }) ``` Which will render: -```html -

    Hello Alicia!

    +```text +Hello Alicia! ``` There are many other advanced features, including Pluralization, Datetime & Number Formatting, Message Support and more, all of which are outlined in the [Vue-i18n Docs](https://vue-i18n.intlify.dev/guide/). From b2f34b97cd73ddaf8c2e968ea6eeb8309af302e0 Mon Sep 17 00:00:00 2001 From: liss-bot Date: Sat, 31 Jul 2021 16:13:23 +0000 Subject: [PATCH 058/108] :yellow_heart: Updates contributors list --- docs/credits.md | 55 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/docs/credits.md b/docs/credits.md index b346275d..61dd01b4 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -2,6 +2,16 @@ ## Sponsors + + + +
    + + Robert-Ernst +
    + Robert Ernst +
    +
    @@ -42,6 +52,51 @@ ## Helpful Users + + + + + + + + +
    + + evotk +
    + evotk +
    +
    + + shadowking001 +
    + LawrenceP. +
    +
    + + turnrye +
    + Ryan Turner +
    +
    + + robert-ernst +
    + Robert Ernst +
    +
    + + milesteg1 +
    + milesteg1 +
    +
    + + niklashere +
    + Niklas +
    +
    ## Bots From 28c66b765b091598171efa621177203643d90d51 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 17:19:49 +0100 Subject: [PATCH 059/108] =?UTF-8?q?=F0=9F=92=9A=20Updates=20Access=20Token?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{insert-contributors.yml => insert-credits.yml} | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) rename .github/workflows/{insert-contributors.yml => insert-credits.yml} (64%) diff --git a/.github/workflows/insert-contributors.yml b/.github/workflows/insert-credits.yml similarity index 64% rename from .github/workflows/insert-contributors.yml rename to .github/workflows/insert-credits.yml index f40bb578..9d3976bd 100644 --- a/.github/workflows/insert-contributors.yml +++ b/.github/workflows/insert-credits.yml @@ -1,4 +1,6 @@ -# Generates and inserts a dynamic table of contributors into ./docs/credits.md +# Generates and inserts a dynamic table of contributors, +# sponsors, bots and helpful community members into ./docs/credits.md +name: Insert Credits on: [push, pull_request] jobs: contrib-readme-job: @@ -8,11 +10,11 @@ jobs: - name: Contribute List uses: akhilmhdh/contributors-readme-action@v2.2 env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} with: image_size: 80 readme_path: docs/credits.md columns_per_row: 6 commit_message: ':yellow_heart: Updates contributors list' committer_username: liss-bot - committer_email: liss-bot@d0h.co \ No newline at end of file + committer_email: liss-bot@d0h.co From f3281eace7696af148ce6b653e9587ab4f89a648 Mon Sep 17 00:00:00 2001 From: liss-bot Date: Sat, 31 Jul 2021 17:20:00 +0100 Subject: [PATCH 060/108] :yellow_heart: Updates contributors list --- docs/credits.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/credits.md b/docs/credits.md index 61dd01b4..847071de 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -6,7 +6,7 @@ - Robert-Ernst + Robert-Ernst
    Robert Ernst
    @@ -58,7 +58,7 @@ evotk
    - evotk + Evotk
    @@ -86,7 +86,7 @@ milesteg1
    - milesteg1 + Milesteg1
    From a32bbeb96cbeb20b059cf665945021d38aecd441 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 18:13:40 +0100 Subject: [PATCH 061/108] :construction_worker: Combined GH action to credit contributors --- .github/workflows/generate-contributors.yml | 17 --------- .github/workflows/generate-credits.yml | 40 +++++++++++++++++++++ .github/workflows/insert-credits.yml | 20 ----------- docs/credits.md | 5 ++- 4 files changed, 42 insertions(+), 40 deletions(-) delete mode 100644 .github/workflows/generate-contributors.yml create mode 100644 .github/workflows/generate-credits.yml delete mode 100644 .github/workflows/insert-credits.yml diff --git a/.github/workflows/generate-contributors.yml b/.github/workflows/generate-contributors.yml deleted file mode 100644 index 02fe2e6d..00000000 --- a/.github/workflows/generate-contributors.yml +++ /dev/null @@ -1,17 +0,0 @@ -# Generates an image showing profile picture of everyone who'se contributed to Dashy -# Which is embeded in the Readme Credits section, as they deserve some recognition -name: Contributors -on: - schedule: - - cron: '0 1 * * 0' # At 01:00 on Sunday. - push: - branches: - - master -jobs: - contributors: - runs-on: ubuntu-latest - steps: - - uses: bubkoo/contributors-list@v1 - with: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - svgPath: docs/assets/CONTRIBUTORS.svg diff --git a/.github/workflows/generate-credits.yml b/.github/workflows/generate-credits.yml new file mode 100644 index 00000000..821ba113 --- /dev/null +++ b/.github/workflows/generate-credits.yml @@ -0,0 +1,40 @@ +# Inserts list of contributors and community members into ./docs/credits.md +# Also generates an SVG showing all contributors, which is embedded into readme +name: Contributors +on: + workflow_dispatch: # Manual dispatch + schedule: + - cron: '0 1 * * 0' # At 01:00 on Sunday. +jobs: + # Job #1 - Update the Credits page + insert-credits: + runs-on: ubuntu-latest + name: Inserts contributors into credits.md + steps: + - name: Contribute List + uses: akhilmhdh/contributors-readme-action@v2.2 + env: + GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} + with: + image_size: 80 + readme_path: docs/credits.md + columns_per_row: 6 + commit_message: ':yellow_heart: Updates contributors list' + committer_username: liss-bot + committer_email: liss-bot@d0h.co + # Job #2 - Generate an embedded SVG asset, showing all contributors + generate-contributors: + runs-on: ubuntu-latest + steps: + - uses: bubkoo/contributors-list@v1 + with: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + svgPath: docs/assets/CONTRIBUTORS.svg + affiliation: all + includeBots: false + excludeUsers: BeginCI snyk-bot + avatarSize: 96 + userNameHeight: 20 + svgWidth: 830 + commitMessage: ':blue_heart: Updates contributor SVG' + diff --git a/.github/workflows/insert-credits.yml b/.github/workflows/insert-credits.yml deleted file mode 100644 index 9d3976bd..00000000 --- a/.github/workflows/insert-credits.yml +++ /dev/null @@ -1,20 +0,0 @@ -# Generates and inserts a dynamic table of contributors, -# sponsors, bots and helpful community members into ./docs/credits.md -name: Insert Credits -on: [push, pull_request] -jobs: - contrib-readme-job: - runs-on: ubuntu-latest - name: Inserts contributors into credits.md - steps: - - name: Contribute List - uses: akhilmhdh/contributors-readme-action@v2.2 - env: - GITHUB_TOKEN: ${{ secrets.BOT_GITHUB_TOKEN }} - with: - image_size: 80 - readme_path: docs/credits.md - columns_per_row: 6 - commit_message: ':yellow_heart: Updates contributors list' - committer_username: liss-bot - committer_email: liss-bot@d0h.co diff --git a/docs/credits.md b/docs/credits.md index 847071de..94b45511 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -14,7 +14,6 @@ - ## Contributors @@ -100,7 +99,7 @@ ## Bots - +
    @@ -118,7 +117,7 @@
    - + ## Dependencies 🔗 From 8858bc43566c2e8ee5378d2076528f7289456065 Mon Sep 17 00:00:00 2001 From: liss-bot Date: Sat, 31 Jul 2021 18:20:00 +0100 Subject: [PATCH 062/108] :yellow_heart: Updates contributors list --- docs/credits.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/docs/credits.md b/docs/credits.md index 94b45511..49dd48ed 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -109,6 +109,13 @@ Alicia Bot + + + snyk-bot +
    + Snyk Bot +
    + github-actions[bot] From ecb613f03fba83327d4245af609e40d84ce9e5d4 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Sat, 31 Jul 2021 17:20:04 +0000 Subject: [PATCH 063/108] :blue_heart: Updates contributor SVG --- docs/assets/CONTRIBUTORS.svg | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/assets/CONTRIBUTORS.svg b/docs/assets/CONTRIBUTORS.svg index 01a754f2..1f922fa5 100644 --- a/docs/assets/CONTRIBUTORS.svg +++ b/docs/assets/CONTRIBUTORS.svg @@ -1,15 +1,9 @@ - + - - - - + - - - - + \ No newline at end of file From 38516d6dd2679c612e9611eadbf826877f8a3c8f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 18:33:52 +0100 Subject: [PATCH 064/108] :pencil2: Re: #106 Fixes typo, deafault --> default --- src/components/Settings/ThemeSelector.vue | 4 ++-- src/views/Home.vue | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Settings/ThemeSelector.vue b/src/components/Settings/ThemeSelector.vue index 2789059b..75d452d7 100644 --- a/src/components/Settings/ThemeSelector.vue +++ b/src/components/Settings/ThemeSelector.vue @@ -104,9 +104,9 @@ export default { /* Updates theme. Checks if the new theme is local or external, and calls appropirate updating function. Updates local storage */ updateTheme(newTheme) { - if (newTheme === 'Deafault') { + if (newTheme === 'Default') { this.resetToDefault(); - this.themeHelper.theme = 'Deafault'; + this.themeHelper.theme = 'Default'; } else if (this.isThemeLocal(newTheme)) { this.ApplyLocalTheme(newTheme); } else { diff --git a/src/views/Home.vue b/src/views/Home.vue index 4ce017dc..c0bc8911 100644 --- a/src/views/Home.vue +++ b/src/views/Home.vue @@ -157,7 +157,7 @@ export default { } } } - availibleThemes.Deafault = '#'; + availibleThemes.Default = '#'; return availibleThemes; }, /* Checks if any of the icons are Font Awesome glyphs */ From 3434bfacbaabeca05e0c3a976ab830aea4d7dd21 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 18:40:16 +0100 Subject: [PATCH 065/108] :fire: Removed cloud sync button from home, moved to config menu --- src/components/Configuration/ConfigContainer.vue | 12 +++++++----- src/components/Settings/ConfigLauncher.vue | 16 ---------------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/components/Configuration/ConfigContainer.vue b/src/components/Configuration/ConfigContainer.vue index 4f6eefc0..ae9e4ff1 100644 --- a/src/components/Configuration/ConfigContainer.vue +++ b/src/components/Configuration/ConfigContainer.vue @@ -13,11 +13,11 @@ {{ $t('config.edit-config-button') }} -
    -
    @@ -15,12 +13,6 @@ - - - - - @@ -33,9 +25,7 @@ diff --git a/src/utils/CoolConsole.js b/src/utils/CoolConsole.js new file mode 100644 index 00000000..4bd32bd6 --- /dev/null +++ b/src/utils/CoolConsole.js @@ -0,0 +1,14 @@ +/* eslint no-console: ["error", { allow: ["log"] }] */ + +export const welcomeMsg = () => { + const v = process.env.VUE_APP_VERSION ? `V${process.env.VUE_APP_VERSION}` : ''; + console.log(`%cDashy ${v} 🚀`, 'color:#00af87; background:#0b1021; font-size:36px; padding: 0.5rem 0.5rem 0; margin: 1rem auto; font-family: Rockwell; border: 2px solid #00af87; border-radius: 4px;font-weight: bold; text-shadow: 1px 1px 1px #00af87bf;'); +}; + +export const warningMsg = () => { + console.log('%c⚠️ Error ⚠️', "background:#21bbca; color:#0b1021; font-size:20px; padding:0.25rem 0.5rem; margin: 1rem auto 0.25rem; font-family: 'Trebuchet MS', Helvetica; border: 2px solid yellow; border-radius: 4px; font-weight: bold;"); +}; + +export const raiseBug = () => { + console.log('%c🐛If you have found a bug, raise an issue on GitHub, at:\nhttps://git.io/JnqPR', "color:#dddd10; font-size: 14px; font-family: 'Trebuchet MS', Helvetica;"); +}; diff --git a/src/utils/ErrorHandler.js b/src/utils/ErrorHandler.js index 15e27769..eb37160b 100644 --- a/src/utils/ErrorHandler.js +++ b/src/utils/ErrorHandler.js @@ -1,11 +1,15 @@ /* eslint no-console: ["error", { allow: ["warn", "error"] }] */ +import { warningMsg, raiseBug } from '@/utils/CoolConsole'; + /** * Function called when an error happens * If you wish to use an error logging service, put code for it here */ const ErrorHandler = function handler(msg) { + warningMsg(); console.warn(msg); + raiseBug(); }; export default ErrorHandler; From 447210e26d8e07c00c2749b2f53b2baec158301d Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 19:56:49 +0100 Subject: [PATCH 067/108] =?UTF-8?q?=E2=9C=8F=EF=B8=8F=20Spell=20checks=20r?= =?UTF-8?q?eadme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 87 ++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 54 insertions(+), 33 deletions(-) diff --git a/README.md b/README.md index d6836d15..685da86a 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,16 @@
    Contents

    +

    @@ -111,7 +120,7 @@ docker run -d \ lissy93/dashy:latest ``` -If you prefer to use Docker Compose, [here is an example](./docs/management.md#using-docker-compose). +If you prefer to use Docker Compose, [here is an example](./docs/deployment.md#using-docker-compose). You can also build the Docker container from source, by cloning the repo, cd'ing into it and running `docker build .` and `docker compose up`. > Once you've got Dashy running, you can take a look at [App Management Docs](./docs/management.md), for info on using health checks, provisioning assets, configuring web servers, securing your app, logs, performance and more. @@ -138,6 +147,7 @@ Dashy supports 1-Click deployments on several popular cloud platforms. To spin u - [ Deploy to GCP](https://deploy.cloud.run/?git_repo=https://github.com/lissy93/dashy.git) - [ Deploy to PWD](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml) +> For more 1-click cloud deployments, see [Cloud Deployment](./docs/deployment.md#deploy-to-cloud-service) **[⬆️ Back to Top](#dashy)** @@ -169,9 +179,7 @@ Finally, you may find these [example config](https://gist.github.com/Lissy93/000

    -Dashy comes with a number of built-in themes, but it's also easy to make you're own. All colors, and most other CSS properties are specified using CSS variables, which are [documented here](./docs/theming.md#css-variables). This make modifying styles and customizing the look and feel of Dashy very easy. - -You can select a theme, and customize it's colors directly through the UI. But it's also possible tp pass in external stylesheets and styles either in the config file (under `appConfig.externalStyleSheet`), or by mounting it to `/app/src/styles/user-defined-themes.scss` with Docker. +Dashy comes with a number of built-in themes, but it's also easy to make you're own. You can either use the color editor, or you're own custom CSS. All colors, and most other CSS properties are specified using CSS variables, which are [documented here](./docs/theming.md#css-variables), so customizing the look and feel of Dashy very easy. Learn more about adding your own theme in the [docs](https://github.com/Lissy93/dashy/blob/master/docs/theming.md#adding-your-own-theme).

    @@ -214,6 +222,10 @@ This is useful not only for backing up your configuration off-site, but it also All data is encrypted before being sent to the backend. In Dashy, this is done in [`CloudBackup.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/CloudBackup.js), using [crypto.js](https://github.com/brix/crypto-js)'s AES method, using the users chosen password as the key. The data is then sent to a [Cloudflare worker](https://developers.cloudflare.com/workers/learning/how-workers-works) (a platform for running serverless functions), and stored in a [KV](https://developers.cloudflare.com/workers/learning/how-kv-works) data store. +

    + +

    + **[⬆️ Back to Top](#dashy)** --- @@ -252,7 +264,9 @@ At present, access control is handled on the frontend, and therefore in security Dashy has an optional feature that can display a small icon next to each of your running services, indicating it's current status. This is useful if you are using Dashy as your homelab's start page, as it gives you an overview of the health of each of your running services. Hovering over the indicator will show additional information, including average response time and an error message for services which are down. -By default, this feature is off, but you can enable it globally by setting `appConfig.statusCheck: true`, or enable/ disable it for an individual item, with `item[n].statusCheck`. You can also specify an time interval in seconds under `appConfig.statusCheckInterval`, which will determine how often to recheck services, if this value is `0`, then status is only checked on initial page load, this is default behavior. +By default, this feature is off, but you can enable it globally by setting `appConfig.statusCheck: true`, or enable/ disable it for an individual item, with `item[n].statusCheck`. + +You can also specify an time interval in seconds under `appConfig.statusCheckInterval`, between checks, if this value is `0`, then status is only checked on initial page load, which is the default behavior. Status checks use the `url` attribute, but to call a different endpoint instead, you can set `statusCheckUrl`. Custom headers can also be specified using `statusCheckHeaders`.

    Status Checks demo @@ -315,7 +329,9 @@ Hit `Esc` at anytime to close any open apps, clear the search field, or hide any ## Config Editor ⚙️ > For full config documentation, see: [**Configuring**](./docs/configuring.md) -From the Settings Menu in Dashy, you can download, backup, edit and rest your config. An interactive editor makes editing the config file easy, it will tell you if you've got any errors. After making your changes, you can either apply them locally, or export into your main config file. After saving to the config file to the disk, the app will need to be rebuilt. This will happen automatically, but may take a few minutes. You can also manually trigger a rebuild from the Settings Menu. A full list of available config options can be found [here](./docs/configuring.md). It's recommend to make a backup of your configuration, as you can then restore it into a new instance of Dashy, without having to set it up again. [json2yaml](https://www.json2yaml.com/) is very useful for converting between YAML to JSON and visa versa. +From the Settings Menu in Dashy, you can download, backup, edit and rest your config. An interactive editor makes editing the config file easy, it will tell you if you've got any errors. After making your changes, you can either apply them locally, or export into your main config file. After saving to the config file to the disk, the app will be rebuilt automatically, you can also manually trigger a rebuild from the Settings Menu. + +A full list of available config options can be found [here](./docs/configuring.md). It's recommend to make a backup of your configuration, as you can then restore it into a new instance of Dashy, without having to set it up again. [json2yaml](https://www.json2yaml.com/) is very useful for converting between YAML to JSON and visa versa.

    Workspace view demo @@ -328,17 +344,15 @@ From the Settings Menu in Dashy, you can download, backup, edit and rest your co ## Language Switching 🌎 > For full internationalization documentation, see: [**Multi-Language Support**](./docs/multi-language-support.md) -Dashy has the ability to support multiple languages and locales. When available, you're language should be automatically detected and applied on load, based on your browser or systems settings. But you can also select a language through the UI, under Config --> Switch Language. - -Alternatively, set you're language in the config file, under `appConfig.language`. The language must be specified as either a 2-digit [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes) (such as `en`), or where available, the 2-digit code followed by a region or dialect (e.g. `en-GB`). +Dashy has the ability to support multiple languages and locales. When available, you're language should be automatically detected and applied on load, based on your browser or systems settings. But you can also select a language through the UI, under Config --> Switch Language, or set `appConfig.language` to your language (specified as a 2-digit [ISO 639-1 code](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)). #### Supported Languages - 🇬🇧 **English**: `en` - 🇩🇪 **German**: `de` #### Add your Language -I would love for Dashy to be available and comfortable to use for all, including non-native English speakers. If you speak another language, and have a few minutes to sapir, you're help with translating it would be very much appreciated. -There's not too much text to translate, and it's all located in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales), and you don't have to translate it all, as any missing items will just fallback to English. For more info, see the [Development Guides Docs](https://github.com/Lissy93/dashy/blob/master/docs/development-guides.md#adding-translations), and feel free to reach out if you need any support. +It would be awesome for open source projects to be available to everyone, without language being a barrier to entry for non-native English speakers. If you have a few minutes to sapir, you're help with translating it would be very much appreciated. +There's not too much text to cover, and it's all located in [a single JSON file](https://github.com/Lissy93/dashy/tree/master/src/assets/locales), and you don't have to translate it all, as any missing items will just fallback to English. For more info, see the [Adding a New Language Docs](./docs/multi-language-support.md#adding-a-new-language), and feel free to reach out if you need any support. **[⬆️ Back to Top](#dashy)** @@ -398,12 +412,12 @@ Found a bug, or something that isn't working as you'd expect? Please raise it as > For full details, and other ways you can help out, see: [**Contributing**](./docs/contributing.md) -If you're using Dashy, and would like to help support it's development, then that would be awesome! Contributions of any type, however small are always very much appreciated, and you will be appropriatley credited for your effort. +If you're using Dashy, and would like to help support it's development, then that would be awesome! Contributions of any type, however small are always very much appreciated, and you will be appropriately credited for your effort. Several areas that we need a bit of help with at the moment are: -- Adding translations - If you speak a second language, help make Dashy availible to non-native English speakers by adding text for you're language -- Donate a small amount, by [Sponsoring @Lissy93 on GitHub](https://github.com/sponsors/Lissy93) (only if you can afford to), and you'll also recieve some extra perks! -- Community Engagement: Join the discussion, and help answer other users questions, or spread the word by sharing Dashy online or leaving a review / upvote. +- Adding translations - Help make Dashy available to non-native English speakers by adding text for you're language +- Donate a small amount, by [Sponsoring @Lissy93 on GitHub](https://github.com/sponsors/Lissy93) (only if you can afford to), and you'll also receive some extra perks! +- Community Engagement: Join the [discussion](https://github.com/Lissy93/dashy/discussions), and help answer other users questions, or spread the word by sharing Dashy online - Share your dashboard in the [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/showcase.md#dashy-showcase-), to help provide inspiration for others - Submit a PR, to add a new feature, fix a bug, update the docs, add a theme or something else @@ -415,7 +429,7 @@ Several areas that we need a bit of help with at the moment are: > For a full list of credits, and attributions to packages used within Dashy, see: [**Credits**](./docs/credits.md) -Thank you so much to everyone who has helped with Dashy so far, every single contributuib is very much appreciated. +Thank you so much to everyone who has helped with Dashy so far, every contribution is very much appreciated. #### Sponsors @@ -426,7 +440,7 @@ Huge thanks to the sponsors helping to support Dashy's development! ![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg) #### Packages -Dashy was made possible thanks to the following packages and components. Full credit to their respective authors. +Dashy was made possible thanks to the following packages and components. For more details on each, see [Dependency Credits](./docs/credits.md#dependencies-). Full credit to their respective authors. - Utils: [`crypto-js`](https://github.com/brix/crypto-js), [`axios`](https://github.com/axios/axios), [`ajv`](https://github.com/ajv-validator/ajv) - Components: [`vue-select`](https://github.com/sagalbot/vue-select) by @sagalbot, [`vue-js-modal`](https://github.com/euvl/vue-js-modal) by @euvl, [`v-tooltip`](https://github.com/Akryum/v-tooltip) by @Akryum, [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) by @jairoblatt, [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong, [`vue-toasted`](https://github.com/shakee93/vue-toasted) by @shakee93 [`prism.js`](https://github.com/PrismJS/prism) @@ -463,6 +477,8 @@ Before you submit your pull request, please ensure you've checked off all the bo - The build, lint and tests (run by GH actions) must pass - There must not be any merge conflicts +If you're new to web development, I've put together a short [list of resources](https://github.com/Lissy93/dashy/blob/master/docs/developing.md#resources-for-beginners), to help beginners get started + **Repo Status**: ![Open PRs](https://flat.badgen.net/github/open-prs/lissy93/dashy?icon=github) ![Total PRs](https://flat.badgen.net/github/prs/lissy93/dashy?icon=github) @@ -476,25 +492,25 @@ Before you submit your pull request, please ensure you've checked off all the bo ## Documentation 📘 > For full docs, see: **[Documentation Contents](./docs/readme.md)** #### Running Dashy -- [Deployment](/docs/deployment.md) - Getting Dashy up and running -- [Configuring](/docs/configuring.md) - Complete list of all available options in the config file -- [Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc -- [Troubleshooting](/docs/troubleshooting.md) - Common errors and problems, and how to fix them +- 🚀 [Deployment](/docs/deployment.md) - Getting Dashy up and running +- 🔧 [Configuring](/docs/configuring.md) - Complete list of all available options in the config file +- 💻 [Management](/docs/management.md) - Managing your app, updating, security, web server configuration, etc +- 🚒 [Troubleshooting](/docs/troubleshooting.md) - Common errors and problems, and how to fix them #### Development and Contributing -- [Developing](/docs/developing.md) - Running Dashy development server locally, and general workflow -- [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors -- [Contributing](/docs/contributing.md) - How to contribute to Dashy -- [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard -- [Credits](/docs/credits.md) - Shout out to the amazing people who have contributed so far +- 🧱 [Developing](/docs/developing.md) - Running Dashy development server locally, and general workflow +- 🛎️ [Development Guides](/docs/development-guides.md) - Common development tasks, to help new contributors +- 💖 [Contributing](/docs/contributing.md) - How to contribute to Dashy +- 🌟 [Showcase](/docs/showcase.md) - See how others are using Dashy, and share your dashboard +- 🏆 [Credits](/docs/credits.md) - Shout out to the amazing people who have contributed so far #### Feature Docs -- [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard -- [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature -- [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps -- [Icons](/docs/icons.md) - Outline of all available icon types for sections and items -- [Language Switching](/docs/multi-language-support.md) - How to change language, add a language, or update text -- [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles +- 🛡️ [Authentication](/docs/authentication.md) - Guide to setting up authentication to protect your dashboard +- 💾 [Backup & Restore](/docs/backup-restore.md) - Guide to Dashy's cloud sync feature +- 🚦 [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps +- 🧸 [Icons](/docs/icons.md) - Outline of all available icon types for sections and items +- 🌐 [Language Switching](/docs/multi-language-support.md) - How to change language, add a language, or update text +- 🎨 [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles **[⬆️ Back to Top](#dashy)** @@ -563,6 +579,11 @@ For more info, see TLDR Legal's [Explanation of MIT](https://tldrlegal.com/licen --- + +

    +Thank you for Visiting
    -

    + +

    + From f6707cbbe03c3e913f29bfaebd6631a510321e63 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 20:02:49 +0100 Subject: [PATCH 068/108] :bookmark: Bumps to V 1.4.7 and updates changelog --- .github/CHANGELOG.md | 8 +++++++- package.json | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index c98f0738..3f6d4e01 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,6 +1,12 @@ # Changelog -## 📝 - Documentation Updates +## ♻️ - Refactor [PR #110](https://github.com/Lissy93/dashy/pull/110) +- Moves cloud sync dialog into the config menu, and removes icon on homepage +- Fixes typo in Default theme name, Re #106 +- Spell checks readme +- Updates the contributor CI action, that generates list of contributors + sponsors + +## 📝 - Documentation Updates [PR #108](https://github.com/Lissy93/dashy/pull/108) - Breaks many of the longer files into several more digestible articles - Writes repo pages including, Security, Code of Conduct, Legal, Updates license - Makes an automatically generated Credits page diff --git a/package.json b/package.json index 92e98b21..d5e9843a 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.4.6", + "version": "1.4.7", "license": "MIT", "main": "server", "scripts": { From f628419c0ce20afe7988d8b7e3e910f95416b456 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 20:28:06 +0100 Subject: [PATCH 069/108] =?UTF-8?q?=F0=9F=91=B7=20Adds=20cron=20job=20to?= =?UTF-8?q?=20sync=20docs=20with=20wiki?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/wiki-sync.yml | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 .github/workflows/wiki-sync.yml diff --git a/.github/workflows/wiki-sync.yml b/.github/workflows/wiki-sync.yml new file mode 100644 index 00000000..4a0978df --- /dev/null +++ b/.github/workflows/wiki-sync.yml @@ -0,0 +1,19 @@ +name: Wiki Sync +on: + workflow_dispatch: # Manual dispatch + schedule: + - cron: '0 1 * * 0' # At 01:00 on Sunday. +jobs: + update-wiki: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@master + - name: Sync Wiki + uses: joeizzard/action-wiki-sync@master + with: + username: example + access_token: ${{ secrets.GITHUB_TOKEN }} + wiki_folder: docs + commit_username: 'liss-bot' + commit_email: 'liss-bot@d0h.co' + commit_message: '📕 Chore: Sync Wiki' From 1d6281adb0d2d24934ef5c83f15c7ec50d6458ea Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sat, 31 Jul 2021 20:30:25 +0100 Subject: [PATCH 070/108] =?UTF-8?q?=F0=9F=9A=91=EF=B8=8F=20Attempts=20to?= =?UTF-8?q?=20fix=20wiki=20sync=20cron=20job?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/wiki-sync.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/wiki-sync.yml b/.github/workflows/wiki-sync.yml index 4a0978df..85a2712e 100644 --- a/.github/workflows/wiki-sync.yml +++ b/.github/workflows/wiki-sync.yml @@ -13,7 +13,7 @@ jobs: with: username: example access_token: ${{ secrets.GITHUB_TOKEN }} - wiki_folder: docs + wiki_folder: ./docs commit_username: 'liss-bot' commit_email: 'liss-bot@d0h.co' commit_message: '📕 Chore: Sync Wiki' From 1e00d0bc67b99d71c3ba7ce0607453deb95b55cd Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:14:37 +0100 Subject: [PATCH 071/108] =?UTF-8?q?=E2=9E=95=20Adds=20Sentry=20dependency?= =?UTF-8?q?=20(will=20only=20be=20imported=20if=20user=20enables=20it)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 4 ++- yarn.lock | 77 +++++++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 79 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index d5e9843a..a4806dd2 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,8 @@ "health-check": "node services/healthcheck" }, "dependencies": { + "@sentry/tracing": "^6.10.0", + "@sentry/vue": "^6.10.0", "ajv": "^8.5.0", "axios": "^0.21.1", "body-parser": "^1.19.0", @@ -89,4 +91,4 @@ "> 1%", "last 2 versions" ] -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index a84a1628..a5408341 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1091,6 +1091,81 @@ resolved "https://registry.yarnpkg.com/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz#2b5a3ab3f918cca48a8c754c08168e3f03eba61b" integrity sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw== +"@sentry/browser@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/browser/-/browser-6.10.0.tgz#92e72edca584d940fba80cf6477d4a54c6dea573" + integrity sha512-H0Blgp8f8bomebkkGWIgxHVjabtQAlsKJDiFXBg7gIc75YcarRxwH0R3hMog1/h8mmv4CGGUsy5ljYW6jsNnvA== + dependencies: + "@sentry/core" "6.10.0" + "@sentry/types" "6.10.0" + "@sentry/utils" "6.10.0" + tslib "^1.9.3" + +"@sentry/core@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/core/-/core-6.10.0.tgz#70af9dc72bb6a5b59062a31b7de023f7f1878357" + integrity sha512-5KlxHJlbD7AMo+b9pMGkjxUOfMILtsqCtGgI7DMvZNfEkdohO8QgUY+hPqr540kmwArFS91ipQYWhqzGaOhM3Q== + dependencies: + "@sentry/hub" "6.10.0" + "@sentry/minimal" "6.10.0" + "@sentry/types" "6.10.0" + "@sentry/utils" "6.10.0" + tslib "^1.9.3" + +"@sentry/hub@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/hub/-/hub-6.10.0.tgz#d59be18016426fd3a5e8d38712c2080466aafe3c" + integrity sha512-MV8wjhWiFAXZAhmj7Ef5QdBr2IF93u8xXiIo2J+dRZ7eVa4/ZszoUiDbhUcl/TPxczaw4oW2a6tINBNFLzXiig== + dependencies: + "@sentry/types" "6.10.0" + "@sentry/utils" "6.10.0" + tslib "^1.9.3" + +"@sentry/minimal@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/minimal/-/minimal-6.10.0.tgz#9404b93fae649b6c48e1da8f0991b87cf9999561" + integrity sha512-yarm046UgUFIBoxqnBan2+BEgaO9KZCrLzsIsmALiQvpfW92K1lHurSawl5W6SR7wCYBnNn7CPvPE/BHFdy4YA== + dependencies: + "@sentry/hub" "6.10.0" + "@sentry/types" "6.10.0" + tslib "^1.9.3" + +"@sentry/tracing@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/tracing/-/tracing-6.10.0.tgz#8dcdc28cccfad976540a3c801acb6914b9c0802e" + integrity sha512-jZj6Aaf8kU5wgyNXbAJHosHn8OOFdK14lgwYPb/AIDsY35g9a9ncTOqIOBp8X3KkmSR8lcBzAEyiUzCxAis2jA== + dependencies: + "@sentry/hub" "6.10.0" + "@sentry/minimal" "6.10.0" + "@sentry/types" "6.10.0" + "@sentry/utils" "6.10.0" + tslib "^1.9.3" + +"@sentry/types@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/types/-/types-6.10.0.tgz#6b1f44e5ed4dbc2710bead24d1b32fb08daf04e1" + integrity sha512-M7s0JFgG7/6/yNVYoPUbxzaXDhnzyIQYRRJJKRaTD77YO4MHvi4Ke8alBWqD5fer0cPIfcSkBqa9BLdqRqcMWw== + +"@sentry/utils@6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/utils/-/utils-6.10.0.tgz#839a099fa0a1f0ca0893c7ce8c55ba0608c1d80f" + integrity sha512-F9OczOcZMFtazYVZ6LfRIe65/eOfQbiAedIKS0li4npuMz0jKYRbxrjd/U7oLiNQkPAp4/BujU4m1ZIwq6a+tg== + dependencies: + "@sentry/types" "6.10.0" + tslib "^1.9.3" + +"@sentry/vue@^6.10.0": + version "6.10.0" + resolved "https://registry.yarnpkg.com/@sentry/vue/-/vue-6.10.0.tgz#f969e90140e78376ecfa3c235842632b71de5e2e" + integrity sha512-pCmycL9EglfywdUKU6KJ6QqUfCKZmyZkZma6b2mpWjAgeMnuRFcc1arz/HvjtIY6hDKVsIFzgIBeVfcKcdCrnQ== + dependencies: + "@sentry/browser" "6.10.0" + "@sentry/core" "6.10.0" + "@sentry/minimal" "6.10.0" + "@sentry/types" "6.10.0" + "@sentry/utils" "6.10.0" + tslib "^1.9.3" + "@sindresorhus/is@^0.14.0": version "0.14.0" resolved "https://registry.yarnpkg.com/@sindresorhus/is/-/is-0.14.0.tgz#9fb3a3cf3132328151f353de4632e01e52102bea" @@ -9256,7 +9331,7 @@ tsconfig-paths@^3.9.0: minimist "^1.2.0" strip-bom "^3.0.0" -tslib@^1.9.0: +tslib@^1.9.0, tslib@^1.9.3: version "1.14.1" resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.14.1.tgz#cf2d38bdc34a134bcaf1091c41f6619e2f672d00" integrity sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg== From 5b6663dab8ce332c2fb478540f9078abf9fc8032 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:15:51 +0100 Subject: [PATCH 072/108] :recycle: Moves service worker init into utils --- src/{registerServiceWorker.js => utils/InitServiceWorker.js} | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) rename src/{registerServiceWorker.js => utils/InitServiceWorker.js} (96%) diff --git a/src/registerServiceWorker.js b/src/utils/InitServiceWorker.js similarity index 96% rename from src/registerServiceWorker.js rename to src/utils/InitServiceWorker.js index 5db4a8f3..03f3b7e0 100644 --- a/src/registerServiceWorker.js +++ b/src/utils/InitServiceWorker.js @@ -1,8 +1,8 @@ /* eslint-disable no-console */ import { register } from 'register-service-worker'; -import { sessionStorageKeys } from './utils/defaults'; -import conf from '../public/conf.yml'; +import { sessionStorageKeys } from '@/utils/defaults'; +import conf from '../../public/conf.yml'; /* Sets a local storage item with the state from the SW lifecycle */ const setSwStatus = (swStateToSet) => { From 424cef1f811ee837764b63e20786a558baea4b98 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:16:51 +0100 Subject: [PATCH 073/108] :zap: Adds safeguards to prevent error when conf.yml is empty --- src/utils/ConfigAccumalator.js | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/utils/ConfigAccumalator.js b/src/utils/ConfigAccumalator.js index b1426eef..b92ee569 100644 --- a/src/utils/ConfigAccumalator.js +++ b/src/utils/ConfigAccumalator.js @@ -23,7 +23,10 @@ export default class ConfigAccumulator { /* App Config */ appConfig() { - const appConfigFile = this.conf.appConfig || {}; + let appConfigFile = {}; + if (this.conf) { + appConfigFile = this.conf.appConfig || {}; + } let usersAppConfig = defaultAppConfig; if (localStorage[localStorageKeys.APP_CONFIG]) { usersAppConfig = JSON.parse(localStorage[localStorageKeys.APP_CONFIG]); @@ -48,8 +51,11 @@ export default class ConfigAccumulator { } catch (e) { localPageInfo = {}; } - const filePageInfo = this.conf.pageInfo || {}; - const pi = this.conf.pageInfo || defaults; // The page info object to return + let filePageInfo = {}; + if (this.conf) { + filePageInfo = this.conf.pageInfo || {}; + } + const pi = filePageInfo || defaults; // The page info object to return pi.title = localPageInfo.title || filePageInfo.title || defaults.title; pi.logo = localPageInfo.logo || filePageInfo.logo || defaults.logo; pi.description = localPageInfo.description || filePageInfo.description || defaults.description; @@ -71,7 +77,9 @@ export default class ConfigAccumulator { } } // If the function hasn't yet returned, then return the config file sections - return this.conf.sections; + let sectionsFile = []; + if (this.conf) sectionsFile = this.conf.sections || []; + return sectionsFile; } /* Complete config */ From 309dcee3c356db21dd6769c9ad904bdbf8297817 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:18:03 +0100 Subject: [PATCH 074/108] :sparkles: Implements optional, off by default crash reporting --- src/main.js | 34 +++++++++++++++++++------------- src/utils/ErrorReporting.js | 39 +++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 14 deletions(-) create mode 100644 src/utils/ErrorReporting.js diff --git a/src/main.js b/src/main.js index 7af5b0aa..44fff3e8 100644 --- a/src/main.js +++ b/src/main.js @@ -1,22 +1,25 @@ +/* eslint-disable no-multi-spaces */ // Import core framework and essential utils import Vue from 'vue'; import VueI18n from 'vue-i18n'; // i18n for localization // Import component Vue plugins, used throughout the app -import VTooltip from 'v-tooltip'; // A Vue directive for Popper.js, tooltip component -import VModal from 'vue-js-modal'; // Modal component -import VSelect from 'vue-select'; // Select dropdown component -import VTabs from 'vue-material-tabs'; // Tab view component, used on the config page -import Toasted from 'vue-toasted'; // Toast component, used to show confirmation notifications +import VTooltip from 'v-tooltip'; // A Vue directive for Popper.js, tooltip component +import VModal from 'vue-js-modal'; // Modal component +import VSelect from 'vue-select'; // Select dropdown component +import VTabs from 'vue-material-tabs'; // Tab view component, used on the config page +import Toasted from 'vue-toasted'; // Toast component, used to show confirmation notifications // Import base Dashy components and utils -import Dashy from '@/App.vue'; -import router from '@/router'; -import registerServiceWorker from '@/registerServiceWorker'; -import clickOutside from '@/utils/ClickOutside'; -import { toastedOptions, language as defaultLanguage } from '@/utils/defaults'; -import { messages } from '@/utils/languages'; +import Dashy from '@/App.vue'; // Main Dashy Vue app +import router from '@/router'; // Router, for navigation +import serviceWorker from '@/utils/InitServiceWorker'; // Service worker initialization +import clickOutside from '@/utils/ClickOutside'; // Directive for closing popups, modals, etc +import { messages } from '@/utils/languages'; // Language texts +import ErrorReporting from '@/utils/ErrorReporting'; // Error reporting initializer (off) +import { toastedOptions, language as defaultLanguage } from '@/utils/defaults'; // Defaults +// Initialize global Vue components Vue.use(VueI18n); Vue.use(VTooltip); Vue.use(VModal); @@ -25,7 +28,7 @@ Vue.use(Toasted, toastedOptions); Vue.component('v-select', VSelect); Vue.directive('clickOutside', clickOutside); -Vue.config.productionTip = false; +Vue.config.productionTip = false; // Disable annoying console message // Setup i18n translations const i18n = new VueI18n({ @@ -34,8 +37,11 @@ const i18n = new VueI18n({ messages, }); -// Register Service Worker -registerServiceWorker(); +// Checks if service worker not disable, and if so will registers it +serviceWorker(); + +// Checks if user enabled error reporting, and if so will initialize it +ErrorReporting(Vue, router); // Render function const render = (awesome) => awesome(Dashy); diff --git a/src/utils/ErrorReporting.js b/src/utils/ErrorReporting.js new file mode 100644 index 00000000..9b0a2a97 --- /dev/null +++ b/src/utils/ErrorReporting.js @@ -0,0 +1,39 @@ +/** + * NOTE: No data is EVER sent to any external service without your explicit consent. + * In the case of error reporting, Sentry will not even be initialized unless + * you have purposely set appConfig.enableErrorReporting: true. + * It is false by default. + * You may want to enable error reporting if you have encountered a bug, + * as access to the console errors enable it to be triaged an fixed effectively + */ + +/* eslint-disable global-require */ + +import ConfigAccumulator from '@/utils/ConfigAccumalator'; + +const ErrorTracking = (Vue, router) => { + // Fetch users config + const appConfig = new ConfigAccumulator().appConfig() || {}; + // Check if error reporting is enabled. Only proceed if user has turned it on. + if (appConfig.enableErrorReporting) { + // Import Sentry + const Sentry = require('@sentry/vue'); + const { Integrations } = require('@sentry/tracing'); + const dsn = 'https://3138ea85f15a4fa883a5b27a4dc8ee28@o937511.ingest.sentry.io/5887934'; + // Initialize Sentry + Sentry.init({ + Vue, + dsn, + integrations: [ + new Integrations.BrowserTracing({ + routingInstrumentation: Sentry.vueRouterInstrumentation(router), + }), + ], + tracesSampleRate: 1.0, + }); + } else { + // Error reporting not enabled. Do Nothing. + } +}; + +export default ErrorTracking; From 5d0eaf4bca94173f1c9bf383782bab4f1bf99ab8 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:18:39 +0100 Subject: [PATCH 075/108] :memo: Adds another way you can help, in Contributing --- docs/contributing.md | 32 +++++++++++++++++++++++--------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/docs/contributing.md b/docs/contributing.md index ee3c2e61..c1ed12e7 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -22,19 +22,22 @@ Dashy now has a [Showcase](https://github.com/Lissy93/dashy/blob/master/docs/sho ## Spread the word Dashy is still a relatively young project, and as such not many people know of it. It would be great to see more users, and so it would be awesome if you could consider sharing on social platforms. -[![Share Dashy on Mastodon](https://img.shields.io/badge/Share-Mastodon-%232b90d9?style=flat-square&logo=mastodon)](https://mastodon.social/?text=Check%20out%20Dashy%2C%20the%20privacy-friendly%2C%20self-hosted%20startpage%20for%20organizing%20your%20life%3A%20https%3A%2F%2Fgithub.com%2FLissy93%2Fdashy%20-%20By%20%40lissy93%40mastodon.social) -[![Share Dashy on Reddit](https://img.shields.io/badge/Share-Reddit-%23FF5700?style=flat-square&logo=reddit)](http://www.reddit.com/submit?url=https://github.com/Lissy93/dashy&title=Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) -[![Share Dashy on Twitter](https://img.shields.io/badge/Share-Twitter-%231DA1F2?style=flat-square&logo=twitter)](https://twitter.com/intent/tweet?url=https://github.com/lissy93/dashy&text=Check%20out%20Dashy%20by%20@Lissy_Sykes,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) -[![Share Dashy on Facebook](https://img.shields.io/badge/Share-Facebook-%234267B2?style=flat-square&logo=facebook)](https://www.facebook.com/sharer/sharer.php?u=https://github.com/lissy93/dashy) -[![Share Dashy on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-%230077b5?style=flat-square&logo=linkedin)](https://www.linkedin.com/shareArticle?mini=true&url=https://github.com/lissy93/dashy) -[![Share Dashy on Pinterest](https://img.shields.io/badge/Share-Pinterest-%23E60023?style=flat-square&logo=pinterest)](https://pinterest.com/pin/create/button/?url=https://github.com/lissy93/dashy&media=https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/1-home-lab-material.png&description=Check%20out%20Dashy,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) -[![Share Dashy via Email](https://img.shields.io/badge/Share-Email-%238A90C7?style=flat-square&logo=protonmail)](mailto:info@example.com?&subject=Check%20out%20Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80&cc=&bcc=&body=https://github.com/lissy93/dashy) +[![Share Dashy on Mastodon](https://img.shields.io/badge/Share-Mastodon-%232b90d9?style=for-the-badge&logo=mastodon)](https://mastodon.social/?text=Check%20out%20Dashy%2C%20the%20privacy-friendly%2C%20self-hosted%20startpage%20for%20organizing%20your%20life%3A%20https%3A%2F%2Fgithub.com%2FLissy93%2Fdashy%20-%20By%20%40lissy93%40mastodon.social) +[![Share Dashy on Reddit](https://img.shields.io/badge/Share-Reddit-%23FF5700?style=for-the-badge&logo=reddit)](http://www.reddit.com/submit?url=https://github.com/Lissy93/dashy&title=Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy on Twitter](https://img.shields.io/badge/Share-Twitter-%231DA1F2?style=for-the-badge&logo=twitter)](https://twitter.com/intent/tweet?url=https://github.com/lissy93/dashy&text=Check%20out%20Dashy%20by%20@Lissy_Sykes,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy on Facebook](https://img.shields.io/badge/Share-Facebook-%234267B2?style=for-the-badge&logo=facebook)](https://www.facebook.com/sharer/sharer.php?u=https://github.com/lissy93/dashy) +[![Share Dashy on LinkedIn](https://img.shields.io/badge/Share-LinkedIn-%230077b5?style=for-the-badge&logo=linkedin)](https://www.linkedin.com/shareArticle?mini=true&url=https://github.com/lissy93/dashy) +[![Share Dashy on Pinterest](https://img.shields.io/badge/Share-Pinterest-%23E60023?style=for-the-badge&logo=pinterest)](https://pinterest.com/pin/create/button/?url=https://github.com/lissy93/dashy&media=https://raw.githubusercontent.com/Lissy93/dashy/master/docs/showcase/1-home-lab-material.png&description=Check%20out%20Dashy,%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy on VK](https://img.shields.io/badge/Share-VK-%234C75A3?style=for-the-badge&logo=vk)](https://vk.com/share.php?url=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy%2F&title=Check%20out%20Dashy%20-%20The%20Self-Hosted%20Dashboard%20for%20your%20Homelab%20%F0%9F%9A%80) +[![Share Dashy via Viber](https://img.shields.io/badge/Share-Viber-%238176d6?style=for-the-badge&logo=viber)](viber://forward?text=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy%0ACheck%20out%20Dashy%2C%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy via Telegram](https://img.shields.io/badge/Share-Telegram-%230088cc?style=for-the-badge&logo=telegram)](https://t.me/share/url?url=https%3A%2F%2Fgithub.com%2Flissy93%2Fdashy&text=Check%20out%20Dashy%2C%20the%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80) +[![Share Dashy via Email](https://img.shields.io/badge/Share-Email-%238A90C7?style=for-the-badge&logo=protonmail)](mailto:info@example.com?&subject=Check%20out%20Dashy%20-%20The%20self-hosted%20dashboard%20for%20your%20homelab%20%F0%9F%9A%80&cc=&bcc=&body=https://github.com/lissy93/dashy) ## Leave a review Dashy is on the following platforms, and if you could spare a few seconds to give it an upvote or review, this will also help new users find it. -[![ProductHunt](https://img.shields.io/badge/Review-ProductHunt-%23b74424?style=flat-square&logo=producthunt)](https://www.producthunt.com/posts/dashy) -[![AlternativeTo](https://img.shields.io/badge/Review-AlternativeTo-%235581a6?style=flat-square&logo=abletonlive)](https://alternativeto.net/software/dashy/about/) +[![ProductHunt](https://img.shields.io/badge/Review-ProductHunt-%23b74424?style=for-the-badge&logo=producthunt)](https://www.producthunt.com/posts/dashy) +[![AlternativeTo](https://img.shields.io/badge/Review-AlternativeTo-%235581a6?style=for-the-badge&logo=abletonlive)](https://alternativeto.net/software/dashy/about/) ## Make a small donation @@ -54,6 +57,17 @@ BountySource is a platform for sponsoring the development of certain features on For more info, see [Dashy on Bounty Source](https://www.bountysource.com/teams/dashy) +## Enable Anonymous Bug Reports +[Sentry](https://github.com/getsentry/sentry) is an open source error tracking and performance monitoring tool, which enables the identification any errors which occur in the production app (only if you enable it). It helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more reliable long term. This is a simple, yet really helpful step you can take to help improve Dashy. + +To enable error reporting: +```yaml +appConfig: + enableErrorReporting: true +``` + +All reporting is **disabled** by default, and no data will ever be sent to any external endpoint without your explicit consent. In fact, the error tracking package will not even be imported unless you have actively enabled it. All statistics are anonomized and stored securely. For more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). + --- ### Contributors From db312a703cfb90cac2afa81e64c3970ad434648f Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 12:19:31 +0100 Subject: [PATCH 076/108] :card_file_box: Adds 'enableErrorReporting' to schema and config docs --- docs/configuring.md | 1 + src/utils/ConfigSchema.json | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/docs/configuring.md b/docs/configuring.md index a024031f..8879b082 100644 --- a/docs/configuring.md +++ b/docs/configuring.md @@ -73,6 +73,7 @@ To disallow any changes from being written to disk via the UI config editor, set **`customCss`** | `string` | _Optional_ | Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first. **`hideComponents`** | `object` | _Optional_ | A list of key page components (header, footer, search, settings, etc) that are present by default, but can be removed using this option. See [`appConfig.hideComponents`](#appconfighideComponents-optional) **`allowConfigEdit`** | `boolean` | _Optional_ | Should prevent / allow the user to write configuration changes to the conf.yml from the UI. When set to `false`, the user can only apply changes locally using the config editor within the app, whereas if set to `true` then changes can be written to disk directly through the UI. Defaults to `true`. Note that if authentication is enabled, the user must be of type `admin` in order to apply changes globally. +**`enableErrorReporting`** | `boolean` | _Optional_ | Enable reporting of unexpected errors and crashes. This is off by default, and **no data will ever be captured unless you explicitly enable it**. Turning on error reporting helps previously unknown bugs get discovered and fixed. Dashy uses [Sentry](https://github.com/getsentry/sentry) for error reporting. Defaults to `false`. **`disableUpdateChecks`** | `boolean` | _Optional_ | If set to true, Dashy will not check for updates. Defaults to `false`. **`disableServiceWorker`** | `boolean` | _Optional_ | Service workers cache web applications to improve load times and offer basic offline functionality, and are enabled by default in Dashy. The service worker can sometimes cause older content to be cached, requiring the app to be hard-refreshed. If you do not want SW functionality, or are having issues with caching, set this property to `true` to disable all service workers. **`disableContextMenu`** | `boolean` | _Optional_ | If set to `true`, the custom right-click context menu will be disabled. Defaults to `false`. diff --git a/src/utils/ConfigSchema.json b/src/utils/ConfigSchema.json index 874fd18b..62d0e8c3 100644 --- a/src/utils/ConfigSchema.json +++ b/src/utils/ConfigSchema.json @@ -258,6 +258,11 @@ "type": "boolean", "default": false, "description": "Prevents Dashy from checking for updates" + }, + "enableErrorReporting": { + "type": "boolean", + "default": false, + "description": "Enable anonymous crash reports. This helps bugs be found and fixed, in order to make Dashy more stable. Reporting is off by default, and no data will EVER be collected without your explicit and active concent." } }, "additionalProperties": false From 2a830a17657fb7fdde6693a5d034cc955bda714b Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 13:19:49 +0100 Subject: [PATCH 077/108] :memo: Adds Privacy and Security docs --- docs/contributing.md | 2 +- docs/privacy.md | 78 ++++++++++++++++++++++++++++++++++++++++++++ docs/readme.md | 7 ++++ 3 files changed, 86 insertions(+), 1 deletion(-) create mode 100644 docs/privacy.md diff --git a/docs/contributing.md b/docs/contributing.md index c1ed12e7..9d6a4972 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -50,7 +50,7 @@ Sponsoring will give you several perks, from $1 / £0.70 per month, as well as a You can also send one-off small contriutions using crypto: - **BTC**: `3853bSxupMjvxEYfwGDGAaLZhTKxB2vEVC` - **ETH**: `0x0fc98cBf8bea932B4470C46C0FbE1ed1f6765017` / `aliciasykes.eth` -- **XMR**: `471KZdxb6N63aABR4WYwMRjTVkc1p1x7wGsUTEF7AMYzL8L94A5pCuYWkosgJQ5Ze8Y2PscVCGZFJa3hDPg6MaDq47GUm8r` +- **XMR**: `471KZdxb6N63aABR4WYwMRjTVkc1p1x7wGsUTEF7AMYzL8L94A5pCuYWkosgJQ5Ze8Y2PscVCGZFJa3hDPg6MaDq47GUm8r`# ## Request a feature via BountySource BountySource is a platform for sponsoring the development of certain features on open source projects. If there is a feature you'd like implemented into Dashy, but either isn't high enough priority or is deemed to be more work than it's worth, then you can instead contribute a bounty towards it's development. You won't pay a penny until your proposal is fully built, and you are satisfied with the result. This helps support the developers, and makes Dashy better for everyone. diff --git a/docs/privacy.md b/docs/privacy.md new file mode 100644 index 00000000..39259c73 --- /dev/null +++ b/docs/privacy.md @@ -0,0 +1,78 @@ +# Privacy & Security +Dashy was built with privacy in mind. Self-hosting your own apps and services is a great way to protect yourself from the mass data collection employed by big tech companies, and Dashy was designed to keep your local services organized and accessible from a single place. + +It's fully open source, and I've tried to keep to code as clear and thoroughly documented as possible, which will make it easy for you to understand exactly how it works, and what goes on behind the scenes. + +For privacy and security tips, check out another project of mine: **[Personal Security Checklist](https://github.com/Lissy93/personal-security-checklist)**. + +--- + +## External Requests +By default, Dashy will not make any external requests, unless you configure it to. Some features (which are all off by default) do require internat access, and this section outlines those features, the services used, and links to their privacy policies. + +### Font Awesome +If either sections or items are using font-awesome icons, then these will be fetched directly from font-awesome on page load. + +### Favicon Fetching +If an item's icon is set to `favicon`, then it will be auto-fetched from the corresponding URL. Since not all websites have their icon located at `/favicon.ico`, and if they do, it's often very low resolution (like `16 x 16 px`). Therefore, the default behavior is for Dashy to check if the URL is public, and if so will use an API to fetch the favicon. For self-hosted services, the favion will be fetched from the default path, and no external requests will be made. + +The default favicon API is [Favicon Kit](https://faviconkit.com/), but this can be changed by setting `appConfig.faviconApi` to an alternate source (`google`, `clearbit`, `webmasterapi` and `allesedv` are supported). If you do not want to use any API, then you can set this property to `local`, and the favicon will be fetched from the default path. For hosted services, this will still incur an external request. + +### Other Icons +Section icons, item icons and app icons are able to accept a URL to a raw image, if the image is hosted online then an external request will be made. To avoid the need to make external requests for icon assets, you can either use a self-hosted CDN, or store your images within `./public/item-icons` (which can be mounted as a volume if you're using Docker). + +### Web Assets +By default, all assets required by Dashy come bundled within the source, and so no external requests are made. If you add an additional font, which is imported from a CDN, then that will incur an external request. The same applies for other web assets, like external images, scripts or styles. + +### Status Checking +The status check util will ping your services directly, and does not rely on any third party. If you are checking the uptime status of a public/ hosted application, then please refer to that services privacy policy. For all self-hosted services, requests happen locally within your network, and are not external. + +### Update Checks +When the application loads, it checks for updates. The results of which are displayed in the config menu of the UI. This was implemented because using a very outdated version of Dashy may have unfixed issues. Your version is fetched from the source (local request), but the latest version is fetched from GitHub, which is an external request. This can be disabled by setting `appConfig.disableUpdateChecks: true` + +### Anonymous Error Reporting +Error reporting is disabled by default, and no data will ever be sent without your explicit consent. In fact, the error tracking method will not even be imported unless you have actively enabled it. [Sentry](https://github.com/getsentry/sentry) is used for this, it's an open source error tracking and performance monitoring tool, which is used to identify any errors which occur in the production app (if you enable it). + +The crash report includes the file or line of code that triggered the error, and a 2-layer deep stack trace. Reoccurring errors will also include the following user information: OS type (Mac, Windows, Linux, Android or iOS) and browser type (Firefox, Chrome, IE, Safari). Data scrubbing is enabled. IP address will not be stored. If any potentially identifiable data ever finds its way into a crash report, it will be automatically and permanently erased. All statistics collected are anonomized and stored securely, and ae automatically deleted after 14 days. For more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). + +Enabling anonymous error reporting helps me to discover bugs I was unaware of, and then fix them, in order to make Dashy more reliable long term. Error reporting is activated by setting `appConfig.enableErrorReporting: true`. + +--- + +## Dependencies +As with most web projects, Dashy relies on several [dependencies](https://github.com/Lissy93/dashy/blob/master/docs/credits.md#dependencies-). For links to each, and a breakdown of their licenses, please see [Legal](https://github.com/Lissy93/dashy/blob/master/.github/LEGAL.md). + +Dependencies can introduce security vulnerabilities, but since all these packages are open source any issues are usually very quickly spotted. Dashy is using Snyk for dependency security monitoring, and you can see [the latest report here](https://snyk.io/test/github/lissy93/dashy). + +--- + +## Securing your Environment +Running your self-hosted applications in individual, containerized environments (such as containers or VMs) helps keep them isolated, and prevent an exploit in one service effecting another. + +There is very little complexity involved with Dashy, and therefore the attack surface is reasonably small, but it is still important to follow best practices and employ monitoring for all your self-hosted apps. A couple of things that you should look at include: +- Use SSL for securing traffic in transit +- Configure [authentication](/docs/authentication.md#alternative-authentication-methods) to prevent unauthorized access +- Keep your system, software and Dashy up-to-date +- Ensure your server is appropriately secured +- Manage users and SSH correctly +- Enable and configure firewall rules +- Implement security, malware and traffic scanning +- Setup malicious traffic detection + +This is covered in more detail in [App Management](/docs/management.md). + +--- + +## Reporting a Security Issue +If you think you've found a critical issue with Dashy, please send an email to `security@mail.alicia.omg.lol`. You can encrypt it, using [`0688 F8D3 4587 D954 E9E5 1FB8 FEDB 68F5 5C02 83A7`](https://keybase.io/aliciasykes/pgp_keys.asc?fingerprint=0688f8d34587d954e9e51fb8fedb68f55c0283a7). You should receive a response within 48 hours. + +All non-critical issues can be raised as a ticket. + +Please include the following information: +- Type of issue (e.g. buffer overflow, SQL injection, cross-site scripting, etc.) +- Full paths of source file(s) related to the manifestation of the issue +- The location of the affected source code (tag/branch/commit or direct URL) +- Any special configuration required to reproduce the issue +- Step-by-step instructions to reproduce the issue +- Proof-of-concept or exploit code (if possible) +- Impact of the issue, including how an attacker might exploit the issue diff --git a/docs/readme.md b/docs/readme.md index 4fd72f6e..b6a2d859 100644 --- a/docs/readme.md +++ b/docs/readme.md @@ -20,3 +20,10 @@ - [Language Switching](/docs/multi-language-support.md) - [Status Indicators](/docs/status-indicators.md) - Using Dashy to monitor uptime and status of your apps - [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles + +#### Misc +- [Privacy & Security](/docs/privacy.md) - List of requests, potential issues, and security resources +- [License](/LICENSE) - Copy of the MIT License +- [Legal](/.github/LEGAL.md) - Licenses of direct dependencies +- [Code of Conduct](/.github/CODE_OF_CONDUCT.md) - Contributor Covenant Code of Conduct +- [Changelog](/.github/CHANGELOG.md) - Details of recent changes, and historical versions From 25582531fdba287b8ebf810062e6d670061d2866 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 13:21:36 +0100 Subject: [PATCH 078/108] :memo: Updates the readme, with link to Privacy docs --- README.md | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/README.md b/README.md index 685da86a..a9b795ce 100644 --- a/README.md +++ b/README.md @@ -512,6 +512,13 @@ If you're new to web development, I've put together a short [list of resources]( - 🌐 [Language Switching](/docs/multi-language-support.md) - How to change language, add a language, or update text - 🎨 [Theming](/docs/theming.md) - Complete guide to applying, writing and modifying themes and styles +#### Misc +- [🔐 Privacy & Security](/docs/privacy.md) - List of requests, potential issues, and security resources +- [📄 License](/LICENSE) - Copy of the MIT License +- [⚖️ Legal](/.github/LEGAL.md) - Licenses of direct dependencies +- [📏 Code of Conduct](/.github/CODE_OF_CONDUCT.md) - Contributor Covenant Code of Conduct +- [🌳 Changelog](/.github/CHANGELOG.md) - Details of recent changes, and historical versions + **[⬆️ Back to Top](#dashy)** --- From 78ce2d3e34c9dc29de79904c6a1533a83ca9f6c7 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 13:25:06 +0100 Subject: [PATCH 079/108] :bookmark: Bumps to V 1.4.8 and updates changelog --- .github/CHANGELOG.md | 11 +++++++++-- package.json | 4 ++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 3f6d4e01..323e0ace 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,12 +1,19 @@ # Changelog -## ♻️ - Refactor [PR #110](https://github.com/Lissy93/dashy/pull/110) +## ✨ 1.4.8 - Optional Crash Reports [PR #120](https://github.com/Lissy93/dashy/pull/112) +- Adds an optional, off by default method of getting crash reports +- This can be enabled in `appConfig.enableErrorReporting`, and will not be used at all unless explicitly activated by user +- This is needed for when a user raises a bug which is hard to fix +- Also improves robustness of config accumulator, don't throw error when config is missing +- Adds Privacy & Security docs + +## ♻️ 1.4.7 - Refactor [PR #110](https://github.com/Lissy93/dashy/pull/110) - Moves cloud sync dialog into the config menu, and removes icon on homepage - Fixes typo in Default theme name, Re #106 - Spell checks readme - Updates the contributor CI action, that generates list of contributors + sponsors -## 📝 - Documentation Updates [PR #108](https://github.com/Lissy93/dashy/pull/108) +## 📝 1.4.6 - Documentation Updates [PR #108](https://github.com/Lissy93/dashy/pull/108) - Breaks many of the longer files into several more digestible articles - Writes repo pages including, Security, Code of Conduct, Legal, Updates license - Makes an automatically generated Credits page diff --git a/package.json b/package.json index a4806dd2..34fba720 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.4.7", + "version": "1.4.8", "license": "MIT", "main": "server", "scripts": { @@ -91,4 +91,4 @@ "> 1%", "last 2 versions" ] -} +} \ No newline at end of file From 690409d64233c49f45c9d384eab78d26290a9035 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 15:24:35 +0100 Subject: [PATCH 080/108] :lock: Prevents user making themself admin from UI --- src/components/Configuration/JsonEditor.vue | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Configuration/JsonEditor.vue b/src/components/Configuration/JsonEditor.vue index 0b8d3a5d..99f0cffe 100644 --- a/src/components/Configuration/JsonEditor.vue +++ b/src/components/Configuration/JsonEditor.vue @@ -146,6 +146,7 @@ export default { localStorage.setItem(localStorageKeys.PAGE_INFO, JSON.stringify(data.pageInfo)); } if (data.appConfig) { + data.appConfig.auth = this.config.appConfig.auth || []; localStorage.setItem(localStorageKeys.APP_CONFIG, JSON.stringify(data.appConfig)); } if (data.appConfig.theme) { From ba2ac7661d606b477b5b4ec31a5c4d72b7622ac1 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 15:25:24 +0100 Subject: [PATCH 081/108] :lock: Small update to router, empty array means no users --- src/router.js | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/router.js b/src/router.js index f20b9803..a34cfb1a 100644 --- a/src/router.js +++ b/src/router.js @@ -11,9 +11,14 @@ import { metaTagData } from '@/utils/defaults'; Vue.use(Router); +/** + * Checks if the current user is either authenticated, + * or if authentication is not enabled + * @returns true if user logged in, or user management not enabled + */ const isAuthenticated = () => { const users = config.appConfig.auth; - return (!users || isLoggedIn(users)); + return (!users || users.length === 0 || isLoggedIn(users)); }; const router = new Router({ From 353bb618b445891a09b9978561d8731ff20977d9 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 15:27:23 +0100 Subject: [PATCH 082/108] :bug: Normalize data prior to calculatin SHA hash --- src/utils/Auth.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/utils/Auth.js b/src/utils/Auth.js index 57e519f8..a64a7ba4 100644 --- a/src/utils/Auth.js +++ b/src/utils/Auth.js @@ -6,7 +6,11 @@ import { cookieKeys, localStorageKeys } from './defaults'; * @param {String} user The username of user * @returns {String} The hashed token */ -const generateUserToken = (user) => sha256(user.toString()).toString().toLowerCase(); +const generateUserToken = (user) => { + const strAndUpper = (input) => input.toString().toUpperCase(); + const sha = sha256(strAndUpper(user.user) + strAndUpper(user.hash)); + return strAndUpper(sha); +}; /** * Checks if the user is currently authenticated @@ -47,7 +51,7 @@ export const checkCredentials = (username, pass, users) => { response = { correct: false, msg: 'Missing Password' }; } else { users.forEach((user) => { - if (user.user === username) { + if (user.user.toLowerCase() === username.toLowerCase()) { if (user.hash.toLowerCase() === sha256(pass).toString().toLowerCase()) { response = { correct: true, msg: 'Logging in...' }; } else { From 87f6438b893fd67a7a9186eaef4549929a9c1174 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Sun, 1 Aug 2021 15:33:03 +0100 Subject: [PATCH 083/108] :bookmark: Bumped to V 1.5.0 and updates changelog --- .github/CHANGELOG.md | 7 ++++++- package.json | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 323e0ace..aabc74a7 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,6 +1,11 @@ # Changelog -## ✨ 1.4.8 - Optional Crash Reports [PR #120](https://github.com/Lissy93/dashy/pull/112) +## 🔒 1.5.0 - Improve Robustness of Auth [PR #113](https://github.com/Lissy93/dashy/pull/113) +- Use both username + password for generating token, so that a change in either will log the user out +- Prevent privilege escalation by disallowing a user from modifying their user type through the UI +- Improve the isAuthenticated check, by taking account of empty users array + +## ✨ 1.4.8 - Optional Crash Reports [PR #112](https://github.com/Lissy93/dashy/pull/112) - Adds an optional, off by default method of getting crash reports - This can be enabled in `appConfig.enableErrorReporting`, and will not be used at all unless explicitly activated by user - This is needed for when a user raises a bug which is hard to fix diff --git a/package.json b/package.json index 34fba720..244a838e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.4.8", + "version": "1.5.0", "license": "MIT", "main": "server", "scripts": { From 37c5f68ee64c2e4300e52376ae3446bdfae588b2 Mon Sep 17 00:00:00 2001 From: DeepSource Bot Date: Wed, 4 Aug 2021 13:58:07 +0000 Subject: [PATCH 084/108] Add .deepsource.toml --- .deepsource.toml | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 .deepsource.toml diff --git a/.deepsource.toml b/.deepsource.toml new file mode 100644 index 00000000..2cd97866 --- /dev/null +++ b/.deepsource.toml @@ -0,0 +1,8 @@ +version = 1 + +[[analyzers]] +name = "javascript" +enabled = true + + [analyzers.meta] + plugins = ["vue"] \ No newline at end of file From 50c647ff0cd2e498e1363c3e6ccd6ece56492000 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 15:46:05 +0100 Subject: [PATCH 085/108] =?UTF-8?q?=E2=99=BB=EF=B8=8F=20Moves=20to=20.gith?= =?UTF-8?q?ub?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .deepsource.toml => .github/.deepsource.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename .deepsource.toml => .github/.deepsource.toml (80%) diff --git a/.deepsource.toml b/.github/.deepsource.toml similarity index 80% rename from .deepsource.toml rename to .github/.deepsource.toml index 2cd97866..fb05a4e4 100644 --- a/.deepsource.toml +++ b/.github/.deepsource.toml @@ -5,4 +5,4 @@ name = "javascript" enabled = true [analyzers.meta] - plugins = ["vue"] \ No newline at end of file + plugins = ["vue"] From 68725027ac620247a064752e968ea4cea857f9cb Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 15:59:25 +0100 Subject: [PATCH 086/108] =?UTF-8?q?=F0=9F=97=91=EF=B8=8F=20Deletes=20deep?= =?UTF-8?q?=20source?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/.deepsource.toml | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 .github/.deepsource.toml diff --git a/.github/.deepsource.toml b/.github/.deepsource.toml deleted file mode 100644 index fb05a4e4..00000000 --- a/.github/.deepsource.toml +++ /dev/null @@ -1,8 +0,0 @@ -version = 1 - -[[analyzers]] -name = "javascript" -enabled = true - - [analyzers.meta] - plugins = ["vue"] From 31ac0171f515af3eda2002874566febff9c4166c Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 16:10:04 +0100 Subject: [PATCH 087/108] :memo: Adds socials into Contributing docs --- docs/contributing.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/contributing.md b/docs/contributing.md index 9d6a4972..1d5064ef 100644 --- a/docs/contributing.md +++ b/docs/contributing.md @@ -68,6 +68,17 @@ appConfig: All reporting is **disabled** by default, and no data will ever be sent to any external endpoint without your explicit consent. In fact, the error tracking package will not even be imported unless you have actively enabled it. All statistics are anonomized and stored securely. For more about privacy and security, see the [Sentry Docs](https://sentry.io/security/). +## Follow for More +If you've enjoyed Dashy, you can follow the me to get updates about other projects that I am working on. Or [subscribe to my mailing list](https://notes.aliciasykes.com/subscribe) for very occasional blog post updates. + +[![Alicia Sykes on Twitter](https://img.shields.io/twitter/follow/Lissy_Sykes?style=social&logo=twitter)](https://twitter.com/Lissy_Sykes) +[![Alicia Sykes on GitHub](https://img.shields.io/github/followers/lissy93?label=Lissy93&style=social)](https://github.com/Lissy93) +[![Alicia Sykes on Mastodon](https://img.shields.io/mastodon/follow/1032965?domain=https%3A%2F%2Fmastodon.social)](https://mastodon.social/web/accounts/1032965) +[![Alicia Sykes on Keybase](https://img.shields.io/badge/aliciasykes--lightgrey?style=social&logo=Keybase)](https://keybase.io/aliciasykes) +[![Alicia Sykes's PGP](https://img.shields.io/badge/PGP--lightgrey?style=social&logo=Let%E2%80%99s%20Encrypt)](https://keybase.io/aliciasykes/pgp_keys.asc) +[![Alicia Sykes's Website](https://img.shields.io/badge/aliciasykes.com--lightgrey?style=social&logo=Tencent%20QQ)](https://aliciasykes.com) +[![Alicia Sykes's Blog](https://img.shields.io/badge/Blog--lightgrey?style=social&logo=micro.blog)](https://notes.aliciasykes.com/) + --- ### Contributors From 6f5943073f8531faa36e318d362c195f45cac4bc Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 20:23:01 +0100 Subject: [PATCH 088/108] :bug: Re: #115 - Fixes width in config container for long languages --- .../Configuration/ConfigContainer.vue | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/components/Configuration/ConfigContainer.vue b/src/components/Configuration/ConfigContainer.vue index ae9e4ff1..0454aa78 100644 --- a/src/components/Configuration/ConfigContainer.vue +++ b/src/components/Configuration/ConfigContainer.vue @@ -217,7 +217,8 @@ a.config-button, button.config-button { text-decoration: none; cursor: pointer; margin: 0.5rem auto; - width: 18rem; + min-width: 18rem; + width: 100%; svg.button-icon { path { fill: var(--config-settings-color); @@ -236,6 +237,13 @@ a.config-button, button.config-button { } } +a.hyperlink-wrapper { + margin: 0 auto; + text-decoration: none; + min-width: 18rem; + width: 100%; +} + p.app-version, p.language { margin: 0.5rem auto; font-size: 1rem; @@ -296,17 +304,14 @@ div.code-container { } } -a.hyperlink-wrapper { - margin: 0 auto; - text-decoration: none; -} - .main-options-container { display: flex; flex-direction: column; - padding-top: 2rem; background: var(--config-settings-background); height: calc(100% - 2rem); + width: fit-content; + margin: 0 auto; + padding: 2rem 0.5rem; h2 { margin: 0 auto 1rem auto; color: var(--config-settings-color); From 81fdfd1b2a79955ce548810a472e6e4adfd44da6 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 20:27:18 +0100 Subject: [PATCH 089/108] :adhesive_bandage: Minor fix, reduce height to hide scrollbar --- src/components/Configuration/ConfigContainer.vue | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Configuration/ConfigContainer.vue b/src/components/Configuration/ConfigContainer.vue index 0454aa78..369af458 100644 --- a/src/components/Configuration/ConfigContainer.vue +++ b/src/components/Configuration/ConfigContainer.vue @@ -308,10 +308,10 @@ div.code-container { display: flex; flex-direction: column; background: var(--config-settings-background); - height: calc(100% - 2rem); + height: calc(100% - 4rem); width: fit-content; margin: 0 auto; - padding: 2rem 0.5rem; + padding: 2rem 1rem; h2 { margin: 0 auto 1rem auto; color: var(--config-settings-color); From 86a04c94d248dc5745ec49a706a85cee7170c1c5 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 20:36:53 +0100 Subject: [PATCH 090/108] :bookmark: Bumped to V 1.5.1 and updated changelog --- .github/CHANGELOG.md | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index aabc74a7..f74f6fca 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,8 @@ # Changelog +## 🩹 1.5.1 - UI Quick Fix [PR #116](https://github.com/Lissy93/dashy/pull/116) +- Fixes #115 - Some longer languages (e.g. French) cause text to break to the next line + ## 🔒 1.5.0 - Improve Robustness of Auth [PR #113](https://github.com/Lissy93/dashy/pull/113) - Use both username + password for generating token, so that a change in either will log the user out - Prevent privilege escalation by disallowing a user from modifying their user type through the UI diff --git a/package.json b/package.json index 244a838e..e3f69789 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.5.0", + "version": "1.5.1", "license": "MIT", "main": "server", "scripts": { From 1df3eda66f816fa847898903ad34f246c6d0f0d5 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Wed, 4 Aug 2021 21:23:04 +0100 Subject: [PATCH 091/108] =?UTF-8?q?=F0=9F=91=B7=20Switches=20docs-wiki=20s?= =?UTF-8?q?ync=20to=20use=20different=20action?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/wiki-sync.yml | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/workflows/wiki-sync.yml b/.github/workflows/wiki-sync.yml index 85a2712e..e6a56e79 100644 --- a/.github/workflows/wiki-sync.yml +++ b/.github/workflows/wiki-sync.yml @@ -1,3 +1,4 @@ +# Uses the contents of the ./docs directory for Dashy's GH Wiki page name: Wiki Sync on: workflow_dispatch: # Manual dispatch @@ -9,11 +10,11 @@ jobs: steps: - uses: actions/checkout@master - name: Sync Wiki - uses: joeizzard/action-wiki-sync@master + uses: cmbrose/github-docs-to-wiki@v0.24 with: - username: example - access_token: ${{ secrets.GITHUB_TOKEN }} - wiki_folder: ./docs - commit_username: 'liss-bot' - commit_email: 'liss-bot@d0h.co' - commit_message: '📕 Chore: Sync Wiki' + githubToken: ${{ secrets.GITHUB_TOKEN }} + defaultBranch: master + rootDocsFolder: ./docs + convertRootReadmeToHomePage: true + useHeaderForWikiName: true + customCommitMessageFormat: ':gem: Chore: Sync Docs to GH Wiki' From bf026e99928575c9e793e0b0d4cda0b3e1dd25df Mon Sep 17 00:00:00 2001 From: Erik Vroon Date: Thu, 5 Aug 2021 00:04:16 +0200 Subject: [PATCH 092/108] Create nl.json --- src/assets/locales/nl.json | 142 +++++++++++++++++++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 src/assets/locales/nl.json diff --git a/src/assets/locales/nl.json b/src/assets/locales/nl.json new file mode 100644 index 00000000..88109e64 --- /dev/null +++ b/src/assets/locales/nl.json @@ -0,0 +1,142 @@ +{ + "home": { + "no-results": "Geen Zoekresultaten", + "no-data": "Geen Data Geconfigureerd" + }, + "search": { + "search-label": "Zoek", + "search-placeholder": "Begin met typen om te filteren", + "clear-search-tooltip": "Wis Zoekopdracht" + }, + "login": { + "title": "Dashy", + "username-label": "Gebruikersnaam", + "password-label": "Wachtwoord", + "login-button": "Aanmelden", + "remember-me-label": "Onthoud mij voor", + "remember-me-never": "Nooit", + "remember-me-hour": "4 Uur", + "remember-me-day": "1 Dag", + "remember-me-week": "1 Week" + }, + "config": { + "main-tab": "Config", + "view-config-tab": "Bekijk Config", + "edit-config-tab": "Wijzig Config", + "custom-css-tab": "Aangepaste Stijlen", + "heading": "Configuratie Opties", + "download-config-button": "Download Config", + "edit-config-button": "Wijzig Config", + "edit-css-button": "Wijzig Aangepaste CSS", + "cloud-sync-button": "Schakel Cloud Synchronisatie In", + "edit-cloud-sync-button": "Wijzig Cloud Synchronisatie", + "rebuild-app-button": "Herbouw Applicatie", + "change-language-button": "Verander App Taal", + "reset-settings-button": "Reset Lokale Instellingen", + "app-info-button": "App Info", + "backup-note": "Het is aan te raden een backup van de configuratie te maken voordat de instellingen worden aangepast.", + "reset-config-msg-l1": "Dit zal alle gebruikersinstellingen verwijderen van local storage, maar past het 'conf.yml' bestand niet aan.", + "reset-config-msg-l2": "Maak eerst een backup van de lokale veranderingen, om ze later nog te kunnen gebruiken.", + "reset-config-msg-l3": "Weet je het zeker?", + "data-cleared-msg": "Data succesvol verwijderd", + "actions-label": "Acties", + "copy-config-label": "Kopieer Config", + "data-copied-msg": "Config is gekopieerd naar het klembord", + "reset-config-label": "Reset Config", + "css-save-btn": "Sla Wijzigingen Op", + "css-note-label": "Let op", + "css-note-l1": "Herlaad de pagina om de veranderingen toe te passen.", + "css-note-l2": "Stijl overrides worden alleen lokaal opgeslagen, het is verstandig om een kopie van de CSS te maken.", + "css-note-l3": "Om alle aangepaste stijlen te verwijderen, verwijder de inhoud en druk op Sla Wijzigingen Op" + }, + "settings": { + "theme-label": "Thema", + "layout-label": "Layout", + "layout-auto": "Auto", + "layout-horizontal": "Horizontaal", + "layout-vertical": "Verticaal", + "item-size-label": "Itemgrootte", + "item-size-small": "Klein", + "item-size-medium": "Gemiddeld", + "item-size-large": "Groot", + "config-launcher-label": "Config" + }, + "updates": { + "app-version-note": "Dashy versie", + "up-to-date": "Bijgewerkt", + "out-of-date": "Update Beschikbaar", + "unsupported-version-l1": "Je gebruikt een niet-ondersteunde versie van Dashy", + "unsupported-version-l2": "Voor de beste ervaring en betere beveiliging, update naar" + }, + "language-switcher": { + "title": "Verander Applicatie Taal", + "dropdown-label": "Selecteer een Taal", + "save-button": "Opslaan", + "success-msg": "Taal Veranderd naar" + }, + "theme-maker": { + "title": "Thema Configurator", + "export-button": "Exporteer Aangepaste Variabelen", + "reset-button": "Reset Stijlen voor", + "show-all-button": "Toon Alle Variabelen", + "save-button": "Opslaan", + "cancel-button": "Annuleren", + "saved-toast": "{theme} Succesvol Bijgewerkt", + "copied-toast": "Thema data voor {theme} naar klembord gekopieerd", + "reset-toast": "Aangepaste Kleuren voor {theme} Verwijderd" + }, + "config-editor": { + "save-location-label": "Sla Locatie Op", + "location-local-label": "Pas Lokaal Toe", + "location-disk-label": "Sla Veranderingen Op in Config Bestand", + "save-button": "Opslaan", + "valid-label": "Config is Geldig", + "status-success-msg": "Taak Voltooid", + "status-fail-msg": "Taak Gefaald", + "success-msg-disk": "Config bestand succesvol opgeslagen", + "success-msg-local": "Lokale aanpassingen succesvol opgeslagen", + "success-note-l1": "De applicatie zou automatisch moeten herbouwen.", + "success-note-l2": "Dit duurt maximaal een minuut.", + "success-note-l3": "Herlaad de pagina om de veranderingen toe te passen.", + "error-msg-save-mode": "Selecteer een Save Mode: Lokaal of Bestand", + "error-msg-cannot-save": "Een fout trad op tijdens het opslaan van de config", + "error-msg-bad-json": "Fout in JSON, mogelijk ongeldige structuur", + "warning-msg-validation": "Validatie Waarschuwing" + }, + "app-rebuild": { + "title": "Herbouw Applicatie", + "rebuild-note-l1": "Het is nodig de applicatie te herbouwen om de veranderingen in conf.yml toe te passen.", + "rebuild-note-l2": "Dit zou automatisch moeten gebeuren, mocht dit niet het geval zijn, kun je het hier handmatig starten.", + "rebuild-note-l3": "Dit is niet nodig voor lokaal opgeslagen aanpassingen.", + "rebuild-button": "Start Build", + "rebuilding-status-1": "Building...", + "rebuilding-status-2": "Dit kan een paar minuten duren", + "error-permission": "Je bent niet bevoegd deze actie uit te voeren", + "success-msg": "Build succesvol uitgevoerd", + "fail-msg": "Build proces gefaald", + "reload-note": "Herlaad de pagina om de veranderingen toe te passen", + "reload-button": "Herlaad Pagina" + }, + "cloud-sync": { + "title": "Cloud Backup & Herstel", + "intro-l1": "Cloud Backup & Herstel is een optionele functie, die het mogelijk maakt om het config bestand naar het internet te uploaden en het te herstellen op een ander apparaat of instantie van Dashy.", + "intro-l2": "Alle data is volledig end-to-end versleuteld met AES, met je wachtwoord als de sleutel.", + "intro-l3": "Voor meer informatie, zie", + "backup-title-setup": "Maak een Backup", + "backup-title-update": "Update Backup", + "password-label-setup": "Kies een Wachtwoord", + "password-label-update": "Voer Wachtwoord in", + "backup-button-setup": "Backup", + "backup-button-update": "Update Backup", + "backup-id-label": "Je Backup ID", + "backup-id-note": "Dit wordt gebruikt om later backups te herstellen. Dus sla het ergens veilig op, samen met je wachtwoord.", + "restore-title": "Herstel een Backup", + "restore-id-label": "Herstel ID", + "restore-password-label": "Wachtwoord", + "restore-button": "Herstel", + "backup-error-unknown": "Kon verzoek niet uitvoeren", + "backup-error-password": "Incorrect wachtwoord. Voer alsjeblieft je huidige wachtwoord in.", + "backup-success-msg": "Succesvol Uitgevoerd", + "restore-success-msg": "Config Succesvol Hersteld" + } +} From 3081303bd1bd295c3eacec3f38602932700db42b Mon Sep 17 00:00:00 2001 From: Erik Vroon Date: Thu, 5 Aug 2021 00:12:45 +0200 Subject: [PATCH 093/108] Add nl locale in README and languages.json --- README.md | 1 + src/utils/languages.js | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/README.md b/README.md index a9b795ce..548fe21c 100644 --- a/README.md +++ b/README.md @@ -349,6 +349,7 @@ Dashy has the ability to support multiple languages and locales. When available, #### Supported Languages - 🇬🇧 **English**: `en` - 🇩🇪 **German**: `de` +- 🇳🇱 **Dutch**: `nl` #### Add your Language It would be awesome for open source projects to be available to everyone, without language being a barrier to entry for non-native English speakers. If you have a few minutes to sapir, you're help with translating it would be very much appreciated. diff --git a/src/utils/languages.js b/src/utils/languages.js index 334e4574..2270a94d 100644 --- a/src/utils/languages.js +++ b/src/utils/languages.js @@ -1,6 +1,7 @@ // Locales - Import translation files here! import en from '@/assets/locales/en.json'; import de from '@/assets/locales/de.json'; +import nl from '@/assets/locales/nl.json'; // Language data - Add your country name, locale code and imported file here export const languages = [ @@ -16,6 +17,12 @@ export const languages = [ locale: de, flag: '🇩🇪', }, + { + name: 'Dutch', + code: 'nl', + locale: nl, + flag: '🇳🇱', + }, // Including: // name - Human readable name for your language (e.g German) // code - ISO language code (e.g. de) From 9f5af9a7a5b8a25c817f39aa1860d0ebcac465a5 Mon Sep 17 00:00:00 2001 From: liss-bot Date: Thu, 5 Aug 2021 10:03:33 +0100 Subject: [PATCH 094/108] :yellow_heart: Updates contributors list --- docs/credits.md | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/docs/credits.md b/docs/credits.md index 49dd48ed..e2e90904 100644 --- a/docs/credits.md +++ b/docs/credits.md @@ -10,6 +10,13 @@
    Robert Ernst + + + + swcarlosrj +
    + Carlos Rufo +
    @@ -25,6 +32,13 @@ Alicia Sykes + + + evroon +
    + Erik Vroon +
    + BeginCI @@ -32,6 +46,13 @@ Begin + + + deepsourcebot +
    + DeepSource Bot +
    + turnrye From 3a7ffbf5a7106802a641f83ced90b32be18739c7 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" <41898282+github-actions[bot]@users.noreply.github.com> Date: Thu, 5 Aug 2021 09:03:36 +0000 Subject: [PATCH 095/108] :blue_heart: Updates contributor SVG --- docs/assets/CONTRIBUTORS.svg | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/assets/CONTRIBUTORS.svg b/docs/assets/CONTRIBUTORS.svg index 1f922fa5..2e54d14b 100644 --- a/docs/assets/CONTRIBUTORS.svg +++ b/docs/assets/CONTRIBUTORS.svg @@ -3,7 +3,13 @@ + + + + + + - + \ No newline at end of file From 8012d8574909215039e6f064b2ed5f542a31699c Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:15:21 +0100 Subject: [PATCH 096/108] :arrow_down: Re: #118 Downgrades and pins vue-material-tabs to 0.1.5, to prevent breaking changes --- package.json | 4 ++-- yarn.lock | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index e3f69789..b11583ac 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,7 @@ "vue-cli-plugin-yaml": "^1.0.2", "vue-i18n": "^8.25.0", "vue-js-modal": "^2.0.0-rc.6", - "vue-material-tabs": "^0.1.2", + "vue-material-tabs": "0.1.5", "vue-prism-editor": "^1.2.2", "vue-router": "^3.0.3", "vue-select": "^3.11.2", @@ -91,4 +91,4 @@ "> 1%", "last 2 versions" ] -} \ No newline at end of file +} diff --git a/yarn.lock b/yarn.lock index a5408341..e7fba661 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9768,7 +9768,7 @@ vue-loader@^15.9.2: vue-hot-reload-api "^2.3.0" vue-style-loader "^4.1.0" -vue-material-tabs@^0.1.2: +vue-material-tabs@0.1.5: version "0.1.5" resolved "https://registry.yarnpkg.com/vue-material-tabs/-/vue-material-tabs-0.1.5.tgz#255fc0beb27c005eaae61c1534d782a94c30c525" integrity sha512-ZLFRCxaCS3TM8IwnxQA4S2CVj+tBaILb8fQZDg+Ix+9Zu+k16udrdhLU2GWvJEVPLspuCzKhCEXW4cIg59YkVw== From d8ae1dc1a6d174e365deb047fe351d34ad01e40a Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:20:25 +0100 Subject: [PATCH 097/108] :adhesive_bandage: Re: #119 - Fixes text overflow in theme selector --- src/components/Settings/ThemeSelector.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Settings/ThemeSelector.vue b/src/components/Settings/ThemeSelector.vue index 75d452d7..3b6dc3ea 100644 --- a/src/components/Settings/ThemeSelector.vue +++ b/src/components/Settings/ThemeSelector.vue @@ -131,7 +131,8 @@ export default { div.vs__dropdown-toggle { border-color: var(--settings-text-color); border-radius: var(--curve-factor); - width: 8rem; + min-width: 8rem; + max-width: 16rem; height: 1.8rem; font-size: 0.85rem; cursor: pointer; From d740baf6ab81a4d15c559880927115da8de98535 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:25:23 +0100 Subject: [PATCH 098/108] :adhesive_bandage: Re: #118 - Fixes config menu footer note overflow --- .../Configuration/ConfigContainer.vue | 88 ++++++++++--------- 1 file changed, 48 insertions(+), 40 deletions(-) diff --git a/src/components/Configuration/ConfigContainer.vue b/src/components/Configuration/ConfigContainer.vue index 369af458..29b70467 100644 --- a/src/components/Configuration/ConfigContainer.vue +++ b/src/components/Configuration/ConfigContainer.vue @@ -2,46 +2,48 @@
    -

    Configuration Options

    - - + + - - - - - - - - - -

    {{ getLanguage() }}

    - + + + + + + + +

    {{ getLanguage() }}

    + +
    {{ $t('config.backup-note') }}
    @@ -305,6 +307,13 @@ div.code-container { } .main-options-container { + height: 100%; + display: flex; + flex-direction: column; + justify-content: space-between; +} + +.config-buttons { display: flex; flex-direction: column; background: var(--config-settings-background); @@ -320,7 +329,6 @@ div.code-container { .config-note { width: 80%; - position: absolute; bottom: 1rem; left: 10%; margin: 0.5rem auto; From f13f2cb63185b43530ed96be02283dd888935676 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:39:25 +0100 Subject: [PATCH 099/108] :wrench: Adds config for pull-request-badge integration --- .github/pr-badge.yml | 45 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 .github/pr-badge.yml diff --git a/.github/pr-badge.yml b/.github/pr-badge.yml new file mode 100644 index 00000000..3aed393d --- /dev/null +++ b/.github/pr-badge.yml @@ -0,0 +1,45 @@ +# Config file for pull-request-badge. Enables badges to be assigned to certain PRs. + +# Checks if the required sections are missing +- label: "Missing" + message: "Category" + color: "#f25265" + when: "$payload.pull_request.body.includes('Category') === false" +- label: "Missing" + message: "Overview" + color: "#f25265" + when: "$payload.pull_request.body.includes('Overview') === false" +- label: "Missing" + message: "Quality Checklist" + color: "#f25265" + when: "$payload.pull_request.body.includes('Code Quality Checklist') === false" +- label: "Description" + when: "$payload.pull_request.body.length < 25" + message: "Incomplete" + color: "#f25265" + +# Add size label based on very large or tiny PRs +- label: "PR Size" + message: "Large" + color: "#f79c47" + when: "$additions > 600" +- label: "PR Size" + message: "Quick" + color: "#3eef8b" + when: "$additions < 5" + +# Show PR number, to destination and from destination +- label: "#$prNumber" + message: "$payload.pull_request.user.login /$payload.pull_request.head.ref → $payload.repository.full_name" + color: "#ab5afc" + +# Show total code added minus deleted +- label: "New Code" + message: "Commits: $payload.pull_request.commits | Files Changed: $payload.pull_request.changed_files | Additions: $payload.pull_request.additions-$payload.pull_request.deletions" + color: "#dddd00" + +# Show submitting user's username +- label: Submitted by + message: "$payload.pull_request.user.login" + color: "#fc7bf1" + when: "$payload.pull_request.author_association !== 'OWNER'" From b16e5603127a4152f3ee4f1ba173f417fe123d75 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:40:04 +0100 Subject: [PATCH 100/108] :bookmark: Bumps to V 1.5.2 and updates changelog --- .github/CHANGELOG.md | 7 ++++++- package.json | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index f74f6fca..8acdbf61 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,7 +1,12 @@ # Changelog +## 🩹 1.5.2 - UI Quick Fix [PR #121](https://github.com/Lissy93/dashy/pull/121) +- Downgrades and pins vue-material-tabs to 0.1.5, to prevent breaking changes. Fixes #118 p1 +- Sets auto-width for theme selector, so text doesn't wrap for long theme names. Fixes #119 +- Uses flex layout for config menu, so note doesn't overlap menu on small screens. Fixes #118 p2 + ## 🩹 1.5.1 - UI Quick Fix [PR #116](https://github.com/Lissy93/dashy/pull/116) -- Fixes #115 - Some longer languages (e.g. French) cause text to break to the next line +- Uses min-max width parent layout, to prevent longer languages (e.g. French) text overflow. Fixes #115 ## 🔒 1.5.0 - Improve Robustness of Auth [PR #113](https://github.com/Lissy93/dashy/pull/113) - Use both username + password for generating token, so that a change in either will log the user out diff --git a/package.json b/package.json index b11583ac..55ef63a8 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.5.1", + "version": "1.5.2", "license": "MIT", "main": "server", "scripts": { @@ -91,4 +91,4 @@ "> 1%", "last 2 versions" ] -} +} \ No newline at end of file From 8243a8fec32a78a1d53263dc17f91b6a6c7e7196 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 20:42:38 +0100 Subject: [PATCH 101/108] :bookmark: Bumps to V 1.5.3 and updates changelog --- .github/CHANGELOG.md | 5 ++++- package.json | 2 +- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 8acdbf61..27ba5d75 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,10 +1,13 @@ # Changelog -## 🩹 1.5.2 - UI Quick Fix [PR #121](https://github.com/Lissy93/dashy/pull/121) +## 🩹 1.5.3 - UI Quick Fix [PR #121](https://github.com/Lissy93/dashy/pull/121) - Downgrades and pins vue-material-tabs to 0.1.5, to prevent breaking changes. Fixes #118 p1 - Sets auto-width for theme selector, so text doesn't wrap for long theme names. Fixes #119 - Uses flex layout for config menu, so note doesn't overlap menu on small screens. Fixes #118 p2 +## 🌐 1.5.2 - Adds Dutch Translations [PR #120](https://github.com/Lissy93/dashy/pull/120) +- Dutch language support, contributed by @evroon + ## 🩹 1.5.1 - UI Quick Fix [PR #116](https://github.com/Lissy93/dashy/pull/116) - Uses min-max width parent layout, to prevent longer languages (e.g. French) text overflow. Fixes #115 diff --git a/package.json b/package.json index 55ef63a8..22f2b65d 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.5.2", + "version": "1.5.3", "license": "MIT", "main": "server", "scripts": { From 8829333d6826272a0d00d1849795f7ff62ad20d2 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 21:04:53 +0100 Subject: [PATCH 102/108] :whale: Adds Docker support for ARM-32v7 Architecture --- Dockerfile-arm32v7 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Dockerfile-arm32v7 diff --git a/Dockerfile-arm32v7 b/Dockerfile-arm32v7 new file mode 100644 index 00000000..2c49e078 --- /dev/null +++ b/Dockerfile-arm32v7 @@ -0,0 +1,30 @@ +FROM arm32v7/node:latest + +# Define some ENV Vars +ENV PORT 80 +ENV DIRECTORY /app +ENV IS_DOCKER true + +# Create and set the working directory +WORKDIR ${DIRECTORY} + +# Copy over both 'package.json' and 'package-lock.json' (if available) +COPY package*.json ./ + +# Install project dependencies +RUN yarn + +# Copy over all project files and folders to the working directory +COPY . . + +# Build initial app for production +RUN yarn build + +# Expose given port +EXPOSE ${PORT} + +# Finally, run start command to serve up the built application +CMD [ "yarn", "build-and-start"] + +# Run simple healthchecks every 5 mins, to check the Dashy's everythings great +HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check From 37214410d7c2c807e91218863fce3282f183da41 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 21:05:18 +0100 Subject: [PATCH 103/108] :whale: Adds Docker support for ARM-64v8 Architecture --- Dockerfile-arm64v8 | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) create mode 100644 Dockerfile-arm64v8 diff --git a/Dockerfile-arm64v8 b/Dockerfile-arm64v8 new file mode 100644 index 00000000..3cd8f48f --- /dev/null +++ b/Dockerfile-arm64v8 @@ -0,0 +1,30 @@ +FROM arm64v8/node:latest + +# Define some ENV Vars +ENV PORT 80 +ENV DIRECTORY /app +ENV IS_DOCKER true + +# Create and set the working directory +WORKDIR ${DIRECTORY} + +# Copy over both 'package.json' and 'package-lock.json' (if available) +COPY package*.json ./ + +# Install project dependencies +RUN yarn + +# Copy over all project files and folders to the working directory +COPY . . + +# Build initial app for production +RUN yarn build + +# Expose given port +EXPOSE ${PORT} + +# Finally, run start command to serve up the built application +CMD [ "yarn", "build-and-start"] + +# Run simple healthchecks every 5 mins, to check the Dashy's everythings great +HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check From 1b3876c7802f96e1dbe92aa8d06e0f65bddaa746 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 22:00:29 +0100 Subject: [PATCH 104/108] :memo: Adds link to Vue styleguide --- docs/developing.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/docs/developing.md b/docs/developing.md index ef9186bc..d9f07199 100644 --- a/docs/developing.md +++ b/docs/developing.md @@ -154,7 +154,7 @@ As well as Node, Git and Docker- you'll also need an IDE (e.g. [VS Code](https:/ ## Style Guide -Linting is done using [ESLint](https://eslint.org/), and using the [Vue.js Styleguide](https://github.com/vuejs/eslint-config-standard), which is very similar to the [AirBnB Stylguide](https://github.com/airbnb/javascript). You can run `yarn lint` to report and fix issues. While the dev server is running, issues will be reported to the console automatically. Any lint errors will trigger the build to fail. Note that all lint checks must pass before any PR can be merged. Linting is also run as a git pre-commit hook +Linting is done using [ESLint](https://eslint.org/), and using the [Vue.js Styleguide](https://github.com/vuejs/eslint-config-standard), which is very similar to the [AirBnB Stylguide](https://github.com/airbnb/javascript). You can run `yarn lint` to report and fix issues. While the dev server is running, issues will be reported to the console automatically, and any lint errors will trigger the build to fail. Note that all lint checks must pass before any PR can be merged. Linting is also run as a git pre-commit hook The most significant things to note are: - Indentation should be done with two spaces @@ -167,7 +167,9 @@ The most significant things to note are: - All multiline blocks must use braces - Avoid console statements in the frontend -For the full styleguide, see: [github.com/airbnb/javascript](https://github.com/airbnb/javascript) +Styleguides: +- Vue: [Vue styleguide](https://vuejs.org/v2/style-guide/) +- JavaScript: [github.com/airbnb/javascript](https://github.com/airbnb/javascript) --- From 48201582512f44ef9d46b6eb1db7d46aee98869a Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 22:01:55 +0100 Subject: [PATCH 105/108] :memo: Adds docs for deployment to RPi and ARM-based architecutures --- docs/deployment.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/deployment.md b/docs/deployment.md index 036070ea..e91cf72f 100644 --- a/docs/deployment.md +++ b/docs/deployment.md @@ -25,6 +25,8 @@ Once you've got Dashy up and running, you'll want to configure it with your own ### Deploy with Docker +[![Dashy on Docker Hub](https://dockeri.co/image/lissy93/dashy)](https://hub.docker.com/r/lissy93/dashy) + Dashy has a built container image hosted on [Docker Hub](https://hub.docker.com/r/lissy93/dashy). You will need [Docker](https://docs.docker.com/get-docker/) installed on your system. @@ -43,10 +45,12 @@ Explanation of the above options: - `-v` Specify volumes, to pass data from your host system to the container, in the format of `[host-path]:[container-path]`, you can use this to pass your config file, directory of assets (like icons), custom CSS or web assets (like favicon.ico, manifest.json etc) - `--name` Give your container a human-readable name - `--restart=always` Spin up the container when the daemon starts, or after it has been stopped -- `lissy93/dashy:latest` This last option is the image the container should be built from, you can also use a specific version, by replacing `:latest` with one of tthe [tags](https://hub.docker.com/r/lissy93/dashy/tags) +- `lissy93/dashy:latest` This last option is the image the container should be built from, you can also use a specific version, by replacing `:latest` with one of the [tags](https://hub.docker.com/r/lissy93/dashy/tags) For all available options, and to learn more, see the [Docker Run Docs](https://docs.docker.com/engine/reference/commandline/run/) +If you're deploying Dashy on a modern ARM-based board, such as a Raspberry Pi (2+), then you'll need to use one of Dashy's ARM images. Set the base image + tag to either `lissy93/dashy:arm64v8` or `lissy93/dashy:arm32v7`, depending on your system architecture. + ### Using Docker Compose Using Docker Compose can be useful for saving your specific config in files, without having to type out a long run command each time. Save compose config as a YAML file, and then run `docker compose up` (optionally use the `-f` flag to specify file location, if it isn't located at `./docker-compose.yml`). From 0bb2c7e0343c7aa78cb453440fb3fd60a3979663 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Thu, 5 Aug 2021 22:02:50 +0100 Subject: [PATCH 106/108] :bookmark: Bumps to V 1.5.4 and updates changelog --- .github/CHANGELOG.md | 5 +++++ package.json | 2 +- 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/.github/CHANGELOG.md b/.github/CHANGELOG.md index 27ba5d75..12cc322a 100644 --- a/.github/CHANGELOG.md +++ b/.github/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 🐳 1.5.4 - Docker ARM Support [PR #122](https://github.com/Lissy93/dashy/pull/122) +- Adds Docker files for `arm64v8` and `arm32v7` in order to support Raspberry Pi and other modern ARM-based devices +- Publishes these images on DockerHub and sets up a workflow to submit a new container every time a release is made +- Adds documentation for running Dashy on RPi/ ARM-based devices, Re: #117 + ## 🩹 1.5.3 - UI Quick Fix [PR #121](https://github.com/Lissy93/dashy/pull/121) - Downgrades and pins vue-material-tabs to 0.1.5, to prevent breaking changes. Fixes #118 p1 - Sets auto-width for theme selector, so text doesn't wrap for long theme names. Fixes #119 diff --git a/package.json b/package.json index 22f2b65d..e40fc224 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "Dashy", - "version": "1.5.3", + "version": "1.5.4", "license": "MIT", "main": "server", "scripts": { From 0e23fdc16ca19f2420ccbbbb5da8ab718d12f437 Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 6 Aug 2021 17:20:49 +0100 Subject: [PATCH 107/108] :whale: Fixes Yarn missing in ARM images --- Dockerfile-arm32v7 | 3 +++ Dockerfile-arm64v8 | 3 +++ 2 files changed, 6 insertions(+) diff --git a/Dockerfile-arm32v7 b/Dockerfile-arm32v7 index 2c49e078..a7009c4b 100644 --- a/Dockerfile-arm32v7 +++ b/Dockerfile-arm32v7 @@ -8,6 +8,9 @@ ENV IS_DOCKER true # Create and set the working directory WORKDIR ${DIRECTORY} +# Install Yarn +RUN npm install -g yarn + # Copy over both 'package.json' and 'package-lock.json' (if available) COPY package*.json ./ diff --git a/Dockerfile-arm64v8 b/Dockerfile-arm64v8 index 3cd8f48f..b3ab8bb5 100644 --- a/Dockerfile-arm64v8 +++ b/Dockerfile-arm64v8 @@ -8,6 +8,9 @@ ENV IS_DOCKER true # Create and set the working directory WORKDIR ${DIRECTORY} +# Install Yarn +RUN npm install -g yarn + # Copy over both 'package.json' and 'package-lock.json' (if available) COPY package*.json ./ From 9e3d728768a5e5b3dc6755c125c154bef607830c Mon Sep 17 00:00:00 2001 From: Alicia Sykes Date: Fri, 6 Aug 2021 20:47:37 +0100 Subject: [PATCH 108/108] :whale: Fixes Docker images for ARM-based devices --- Dockerfile-arm32v7 | 16 +++++++--------- Dockerfile-arm64v8 | 6 ++---- 2 files changed, 9 insertions(+), 13 deletions(-) diff --git a/Dockerfile-arm32v7 b/Dockerfile-arm32v7 index a7009c4b..437d1ebf 100644 --- a/Dockerfile-arm32v7 +++ b/Dockerfile-arm32v7 @@ -8,26 +8,24 @@ ENV IS_DOCKER true # Create and set the working directory WORKDIR ${DIRECTORY} -# Install Yarn -RUN npm install -g yarn +# Copy over both 'package.json' and 'yarn.lock' +COPY package.json ./ +COPY yarn.lock ./ -# Copy over both 'package.json' and 'package-lock.json' (if available) -COPY package*.json ./ - -# Install project dependencies +# Install dependencies RUN yarn # Copy over all project files and folders to the working directory COPY . . -# Build initial app for production +# Build Dashy for production RUN yarn build -# Expose given port +# Expose users port EXPOSE ${PORT} # Finally, run start command to serve up the built application CMD [ "yarn", "build-and-start"] -# Run simple healthchecks every 5 mins, to check the Dashy's everythings great +# Enable Docker healthcecks, to ensure Dashy is running correctly HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check diff --git a/Dockerfile-arm64v8 b/Dockerfile-arm64v8 index b3ab8bb5..c5fd92f6 100644 --- a/Dockerfile-arm64v8 +++ b/Dockerfile-arm64v8 @@ -8,11 +8,9 @@ ENV IS_DOCKER true # Create and set the working directory WORKDIR ${DIRECTORY} -# Install Yarn -RUN npm install -g yarn - # Copy over both 'package.json' and 'package-lock.json' (if available) -COPY package*.json ./ +COPY package.json ./ +COPY yarn.lock ./ # Install project dependencies RUN yarn