diff --git a/docs/assets/CONTRIBUTORS.svg b/docs/assets/CONTRIBUTORS.svg
deleted file mode 100644
index 4776780a..00000000
--- a/docs/assets/CONTRIBUTORS.svg
+++ /dev/null
@@ -1,9 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/assets/config-editor-demo.gif b/docs/assets/config-editor-demo.gif
deleted file mode 100644
index 09fcd584..00000000
Binary files a/docs/assets/config-editor-demo.gif and /dev/null differ
diff --git a/docs/assets/logo.png b/docs/assets/logo.png
deleted file mode 100644
index 78fabd25..00000000
Binary files a/docs/assets/logo.png and /dev/null differ
diff --git a/docs/assets/status-check-demo.gif b/docs/assets/status-check-demo.gif
deleted file mode 100644
index 43422a02..00000000
Binary files a/docs/assets/status-check-demo.gif and /dev/null differ
diff --git a/docs/assets/theme-slideshow.gif b/docs/assets/theme-slideshow.gif
deleted file mode 100644
index 73f94dc5..00000000
Binary files a/docs/assets/theme-slideshow.gif and /dev/null differ
diff --git a/docs/assets/workspace-demo.gif b/docs/assets/workspace-demo.gif
deleted file mode 100644
index c6e186ae..00000000
Binary files a/docs/assets/workspace-demo.gif and /dev/null differ
diff --git a/docs/authentication.md b/docs/authentication.md
deleted file mode 100644
index 4cba3e5b..00000000
--- a/docs/authentication.md
+++ /dev/null
@@ -1,177 +0,0 @@
-# Authentication
-
-- [Built-In Login Feature](#authentication)
- - [Setting Up Authentication](#setting-up-authentication)
- - [Hash Password](#hash-password)
- - [Logging In and Out](#logging-in-and-out)
- - [Security](#security)
-- [Alternative Authentication Methods](#alternative-authentication-methods)
- - [VPN](#vpn)
- - [IP-Based Access](#ip-based-access)
- - [Web Server Authentication](#web-server-authentication)
- - [OAuth Services](#oauth-services)
- - [Auth on Cloud Hosting Services](#static-site-hosting-providers)
-
-Dashy has a basic login page included, and frontend authentication. You can enable this by adding users to the `auth` section under `appConfig` in your `conf.yml`. If this section is not specified, then no authentication will be required to access the app, and it the homepage will resolve to your dashboard.
-
-## Setting Up Authentication
-The `auth` property takes an array of users. Each user needs to include a username, hash and optional user type (`admin` or `normal`). The hash property is a [SHA-256 Hash](https://en.wikipedia.org/wiki/SHA-2) of your desired password.
-
-For example:
-```yaml
-appConfig:
- auth:
- - user: alicia
- hash: 4D1E58C90B3B94BCAD9848ECCACD6D2A8C9FBC5CA913304BBA5CDEAB36FEEFA3
- type: admin
- - user: edward
- hash: 5E884898DA28047151D0E56F8DC6292773603D0D6AABBDD62A11EF721D1542D8
- type: admin
-```
-## Hash Password
-Dashy uses [SHA-256 Hash](https://en.wikipedia.org/wiki/Sha-256), a 64-character string, which you can generate using an online tool, such as [this one](https://passwordsgenerator.net/sha256-hash-generator/) or [CyberChef](https://gchq.github.io/CyberChef/) (which can be self-hosted/ ran locally).
-
-A hash is a one-way cryptographic function, meaning that it is easy to generate a hash for a given password, but very hard to determine the original password for a given hash. This means, that so long as your password is long, strong and unique, it is safe to store it's hash in the clear. Having said that, you should never reuse passwords, hashes can be cracked by iterating over known password lists, generating a hash of each.
-
-## Logging In and Out
-Once authentication is enabled, so long as there is no valid token in cookie storage, the application will redirect the user to the login page. When the user enters credentials in the login page, they will be checked, and if valid, then a token will be generated, and they can be redirected to the home page. If credentials are invalid, then an error message will be shown, and they will remain on the login page. Once in the application, to log out the user can click the logout button (in the top-right), which will clear cookie storage, causing them to be redirected back to the login page.
-
-## Security
-Since all authentication is happening entirely on the client-side, it is vulnerable to manipulation by an adversary. An attacker could look at the source code, find the function used generate the auth token, then decode the minified JavaScript to find the hash, and manually generate a token using it, then just insert that value as a cookie using the console, and become a logged in user. Therefore, if you need secure authentication for your app, it is strongly recommended to implement this using your web server, or use a VPN to control access to Dashy. The purpose of the login page is merely to prevent immediate unauthorized access to your homepage.
-
-Addressing this is on the todo list, and there are several potential solutions:
-1. Encrypt all site data against the users password, so that an attacker can not physically access any data without the correct decryption key
-2. Use a backend service to handle authentication and configuration, with no user data returned from the server until the correct credentials are provided. However, this would require either Dashy to be run using it's Node.js server, or the use of an external service
-3. Implement authentication using a self-hosted identity management solution, such as [Keycloak for Vue](https://www.keycloak.org/securing-apps/vue)
-
-**[⬆️ Back to Top](#authentication)**
-
----
-
-## Alternative Authentication Methods
-
-If you are self-hosting Dashy, and require secure authentication to prevent unauthorized access, you have several options:
-- [Authentication Server](#authentication-server) - Put Dashy behind a self-hosted auth server
-- [VPN](#vpn) - Use a VPN to tunnel into the network where Dashy is running
-- [IP-Based Access](#ip-based-access) - Disallow access from all IP addresses, except your own
-- [Web Server Authentication](#web-server-authentication) - Enable user control within your web server or proxy
-- [OAuth Services](#oauth-services) - Implement a user management system using a cloud provider
-- [Password Protection (for cloud providers)](#static-site-hosting-providers) - Enable password-protection on your site
-
-### Authentication Server
-##### Authelia
-[Authelia](https://www.authelia.com/) is an open-source full-featured authentication server, which can be self-hosted and either on bare metal, in a Docker container or in a Kubernetes cluster. It allows for fine-grained access control rules based on IP, path, users etc, and supports 2FA, simple password access or bypass policies for your domains.
-
-- `git clone https://github.com/authelia/authelia.git`
-- `cd authelia/examples/compose/lite`
-- Modify the `users_database.yml` the default username and password is authelia
-- Modify the `configuration.yml` and `docker-compose.yml` with your respective domains and secrets
-- `docker-compose up -d`
-
-For more information, see the [Authelia docs](https://www.authelia.com/docs/)
-
-### VPN
-A catch-all solution to accessing services running from your home network remotely is to use a VPN. It means you do not need to worry about implementing complex authentication rules, or trusting the login implementation of individual applications. However it can be inconvenient to use on a day-to-day basis, and some public and corporate WiFi block VPN connections. Two popular VPN protocols are [OpenVPN](https://openvpn.net/) and [WireGuard](https://www.wireguard.com/)
-
-### IP-Based Access
-If you have a static IP or use a VPN to access your running services, then you can use conditional access to block access to Dashy from everyone except users of your pre-defined IP address. This feature is offered by most cloud providers, and supported by most web servers.
-
-##### Apache
-In Apache, this is configured in your `.htaccess` file in Dashy's root folder, and should look something like:
-```
-Order Deny,Allow
-Deny from all
-Allow from [your-ip]
-```
-
-##### NGINX
-In NGINX you can specify [control access](https://docs.nginx.com/nginx/admin-guide/security-controls/controlling-access-proxied-http/) rules for a given site in your `nginx.conf` or hosts file. For example:
-```
-server {
- listen 80;
- server_name www.dashy.example.com;
- location / {
- root /path/to/dashy/;
- passenger_enabled on;
- allow [your-ip];
- deny all;
- }
- }
-```
-
-##### Caddy
-In Caddy, [Request Matchers](https://caddyserver.com/docs/caddyfile/matchers) can be used to filter requests
-```
-dashy.site {
- @public_networks not remote_ip [your-ip]
- respond @public_networks "Access denied" 403
-}
-```
-
-### Web Server Authentication
-Most web servers make password protecting certain apps very easy. Note that you should also set up HTTPS and have a valid certificate in order for this to be secure.
-
-##### Apache
-First crate a `.htaccess` file in Dashy's route directory. Specify the auth type and path to where you want to store the password file (usually the same folder). For example:
-```
-AuthType Basic
-AuthName "Please Sign into Dashy"
-AuthUserFile /path/dashy/.htpasswd
-require valid-user
-```
-
-Then create a `.htpasswd` file in the same directory. List users and their hashed passwords here, with one user on each line, and a colon between username and password (e.g. `[username]:[hashed-password]`). You will need to generate an MD5 hash of your desired password, this can be done with an [online tool](https://www.web2generators.com/apache-tools/htpasswd-generator). Your file will look something like:
-```
-alicia:$apr1$jv0spemw$RzOX5/GgY69JMkgV6u16l0
-```
-
-##### NGINX
-NGINX has an [authentication module](https://nginx.org/en/docs/http/ngx_http_auth_basic_module.html) which can be used to add passwords to given sites, and is fairly simple to set up. Similar to above, you will need to create a `.htpasswd` file. Then just enable auth and specify the path to that file, for example:
-```
-location / {
- auth_basic "closed site";
- auth_basic_user_file conf/htpasswd;
-}
-```
-##### Caddy
-Caddy has a [basic-auth](https://caddyserver.com/docs/caddyfile/directives/basicauth) directive, where you specify a username and hash. The password hash needs to be base-64 encoded, the [`caddy hash-password`](https://caddyserver.com/docs/command-line#caddy-hash-password) command can help with this. For example:
-```
-basicauth /secret/* {
- alicia JDJhJDEwJEVCNmdaNEg2Ti5iejRMYkF3MFZhZ3VtV3E1SzBWZEZ5Q3VWc0tzOEJwZE9TaFlZdEVkZDhX
-}
-```
-
-For more info about implementing a single sign on for all your apps with Caddy, see [this tutorial](https://joshstrange.com/securing-your-self-hosted-apps-with-single-signon/)
-
-##### Lighttpd
-You can use the [mod_auth](https://doc.lighttpd.net/lighttpd2/mod_auth.html) module to secure your site with Lighttpd. Like with Apache, you need to first create a password file listing your usersnames and hashed passwords, but in Lighttpd, it's usually called `.lighttpdpassword`.
-
-Then in your `lighttpd.conf` file (usually in the `/etc/lighttpd/` directory), load in the mod_auth module, and configure it's directives. For example:
-```
-server.modules += ( "mod_auth" )
-auth.debug = 2
-auth.backend = "plain"
-auth.backend.plain.userfile = "/home/lighttpd/.lighttpdpassword"
-
-$HTTP["host"] == "dashy.my-domain.net" {
- server.document-root = "/home/lighttpd/dashy.my-domain.net/http"
- server.errorlog = "/var/log/lighttpd/dashy.my-domain.net/error.log"
- accesslog.filename = "/var/log/lighttpd/dashy.my-domain.net/access.log"
- auth.require = (
- "/docs/" => (
- "method" => "basic",
- "realm" => "Password protected area",
- "require" => "user=alicia"
- )
- )
-}
-```
-Restart your web server for changes to take effect.
-
-### OAuth Services
-There are also authentication services, such as [Ory.sh](https://www.ory.sh/), [Okta](https://developer.okta.com/), [Auth0](https://auth0.com/), [Firebase](https://firebase.google.com/docs/auth/). Implementing one of these solutions would involve some changes to the [`Auth.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/Auth.js) file, but should be fairly straight forward.
-
-### Static Site Hosting Providers
-If you are hosting Dashy on a cloud platform, you will probably find that it has built-in support for password protected access to web apps. For more info, see the relevant docs for your provider, for example: [Netlify Password Protection](https://docs.netlify.com/visitor-access/password-protection/), [Cloudflare Access](https://www.cloudflare.com/teams/access/), [AWS Cognito](https://aws.amazon.com/cognito/), [Azure Authentication](https://docs.microsoft.com/en-us/azure/app-service/scenario-secure-app-authentication-app-service) and [Vercel Password Protection](https://vercel.com/docs/platform/projects#password-protection).
-
-**[⬆️ Back to Top](#authentication)**
diff --git a/docs/backup-restore.md b/docs/backup-restore.md
deleted file mode 100644
index 0ffca7d2..00000000
--- a/docs/backup-restore.md
+++ /dev/null
@@ -1,110 +0,0 @@
-# Cloud Backup and Restore
-
-Dashy has a built-in feature for securely backing up your config to a hosted cloud service, and then restoring it on another instance. This feature is totally optional, and if you do not enable it, then Dashy will not make any external network requests.
-
-This is useful not only for backing up your configuration off-site, but it also enables Dashy to be used without having write a YAML config file, and makes it possible to use a public hosted instance, without the need to self-host.
-
-
-
-
-
-### How it Works
-
-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.
-
-
-### Creating a Backup
-Once you've got Dashy configured to your preference, open the Backup & Restore menu (click the Cloud icon in the top-right corner). Here you will be prompted to choose a password, which will be used to encrypt your data. If you forget this password, there will be no way to recover your config. After clicking 'Backup' your data will be encrypted, compressed and sent to the hosted cloud service. A backup ID will be returned (in the format of xxxx-xxxx-xxxx-xxxx), this is what you use, along with your password to restore the backup on another system, so take note of it. To update a backup, return to this menu, enter your password, and click 'Update Backup'.
-
-### Restoring a Backup
-To restore a backup, navigate to the Backup & Restore menu, and under restore, enter your backup ID, and the password you chose. Your config file will be downloaded, decrypted and applied to local storage.
-
-### Privacy & Security
-
-Data is only ever sent to the cloud when the user actively triggers a backup. All transmitted data is first encrypted using [AES](https://en.wikipedia.org/wiki/Advanced_Encryption_Standard). Your selected password never leaves your device, and is hashed before being compared. It is only possible to restore a configuration if you have both the backup ID and decryption password.
-
-Because the data is encrypted on the client-side (before being sent to the cloud), it is not possible for a man-in-the-middle, government entity, website owner, or even Cloudflare to be able read any of your data. The biggest risk to your data, would be a weak password, or a compromised system.
-
-Having said that, although the code uses robust security libraries and is open source- it was never intended to be a security product, and has not been audited, and therefore cannot be considered totally secure - please keep that in mind.
-
-
-### Fair Use Policy
-
-Maximum of 24mb of storage per user. Please do not repeatedly hit the endpoint, as if the quota is exceeded the service may become less available to other users. Abuse may result in your IP being temporarily banned by Cloudflare.
-
----
-
-### Self-Hosting the Backup Server
-
-
-#### Quick Start
-- Install Wrangler CLI Tool: `npm i -g @cloudflare/wrangler`
-- Log into Cloudflare account: `wrangler login`
-- Create a new project: ` wrangler generate my-project`
-- Install dependencies: `cd my-project` && `npm i`
-
-
-#### Populate `wrangler.toml`
-- Add your `account_id` (found on the right sidebar of the Workers or Overview Dashboard)
-- Add your `zone_id` (found in the Overview tab of your desired domain on Cloudflare)
-- Add your `route`, which should be a domain or host, supporting a wildcard
-
-```toml
-name = "dashy-worker"
-type = "javascript"
-
-workers_dev = true
-route = "example.com/*"
-zone_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-account_id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
-
-kv_namespaces = [
- { binding = "DASHY_CLOUD_BACKUP", id = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" }
-]
-```
-
-#### Complete `index.js`
-- Write code to handle your requests, and interact with any other data sources in this file
-- Generally, this is done within an event listener for 'fetch', and returns a promise
- - For Example:
-
-```javascript
-addEventListener('fetch', event => {
- event.respondWith(handleRequest(event.request))
-})
-
-async function handleRequest(request) {
- return new Response('Hello World!', {
- headers: { 'content-type': 'text/plain' },
- })
-}
-```
-
-- For the code used for Dashy's cloud service, see [here](https://gist.github.com/Lissy93/d19b43d50f30e02fa25f349cf5cb5ed8#file-index-js)
-
-
-#### Commands
-- `wrangler dev` - To start the wrangler development server
-- `wrangler publish` - To publish to your cloudflare account (first run `wrangler login`)
-
-### API
-
-There are four endpoints, and to keep things simple, they all use the same base URL/ route.
-
-- **`GET`** - Get config for a given user
- - `backupId` - The ID of the desired encrypted object
- - `subHash` - The latter half of the password hash, to verify ownership
-- **`POST`** - Save a new config object, and returns `backupId`
- - `userData` - The encrypted, compressed and stringified user config
- - `subHash` - The latter half of the password hash, to verify ownership
-- **`PUT`** - Update an existing config object
- - `backupId` - The ID of the object to update
- - `subHash` - Part of the hash, to verify ownership of said object
- - `userData` - The new data to store
-- **`DELETE`** - Delete a specified config object
- - `backupId` - The ID of the object to be deleted
- - `subHash` - Part of the password hash, to verify ownership of the object
-
-For more info, see the [API Docs](https://documenter.getpostman.com/view/2142819/TzXumzce).
-
-If you are using Postman, you may find this pre-made [collection](https://www.getpostman.com/collections/58f79ddb150223f67b35) helpful in getting things setup.
diff --git a/docs/configuring.md b/docs/configuring.md
deleted file mode 100644
index 1467a114..00000000
--- a/docs/configuring.md
+++ /dev/null
@@ -1,172 +0,0 @@
-# Configuring
-
-All app configuration is specified in [`/public/conf.yml`](https://github.com/Lissy93/dashy/blob/master/public/conf.yml) which is in [YAML Format](https://yaml.org/) format.
-
-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 curley 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.
-
-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).
-
-There's a couple of things to remember, before getting started:
-- After modifying your config, the app needs to be recompiled, run `yarn build` (this happens automatically in newer versions)
-- You can check that your config file fits the schema, by running `yarn validate-config`
-- Any which are only saved locally through the UI need to be exported into this file, in order for them to persist across devices
-
-### Config Saving Methods
-When updating the config through the JSON editor in the UI, you have two save options: **Local** or **Write to Disk**. Changes saved locally will only be applied to the current user through the browser, and to apply to other instances, you either need to use the cloud sync feature, or manually update the conf.yml file. On the other-hand, if you choose to write changes to disk, then your main `conf.yml` file will be updated, and changes will be applied to all users, and visible across all devices.
-
-### Preventing Changes being Written to Disk
-To disallow any changes from being written to disk, then set `appConfig.allowConfigEdit: false`. If you are using users, and have setup `auth` within Dashy, then only users with `type: admin` will be able to write config changes to disk.
-
-It is recommended to make a backup of your config file.
-
-All fields are optional, unless otherwise stated.
-
-### Top-Level Fields
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`pageInfo`** | `object` | Required | Basic meta data like title, description, nav bar links, footer text. See [`pageInfo`](#pageinfo)
-**`appConfig`** | `object` | _Optional_ | Settings related to how the app functions, including API keys and global styles. See [`appConfig`](#appconfig-optional)
-**`sections`** | `array` | Required | An array of sections, each containing an array of items, which will be displayed as links. See [`section`](#section)
-
-**[⬆️ Back to Top](#configuring)**
-
-### `PageInfo`
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`title`** | `string` | Required | Your dashboard title, displayed in the header and browser tab
-**`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
-
-**[⬆️ Back to Top](#configuring)**
-
-### `pageInfo.navLinks` _(optional)_
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`title`** | `string` | Required | The text to display on the link button
-**`path`** | `string` | Required | The URL to navigate to when clicked. Can be relative (e.g. `/about`) or absolute (e.g. `https://example.com` or `http://192.168.1.1`)
-
-**[⬆️ Back to Top](#configuring)**
-
-### `appConfig` _(optional)_
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`statusCheck`** | `boolean` | _Optional_ | When set to `true`, Dashy will ping each of your services and display their status as a dot next to each item. This can be overridden by setting `statusCheck` under each item. Defaults to `false`
-**`statusCheckInterval`** | `boolean` | _Optional_ | The number of seconds between checks. If set to `0` then service will only be checked on initial page load, which is usually the desired functionality. If value is less than `10` you may experience a hit in performance. Defaults to `0`
-**`backgroundImg`** | `string` | _Optional_ | Path to an optional full-screen app background image. This can be either remote (http) or local (/). Note that this will slow down initial load
-**`enableFontAwesome`** | `boolean` | _Optional_ | Where `true` is enabled, if left blank font-awesome will be enabled only if required by 1 or more icons
-**`fontAwesomeKey`** | `string` | _Optional_ | If you have a font-awesome key, then you can use it here and make use of premium icons. It is a 10-digit alpha-numeric string from you're FA kit URL (e.g. `13014ae648`)
-**`faviconApi`** | `string` | _Optional_ | Which service to use to resolve favicons. Set to `local` to do this locally, without using an API. Available options are: `local`, `faviconkit`, `google`, `clearbit`, `webmasterapi` and `allesedv`. Defaults to `faviconkit`. See [Icons](/docs/icons.md#favicons) for more info
-**`auth`** | `array` | _Optional_ | An array of objects containing usernames and hashed passwords. If this is not provided, then authentication will be off by default, and you will not need any credentials to access the app. Note authentication is done on the client side, and so if your instance of Dashy is exposed to the internet, it is recommend to configure your web server to handle this. See [`auth`](#appconfigauth-optional)
-**`layout`** | `string` | _Optional_ | App layout, either `horizontal`, `vertical`, `auto` or `sidebar`. Defaults to `auto`. This specifies the layout and direction of how sections are positioned on the home screen. This can also be modified from the UI.
-**`iconSize`** | `string` | _Optional_ | The size of link items / icons. Can be either `small`, `medium,` or `large`. Defaults to `medium`. This can also be set directly from the UI.
-**`theme`** | `string` | _Optional_ | The default theme for first load (you can change this later from the UI)
-**`cssThemes`** | `string[]` | _Optional_ | An array of custom theme names which can be used in the theme switcher dropdown
-**`externalStyleSheet`** | `string` or `string[]` | _Optional_ | Either a URL to an external stylesheet or an array or URLs, which can be applied as themes within the UI
-**`customCss`** | `string` | _Optional_ | Raw CSS that will be applied to the page. This can also be set from the UI. Please minify it first.
-**`showSplashScreen`** | `boolean` | _Optional_ | Should display a splash screen while the app is loading. Defaults to false, except on first load
-**`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.
-**`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`.
-
-**[⬆️ Back to Top](#configuring)**
-
-### `appConfig.auth` _(optional)_
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`user`** | `string` | Required | Username to log in with
-**`hash`** | `string` | Required | A SHA-256 hashed password
-**`type`** | `string` | _Optional_ | The user type, either admin or normal
-
-**[⬆️ Back to Top](#configuring)**
-
-### `section`
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`name`** | `string` | Required | The title for the section
-**`icon`** | `string` | _Optional_ | An single icon to be displayed next to the title. See [`section.icon`](#sectionicon-and-sectionitemicon)
-**`items`** | `array` | Required | An array of items to be displayed within the section. See [`item`](#sectionitem)
-**`displayData`** | `object` | _Optional_ | Meta-data to optionally overide display settings for a given section. See [`displayData`](#sectiondisplaydata-optional)
-
-**[⬆️ Back to Top](#configuring)**
-
-### `section.item`
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`title`** | `string` | Required | The text to display/ title of a given item. Max length `18`
-**`description`** | `string` | _Optional_ | Additional info about an item, which is shown in the tooltip on hover, or visible on large tiles
-**`url`** | `string` | Required | The URL / location of web address for when the item is clicked
-**`icon`** | `string` | _Optional_ | The icon for a given item. Can be a font-awesome icon, favicon, remote URL or local URL. See [`item.icon`](#sectionicon-and-sectionitemicon)
-**`target`** | `string` | _Optional_ | The opening method for when the item is clicked, either `newtab`, `sametab`, `modal` or `workspace`. Where `newtab` will open the link in a new tab, `sametab` will open it in the current tab, and `modal` will open a pop-up modal with the content displayed within that iframe. Note that for the iframe to load, you must have set the CORS headers to either allow `*` ot allow the domain that you are hosting Dashy on, for some websites and self-hosted services, this is already set.
-**`statusCheck`** | `boolean` | _Optional_ | When set to `true`, Dashy will ping the URL associated with the current service, and display its status as a dot next to the item. The value here will override `appConfig.statusCheck` so you can turn off or on checks for a given service. Defaults to `appConfig.statusCheck`, falls back to `false`
-**`color`** | `string` | _Optional_ | An optional color for the text and font-awesome icon to be displayed in. Note that this will override the current theme and so may not display well
-**`backgroundColor`** | `string` | _Optional_ | An optional background fill color for the that given item. Again, this will override the current theme and so might not display well against the background
-
-**[⬆️ Back to Top](#configuring)**
-
-### `section.displayData` _(optional)_
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`collapsed`** | `boolean` | _Optional_ | If true, the section will be collapsed initially, and will need to be clicked to open. Useful for less regularly used, or very long sections. Defaults to `false`
-**`color`** | `string` | _Optional_ | A custom accent color for the section, as a hex code or HTML color (e.g. `#fff`)
-**`customStyles`** | `string` | _Optional_ | Custom CSS properties that should be applied to that section, e.g. `border: 2px dashed #ff0000;`
-**`itemSize`** | `string` | _Optional_ | Specify the size for items within this group, either `small`, `medium` or `large`. Note that this will overide any settings specified through the UI
-**`rows`** | `number` | _Optional_ | Height of the section, specified as the number of rows it should span vertically, e.g. `2`. Defaults to `1`. Max is `5`.
-**`cols`** | `number` | _Optional_ | Width of the section, specified as the number of columns the section should span horizontally, e.g. `2`. Defaults to `1`. Max is `5`.
-**`sectionLayout`** | `string` | _Optional_ | Specify which CSS layout will be used to responsivley place items. Can be either `auto` (which uses flex layout), or `grid`. If `grid` is selected, then `itemCountX` and `itemCountY` may also be set. Defaults to `auto`
-**`itemCountX`** | `number` | _Optional_ | The number of items to display per row / horizontally. If not set, it will be calculated automatically based on available space. Can only be set if `sectionLayout` is set to `grid`. Must be a whole number between `1` and `12`
-**`itemCountY`** | `number` | _Optional_ | The number of items to display per column / vertically. If not set, it will be calculated automatically based on available space. If `itemCountX` is set, then `itemCountY` can be calculated automatically. Can only be set if `sectionLayout` is set to `grid`. Must be a whole number between `1` and `12`
-
-**[⬆️ Back to Top](#configuring)**
-
-### `section.icon` and `section.item.icon`
-
-**Field** | **Type** | **Required**| **Description**
---- | --- | --- | ---
-**`icon`** | `string` | _Optional_ | The icon for a given item or section. Can be a font-awesome icon, favicon, remote URL or local URL. If set to `favicon`, the icon will be automatically fetched from the items website URL. To use font-awesome, specify the category, followed by the icon name, e.g. `fas fa-rocket`, `fab fa-monero` or `fal fa-duck` - note that to use pro icons, you mut specify `appConfig.fontAwesomeKey`. If set to `generative`, then a unique icon is generated from the apps URL or IP. You can also use hosted any by specifying it's URL, e.g. `https://i.ibb.co/710B3Yc/space-invader-x256.png`. To use a local image, first store it in `./public/item-icons/` (or `-v /app/public/item-icons/` in Docker) , and reference it by name and extension - e.g. set `image.png` to use `./public/item-icon/image.png`, you can also use sub-folders if you have a lot of icons, to keep them organised.
-
-**[⬆️ Back to Top](#configuring)**
-
-### Example
-
-```yaml
----
-pageInfo:
- title: Home Lab
-sections: # An array of sections
-- name: Section 1 - Getting Started
- items: # An array of items
- - title: GitHub
- 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
- description: A live demo
- icon: far fa-rocket
- url: https://dashy-demo-1.netlify.app
-- name: Section 2 - Local Services
- items:
- - title: Firewall
- icon: favicon
- url: http://192.168.1.1/
- - title: Game Server
- icon: https://i.ibb.co/710B3Yc/space-invader-x256.png
- url: http://192.168.130.1/
-```
-
-For more example config files, see: [this gist](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10)
-
-**[⬆️ Back to Top](#configuring)**
-
diff --git a/docs/contributing.md b/docs/contributing.md
deleted file mode 100644
index f1819925..00000000
--- a/docs/contributing.md
+++ /dev/null
@@ -1,140 +0,0 @@
-# Contributing
-
-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).
-
-### Submitting a PR
-
-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.
-
-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
-
-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
-
-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)
-
-#### Getting Started
-
-To set up your development environment, and get Dashy running locally, please see: [Developing Docs](/docs/developing.md)
-
-#### For new Contributors
-
-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..
-
-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?
-
----
-
-### Contributors
-
-
-
-
-### Star-Gazers Over Time
-
-
-
diff --git a/docs/dashy.md b/docs/dashy.md
deleted file mode 100644
index 678fb271..00000000
--- a/docs/dashy.md
+++ /dev/null
@@ -1,421 +0,0 @@
-
-
Dashy
-
Dashy helps you organize your self-hosted services, by making them all accessible from a single place
-
-
-
-
-
-[](https://github.com/awesome-selfhosted/awesome-selfhosted#personal-dashboards)
-
-
-
-
-
-
-## Features 🌈
-
-- Instant search by name, domain and tags - just start typing
-- Full keyboard shortcuts for navigation, searching and launching
-- Multiple color themes, with easy method for adding more
-- Customizable layout options, and item sizes
-- Quickly preview a website, by holding down the Alt key while clicking, to open it in a resizable pop-up modal
-- Many options for icons, including full Font-Awesome support and the ability to auto-fetch icon from URLs favicon
-- Option to show service status for each of your apps / links, for basic availability and uptime monitoring
-- Additional info for each item visible on hover (including opening method icon and description as a tooltip)
-- Option for full-screen background image, custom nav-bar links, and custom footer text
-- Encrypted cloud backup and restore feature available
-- Optional authentication, requiring user to log in
-- Easy single-file YAML-based configuration
-- Small bundle size, fully responsive UI and PWA makes the app easy to use on any device
-- Plus lots more...
-
-## Demo ⚡
-
-> For more examples of Dashy in action, see: [**The Showcase**](./docs/showcase.md)
-
-#### Live Demos
-[Demo 1](https://dashy-demo-1.as93.net) ┆ [Demo 2](https://dashy-demo-2.as93.net) ┆ [Demo 3](https://dashy-demo-3.as93.net)
-
-#### Spin up your own Demo
-- 1-Click Deploy: [](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml)
-- Or on your own machine: `docker run -p 8080:80 lissy93/dashy`
-
-#### Recording
-
-
-
-
-#### User Showcase
-Are using Dashy? Want to share your dashboard here too - [Submit your Screenshots to the Showcase](./docs/showcase.md#submitting-your-dashboard)!
-
-
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Getting Started 🛫
-
-> For full setup instructions, see: [**Deployment**](./docs/deployment.md)
-
-#### Deploying from Docker Hub 🐳
-
-You will need [Docker](https://docs.docker.com/get-docker/) installed on your system
-
-```
-docker run -p 8080:80 lissy93/dashy
-```
-
-Or
-
-```docker
-docker run -d \
- -p 4000:80 \
- -v /root/my-local-conf.yml:/app/public/conf.yml \
- --name my-dashboard \
- --restart=always \
- lissy93/dashy:latest
-```
-Healthchecks are pre-configured to monitor the uptime and response times of Dashy, and the status of which can be seen in the container logs, e.g. `docker inspect --format "{{json .State.Health }}" [container-id]`.
-
-#### Deploying from Source 🚀
-
-You will need both [git](https://git-scm.com/downloads) and the latest or LTS version of [Node.js](https://nodejs.org/) installed on your system
-
-- Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy`
-- Configuration: Fill in you're settings in `./public/conf.yml`
-- Install dependencies: `yarn`
-- Build: `yarn build`
-- Run: `yarn start`
-
-#### Deploy to the Cloud
-
-Dashy supports 1-Click deployments on several popular cloud platforms (with more on the way!). To get started, just click a link below:
-- [Deploy to Netlify](https://app.netlify.com/start/deploy?repository=https://github.com/lissy93/dashy)
-- [Deploy to Heroku](https://heroku.com/deploy?template=https://github.com/Lissy93/dashy)
-- [Deploy with Vercel](https://vercel.com/new/project?template=https://github.com/lissy93/dashy)
-- [Deploy with PWD](https://labs.play-with-docker.com/?stack=https://raw.githubusercontent.com/Lissy93/dashy/master/docker-compose.yml)
-
-#### Basic Commands
-
-The following commands can be run on Dashy. If you are using Docker, than precede each command with `docker exec -it [container-id]`, where container id can be found by running `docker ps`, e.g. `docker exec -it 92490c12baff yarn build`.
-If you prefer [`NPM`](https://docs.npmjs.com), then just replace `yarn` with `npm run` in the following commands.
-
-- `yarn build` - Builds the project for production, and outputs it into `./dist`
-- `yarn start` - Starts a web server, and serves up the production site from `./dist`
-- `yarn validate-config` - Parses and validates your `conf.yml` against Dashy's [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json)
-- `yarn health-check` - Checks the health and status of Dashy's Node server
-- `yarn pm2-start` - Starts the app using the [PM2](https://pm2.keymetrics.io/) process manager
-- `yarn dev` - Starts the development server with hot reloading, linting, testing and verbose messaging
-- `yarn lint` - Lints code to ensure it follows a consistent neat style
-- `yarn test` - Runs tests, and outputs results
-- `yarn install` - Install all dependencies
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Configuring 🔧
-
-> 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`)
-
-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`).
-
-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.`
-
-It is now 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). The current theme, and other visual preferences are only stored locally, unless otherwise specified in the config file. The option to only apply config changes locally is still available, and can be used in conjunction with the cloud backup feature to sync data between instances.
-
-You may find these [example config](https://gist.github.com/Lissy93/000f712a5ce98f212817d20bc16bab10) helpful for getting you started
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Theming 🎨
-
-> For full theming documentation, see: [**Theming**](./docs/theming.md)
-
-
-
-The app comes with a number of built-in themes, but it's also easy to write you're own. All colors, and most other CSS properties make use of CSS variables, which makes customizing the look and feel of Dashy very easy.
-
-You can also apply custom CSS overrides directly through the UI (Under Config menu --> Custom CSS), or specify it in your config file under `appConfig.customCss`. If you have a lot of custom styles, you can pass in the path to a stylesheet, in `appConfig.externalStyleSheet`.
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Icons 🧸
-
-> For full iconography documentation, see: [**Icons**](./docs/icons.md)
-
-Both sections and items can have an icon associated with them, and defined under the `icon` attribute. There are many options for icons, including Font Awesome support, automatic fetching from favicon, programmatically generated icons and direct local or remote URLs.
-
-
-
-
-
-- **Favicon**: Set `icon: favicon` to fetch a services icon automatically from the URL of the corresponding application
-- **Font-Awesome**: To use any font-awesome icon, specify the category, followed by the icon name, e.g. `fas fa-rocket` or `fab fa-monero`. You can also use Pro icons if you have a license key, just set it under `appConfig.fontAwesomeKey`
-- **Generative**: Setting `icon: generative`, will generate a unique for a given service, based on it's URL or IP
-- **URL**: You can also pass in a URL to an icon asset, hosted either locally or using any CDN service. E.g. `icon: https://i.ibb.co/710B3Yc/space-invader-x256.png`.
-- **Local Image**: To use a local image, store it in `./public/item-icons/` (or create a volume in Docker: `-v /local/image/directory:/app/public/item-icons/`) , and reference it by name and extension - e.g. set `icon: image.png` to use `./public/item-icon/image.png`. You can also use sub-folders here if you have a lot of icons, to keep them organized.
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Cloud Backup & Sync ☁
-
-> For full backup documentation, see: [**Cloud Backup & Sync**](./docs/backup-restore.md)
-
-Dashy has an **optional** built-in feature for securely backing up your config to a hosted cloud service, and then restoring it on another instance. This feature is totally optional, and if you do not enable it, then Dashy will not make any external network requests.
-
-This is useful not only for backing up your configuration off-site, but it also enables Dashy to be used without having write a YAML config file, and makes it possible to use a public hosted instance, without the need to self-host.
-
-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)**
-
----
-
-## Authentication 💂
-
-> For full authentication documentation, see: [**Authentication**](./docs/authentication.md)
-
-Dashy has a built-in login feature, which can be used for basic access control. To enable this feature, add an `auth` attribute under `appConfig`, containing an array of users, each with a username, SHA-256 hashed password and optional user type.
-
-```yaml
-appConfig:
- auth:
- - user: alicia
- hash: 4D1E58C90B3B94BCAD9848ECCACD6D2A8C9FBC5CA913304BBA5CDEAB36FEEFA3
-```
-At present, access control is handled on the frontend, and therefore 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.
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Status Indicators 🚦
-
-> For full monitoring documentation, see: [**Status Indicators**](./docs/status-indicators.md)
-
-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.
-
-
-
-
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Opening Methods 🖱️
-
-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
-- `modal` - Launch app in a resizable/ movable popup modal on the current page
-- `workspace` - Changes to Workspace view, and launches app
-
-Even if the target is not set (or is set to `sametab`), you can still launch any given app in an alternative method: Alt + Click will open the modal, and Ctrl + Click will open in a new tab. You can also right-click on any item to see all options (as seen in the screenshot below). This custom context menu can be disabled by setting `appConfig.disableContextMenu: true`.
-
-
-
-
-
-The modal and workspace views work by rendering the target application in an iframe. For this to work, the HTTP response header [`X-Frame-Options`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-Frame-Options) for a given application needs to be set to `ALLOW`. If you are getting a `Refused to Connect` error then this header is set to `DENY` (or `SAMEORIGIN` and it's on a different host).
-
-Here's a quick demo of the workspace view:
-
-
-
-
-**[⬆️ Back to Top](#dashy)**
-
----
-
-## Config Editor ⚙️
-
-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.
-
-
-
-### Common Tasks
-
-#### Creating a new theme
-
-See [Theming](./theming.md)
-
-#### Adding a new option in the config file
-
-All application config is specified in `./public/conf.yml` - see [Configuring Docs](./configuring.md) for info. Before adding a new option in the config file, first ensure that there is nothing similar available, that is is definitely necessary, it will not conflict with any other options and most importantly that it will not cause any breaking changes. Ensure that you choose an appropriate and relevant section to place it under.
-
-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
-
-#### 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: `./`
-```
-╮
-├── package.json # Project meta-data, dependencies and paths to scripts
-├── src/ # Project front-end source code
-├── server.js # A Node.js server to serve up the /dist directory
-├── vue.config.js # Vue.js configuration
-├── Dockerfile # The blueprint for building the Docker container
-├── docker-compose.yml # A Docker run command
-├── .env # Location for any environmental variables
-├── yarn.lock # Auto-generated list of current packages and version numbers
-├── docs/ # Markdown documentation
-├── README.md # Readme, basic info for getting started
-├── LICENSE.md # License for use
-╯
-```
-
-#### Frontend Source: `./src/`
-
-```
-./src
-├── App.vue # Vue.js starting file
-├── assets # Static non-compiled assets
-│ ├── fonts # .ttf font files
-│ ╰── interface-icons # SVG icons used in the app
-├── components # All front-end Vue web components
-│ ├── Configuration # Components relating to the user config pop-up
-│ │ ├── 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
-│ ├── FormElements # Basic form elements used throughout the app
-│ │ ├── Button.vue # Standard button component
-│ │ └── Input.vue # Standard text field input component
-│ ├── LinkItems # Components for Sections and Link Items
-│ │ ├── Collapsable.vue # The collapsible functionality of sections
-│ │ ├── 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
-│ ├── 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
-│ │ ├── 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
-│ ├── ConfigLauncher.vue # Icon that when clicked will launch the Configuration component
-│ ├── ItemSizeSelector.vue # Set of buttons used to set and save item size
-│ ├── KeyboardShortcutInfo.vue# Small pop-up displaying the available keyboard shortcuts
-│ ├── 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
-│ ╰── ThemeSelector.vue # Drop-down menu enabling the user to select and change themes
-├── main.js # Main front-end entry point
-├── registerServiceWorker.js # Registers and manages service workers, for PWA apps
-├── router.js # Defines all available application routes
-├── styles # Directory of all globally used common SCSS styles
-├── utils # Directory of re-used helper functions
-│ ├── ArrowKeyNavigation.js # Functionality for arrow-key navigation
-│ ├── 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
-│ ╰── 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
-```
----
-
-### 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
-
-When running the build command, several warnings appear. These are not errors, and do not affect the security or performance of the application. They will be addressed in a future update
-
-`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.
diff --git a/docs/hello.md b/docs/hello.md
new file mode 100644
index 00000000..bf0869b2
--- /dev/null
+++ b/docs/hello.md
@@ -0,0 +1 @@
+docusouris is stupid
diff --git a/docs/icons.md b/docs/icons.md
deleted file mode 100644
index c44aeb56..00000000
--- a/docs/icons.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# Icons
-
-Both sections and items can have an icon, which is specified using the `icon` attribute. Using icons improves the aesthetics of your UI and makes the app more intuitive to use. There are several options when it comes to setting icons, and this article outlines each of them
-
-- [Font Awesome Icons](#font-awesome)
-- [Favicons](#favicons)
-- [Generative Icons](#generative-icons)
-- [Icons by URL](#icons-by-url)
-- [Local Icons](#local-icons)
-- [No Icon](#no-icon)
-
-
-
-
-
-### Font Awesome
-You can use any [Font Awesome Icon](https://fontawesome.com/icons) simply by specifying it's identifier. This is in the format of `[category] [name]` and can be found on the page for any given icon on the Font Awesome site. For example: `fas fa-rocket`, `fab fa-monero` or `fas fa-unicorn`.
-
-Font-Awesome has a wide variety of free icons, but you can also use their pro icons if you have a membership. To do so, you need to specify your license key under: `appConfig.fontAwesomeKey`. This is usually a 10-digit string, for example `13014ae648`.
-
-
-### Favicons
-Dashy can auto-fetch the favicon for a given service using it's URL. Just set `icon: favicon` to use this feature. If the services URL is a local IP, then Dashy will attempt to find the favicon from `http://[ip]/favicon.ico`. This has two issues, favicons are not always hosted at the same location for every service, and often the default favicon is a low resolution. Therefore to fix this, for remote services an API is used to return a high-quality icon for any online service.
-
-The default favicon API is [Favicon Kit](https://faviconkit.com/), a free and reliable service for returning images from any given URL. However several other API's are supported. To change the API used, under `appConfig`, set `faviconApi` to one of the following values:
-
-- `faviconkit` - [faviconkit.com](https://faviconkit.com/) (Recommend)
-- `google` - Official Google favicon API service, good support for all sites, but poor quality
-- `clearbit` - [Clearbit](https://clearbit.com/logo) returns high-quality logos from mainstream websites
-- `webmasterapi` - [WebMasterAPI](https://www.webmasterapi.com/get-favicons)
-- `allesedv` - [allesedv.com](https://favicon.allesedv.com/) is a highly efficient IPv6-enabled service
-
-You can also force Dashy to always get favicons from the root of the domain, and not use an external service, by setting `appConfig.faviconApi` to `local`.
-
-### Generative Icons
-Uses a unique and programmatically generated icon for a given service. This is particularly useful when you have a lot of similar services with a different IP or port, and no specific icon. These icons are generated with [ipsicon.io](https://ipsicon.io/). To use this option, just set an item's to: `icon: generative`.
-
-### Icons by URL
-You can also set an icon by passing in a valid URL pointing to the icons location. For example `icon: https://i.ibb.co/710B3Yc/space-invader-x256.png`, this can be in .png, .jpg or .svg format, and hosted anywhere- so long as it's accessible from where you are hosting Dashy. The icon will be automatically scaled to fit, however loading in a lot of large icons may have a negative impact on performance, especially if you visit Dashy from new devices often.
-
-### Local Icons
-You may also want to store your icons locally, bundled within Dashy so that there is no reliance on outside services. This can be done by putting the icons within Dashy's `./public/item-icons/` directory. If you are using Docker, then the easiest option is to map a volume from your host system, for example: `-v /local/image/directory:/app/public/item-icons/`. To reference an icon stored locally, just specify it's name and extension. For example, if my icon was stored in `/app/public/item-icons/maltrail.png`, then I would just set `icon: maltrail.png`.
-
-You can also use sub-folders within the `item-icons` directory to keep things organised. You would then specify an icon with it's folder name slash image name. For example: `networking/monit.png`
-
-### No Icon
-If you don't wish for a given item or section to have an icon, just leave out the `icon` attribute.
\ No newline at end of file
diff --git a/docs/index.js b/docs/index.js
deleted file mode 100644
index e69de29b..00000000
diff --git a/docs/index.md b/docs/index.md
deleted file mode 100644
index 9c594b9c..00000000
--- a/docs/index.md
+++ /dev/null
@@ -1,13 +0,0 @@
-# Contents
-
-- [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)
diff --git a/docs/showcase.md b/docs/showcase.md
deleted file mode 100644
index d901ae34..00000000
--- a/docs/showcase.md
+++ /dev/null
@@ -1,63 +0,0 @@
-# Showcase
-
-> Do you use Dashy? Got a sweet dashboard? Submit it to the showcase! [See How](#submitting-your-dashboard)
-
-### Home Lab 2.0
-
-
-
----
-
-### Networking Services
-
-
-
----
-
-### CFT Toolbox
-
-
-
----
-
-### Bookmarks
-
-
-
----
-
-### Project Management
-
-
-
----
-
-## Submitting your Dashboard
-
-#### How to Submit
-- Open an Issue
-- Open a PR
-
-#### What to Include
-Please include the following information:
-- A single high-quality screenshot of your Dashboard
-- A short title (it doesn't have to be particularly imaginative)
-- An optional description, you could include details on anything interesting or unique about your dashboard, or say how you use it, and why it's awesome
-- Optionally leave your name or username, with a link to your GitHub, Twitter or Website
-
-#### Template
-
-If you're submitting a pull request, please use a format similar to this:
-
-```
-### [Dashboard Name] (required)
-
-> Submitted by [@username](https://github.com/user) (optional)
-
- (required)
-
-[An optional text description, or any interesting details] (optional)
-
----
-
-```
\ No newline at end of file
diff --git a/docs/showcase/1-home-lab-material.png b/docs/showcase/1-home-lab-material.png
deleted file mode 100644
index 605a520c..00000000
Binary files a/docs/showcase/1-home-lab-material.png and /dev/null differ
diff --git a/docs/showcase/2-networking-services-minimal-dark.png b/docs/showcase/2-networking-services-minimal-dark.png
deleted file mode 100644
index 6986f60c..00000000
Binary files a/docs/showcase/2-networking-services-minimal-dark.png and /dev/null differ
diff --git a/docs/showcase/3-cft-toolbox.png b/docs/showcase/3-cft-toolbox.png
deleted file mode 100644
index a728a8a9..00000000
Binary files a/docs/showcase/3-cft-toolbox.png and /dev/null differ
diff --git a/docs/showcase/4-bookmarks-colourful.png b/docs/showcase/4-bookmarks-colourful.png
deleted file mode 100644
index a29563f4..00000000
Binary files a/docs/showcase/4-bookmarks-colourful.png and /dev/null differ
diff --git a/docs/showcase/5-project-managment.png b/docs/showcase/5-project-managment.png
deleted file mode 100644
index 99466c25..00000000
Binary files a/docs/showcase/5-project-managment.png and /dev/null differ
diff --git a/docs/status-indicators.md b/docs/status-indicators.md
deleted file mode 100644
index 1e91af06..00000000
--- a/docs/status-indicators.md
+++ /dev/null
@@ -1,57 +0,0 @@
-# Status Indicators
-
-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.
-
-
-
-
-
-## Enabling Status Indicators
-By default, this feature is off. If you do not want this feature, just don't add the `statusCheck` to your conf.yml file, then no requests will be made.
-
-To enable status checks, you can either turn it on for all items, by setting `appConfig.statusCheck: true`, like:
-```yaml
-appConfig:
- statusCheck: true
-```
-
-Or you can enable/ disable it on a per-item basis, with the `item[n].statusCheck` attribute
-```yaml
-sections:
-- name: Firewall
- items:
- - title: OPNsense
- description: Firewall Central Management
- icon: networking/opnsense.png
- url: https://192.168.1.1
- statusCheck: false
- - title: MalTrail
- description: Malicious traffic detection system
- icon: networking/maltrail.png
- url: http://192.168.1.1:8338
- statusCheck: true
- - title: Ntopng
- description: Network traffic probe and network use monitor
- icon: networking/ntop.png
- url: http://192.168.1.1:3001
- statusCheck: true
-```
-
-## Continuous Checking
-By default, with status indicators enabled Dashy will check an applications status on page load, and will not keep indicators updated. This is usually desirable behavior. However, if you do want the status indicators to continue to poll your running services, this can be enabled by setting the `statusCheckInterval` attribute. Here you define an interval in seconds, and Dashy will poll your apps every x seconds. Note that if this number is very low (below 5 seconds), you may notice the app running slightly slower.
-
-The following example, will instruct Dashy to continuously check the status of your services every 20 seconds
-
-```
-appConfig:
- statusCheck: true
- statusCheckInterval: 20
-```
-
-## How it Works
-
-When Dashy is loaded, items with `statusCheck` enabled will make a request, to `https://[your-host-name]/ping?url=[address-or-servce]`, which in turn will ping that running service, and respond with a status code. Response time is calculated from the difference between start and end time of the request.
-
-An indicator will display next to each item, and will be yellow while waiting for the response to return, green if request was successful, red if it failed, and grey if it was unable to make the request all together.
-
-All requests are made straight from your server, there is no intermediary. So providing you are hosting Dashy yourself, and are checking the status of other self-hosted services, there shouldn't be any privacy concerns.
diff --git a/docs/theming.md b/docs/theming.md
deleted file mode 100644
index 8614cb47..00000000
--- a/docs/theming.md
+++ /dev/null
@@ -1,150 +0,0 @@
-# Theming
-
-By default Dashy comes with 20 built in themes, which can be applied from the dropwodwn menu in the UI
-
-
-
-You can also add your own themes, apply custom CSS, and modify colors.
-
-You can customize Dashy by writing your own CSS, which can be loaded either as an external stylesheet, set directly through the UI, or specified in the config file. Most styling options can be set through CSS variables, which are outlined below.
-
-The following content requires that you have a basic understanding of CSS. If you're just beginning, you may find [this article](https://developer.mozilla.org/en-US/docs/Learn/CSS/First_steps) helpful.
-
-
-### How Theme-Switching Works
-
-The theme switching is done by simply changing the `data-theme` attribute on the root DOM element, which can then be targeted by CSS. First off, in order for the theme to show up in the theme switcher, it needs to be added to the config file, under `appConfig.cssThemes`, either as a string, or an array of strings for multiple themes. For example:
-
-```yaml
-appConfig:
- cssThemes: ['tiger', 'another-theme']
-```
-
-You can now create a block to target you're theme with `html[data-theme='my-theme']{}` and set some styles. The easiest method is by setting CSS variables, but you can also directly override elements by their selector. As an example, see the [built-in CSS themes](https://github.com/Lissy93/dashy/blob/master/src/styles/color-themes.scss).
-
-```css
-html[data-theme='tiger'] {
- --primary: #f58233;
- --item-group-background: #0b1021;
-}
-```
-
-Finally, from the UI use the theme dropdown menu to select your new theme, and your styles will be applied.
-
-You can also set `appConfig.theme` to pre-select a default theme, which will be applied immediately after deployment.
-
-### Setting Custom CSS
-
-Custom CSS can be developed, tested and applied directly through the UI. Although you will need to make note of your changes to apply them across instances.
-
-This can be done from the Config menu (spanner icon in the top-right), under the Custom Styles tab. This is then associated with `appConfig.customCss` in local storage. Any styles set this way can be synced across instances using the cloud backup and sync feature.
-
-It's also possible to set CSS in the config file under `appConfig.customCss`. However this approach is not very neat, and if you do do it, first minify / compress your CSS and wrap in quotes, to ensure it does not cause any validation errors.
-
-### Loading External Stylesheets
-
-The URI of a stylesheet, either local or hosted on a remote CDN can be passed into the config file. The attribute `appConfig.externalStyleSheet` accepts either a string, or an array of strings. This is handled in [`ThemeHelper.js`](https://github.com/Lissy93/dashy/blob/master/src/utils/ThemeHelper.js).
-
-For example:
-
-```yaml
-appConfig:
- externalStyleSheet: 'https://example.com/my-stylesheet.css'
-```
-
-```yaml
-appConfig:
- externalStyleSheet: ['/themes/my-theme-1.css', '/themes/my-theme-2.css']
-```
-### Hard-Coding Section or Item Colors
-
-Some UI components have a color option, that can be set in the config file, to force the color of a given item or section no matter what theme is selected. These colors should be expressed as hex codes (e.g. `#fff`) or HTML colors (e.g. `red`). The following attributes are supported:
-- `section.color` - Custom color for a given section
-- `item.color` - Font and icon color for a given item
-- `item.backgroundColor` - Background color for a given icon
-
-### CSS Variables
-
-All colors as well as other variable values (such as borders, border-radius, shadows) are specified as CSS variables. This makes theming the application easy, as you only need to change a given color or value in one place. You can find all variables in [`color-palette.scss`](https://github.com/Lissy93/dashy/blob/master/src/styles/color-palette.scss) and the themes which make use of these color variables are specified in [`color-themes.scss`](https://github.com/Lissy93/dashy/blob/master/src/styles/color-themes.scss)
-
-CSS variables are simple to use. You define them like: `--background: #fff;` and use them like: `body { background-color: var(--background); }`. For more information, see this guide on using [CSS Variables](https://developer.mozilla.org/en-US/docs/Web/CSS/Using_CSS_custom_properties).
-
-You can determine the variable used by any given element, and visualize changes using the browser developer tools (Usually opened with `F12`, or Options --> More --> Developer Tools). Under the elements tab, click the Element Selector icon (usually top-left corner), you will then be able to select any DOM element on the page by hovering and clicking it. In the CSS panel you will see all styles assigned to that given element, including CSS variables. Click a variable to see it's parent value, and for color attributes, click the color square to modify the color. For more information, see this [getting started guide](https://developer.mozilla.org/en-US/docs/Learn/Common_questions/What_are_browser_developer_tools), and these articles on [selecting elements](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Select_an_element) and [inspecting and modifying colors](https://developer.mozilla.org/en-US/docs/Tools/Page_Inspector/How_to/Inspect_and_select_colors).
-
-#### Top-Level Variables
-These are all that are required to create a theme. All other variables inherit their values from these variables.
-
-- `--primary` - Application primary color. Used for title, text, accents, and other features
-- `--background` - Application background color
-- `--background-darker` - Secondary background color (usually darker), used for navigation bar, section fill, footer etc
-- `--curve-factor` - The border radius used globally throughout the application. Specified in `px`, defaults to `5px`
-- `--dimming-factor` - Inactive elements have slight transparency. This can be between `0` (invisible) and `1` (normal), defaults to `0.7`
-
-
-#### Targeted Color Variables
-You can target specific elements on the UI with these variables. All are optional, since by default, they inherit their values from above
-
-- `--heading-text-color` - Text color for web page heading and sub-heading. Defaults to `--primary`
-- `--nav-link-text-color` - The text color for links displayed in the navigation bar. Defaults to `--primary`
-- `--nav-link-background-color` - The background color for links displayed in the navigation bar
-- `--nav-link-text-color-hover` - The text color when a navigation bar link is hovered over. Defaults to `--primary`
-- `--nav-link-background-color-hover` - The background color for nav bar links when hovered over
-- `--nav-link-border-color` - The border color for nav bar links. Defaults to `transparent`
-- `--nav-link-border-color-hover` - The border color for nav bar links when hovered over. Defaults to `--primary`
-- `--search-container-background` - Background for the container containing the search bar. Defaults to `--background-darker`
-- `--search-field-background` - Fill color for the search bar. Defaults to `--background`
-- `--settings-background` - The background for the quick settings. Defaults to `--background`
-- `--settings-text-color` - The text and icon color for quick settings. Defaults to `--primary`
-- `--footer-text-color` - Color for text within the footer. Defaults to `--medium-grey`
-- `--footer-text-color-link` - Color for any hyperlinks within the footer. Defaults to `--primary`
-- `--item-text-color` - The text and icon color for items. Defaults to `--primary`
-- `--item-group-outer-background` - The background color for the outer part of a section (including section head). Defaults to `--primary`
-- `--item-group-background` - The background color for the inner part of item groups. Defaults to `#0b1021cc` (semi-transparent black)
-- `--item-group-heading-text-color` - The text color for section headings. Defaults to `--item-group-background`;
-- `--item-group-heading-text-color-hover` - The text color for section headings, when hovered. Defaults to `--background`
-- `--config-code-background` - Background color for the JSON editor in the config menu. Defaults to `#fff` (white)
-- `--config-code-color` - Text color for the non-highlighted code within the JSON editor. Defaults to `--background`
-- `--config-settings-color` - The background for the config/ settings pop-up modal. Defaults to `--primary`
-- `--config-settings-background` - The text color for text within the settings container. Defaults to `--background-darker`
-- `--scroll-bar-color` - Color of the scroll bar thumb. Defaults to `--primary`
-- `--scroll-bar-background` Color of the scroll bar blank space. Defaults to `--background-darker`
-- `--highlight-background` Fill color for text highlighting. Defaults to `--primary`
-- `--highlight-color` Text color for selected/ highlighted text. Defaults to `--background`
-- `--toast-background` - Background color for the toast info popup. Defaults to `--primary`
-- `--toast-color` - Text, icon and border color in the toast info popup. Defaults to `--background`
-- `--welcome-popup-background` - Background for the info pop-up shown on first load. Defaults to `--background-darker`
-- `--welcome-popup-text-color` - Text color for the welcome pop-up. Defaults to `--primary`
-- `--side-bar-background` - Background color of the sidebar used in the workspace view. Defaults to `--background-darker`
-- `--side-bar-color` - Color of icons and text within the sidebar. Defaults to `--primary`
-- `--status-check-tooltip-background` - Background color for status check tooltips. Defaults to `--background-darker`
-- `--status-check-tooltip-color` - Text color for the status check tooltips. Defaults to `--primary`
-- `--code-editor-color` - Text color used within raw code editors. Defaults to `--black`
-- `--code-editor-background` - Background color for raw code editors. Defaults to `--white`
-- `--context-menu-color` - Text color for right-click context menu over items. Defaults to `--primary`
-- `--context-menu-background` - Background color of right-click context menu. Defaults to `--background`
-- `--context-menu-secondary-color` - Border and outline color for context menu. Defaults to `--background-darker`
-
-#### Non-Color Variables
-- `--outline-color` - Used to outline focused or selected elements
-- `--curve-factor-navbar` - The border radius of the navbar. Usually this is greater than `--curve-factor`
-- `--scroll-bar-width` - Width of horizontal and vertical scroll bars. E.g. `8px`
-- `--item-group-padding` - Inner padding of sections, determines the width of outline. E.g. `5px`
-- `--item-shadow` - Shadow for items. E.g. `1px 1px 2px #130f23`
-- `--item-hover-shadow` - Shadow for items when hovered over. E.g. `1px 2px 4px #373737`
-- `--item-icon-transform` - A [transform](https://developer.mozilla.org/en-US/docs/Web/CSS/transform) property, to modify item icons. E.g. `drop-shadow(2px 4px 6px var(--transparent-50)) saturate(0.65)`
-- `--item-icon-transform-hover` - Same as above, but applied when an item is hovered over. E.g. `drop-shadow(4px 8px 3px var(--transparent-50)) saturate(2)`
-- `--item-group-shadow` - The shadow for an item group/ section. Defaults to `--item-shadow`
-- `--settings-container-shadow` - A shadow property for the settings container. E.g. `none`
-
-#### Action Colors
-These colors represent intent, and so are not often changed, but you can do so if you wish
-
-- `--info` - Information color, usually blue / `#04e4f4`
-- `--success` - Success color, usually green / `#20e253`
-- `--warning` - Warning color, usually yellow / `#f6f000`
-- `--danger` - Error/ danger color, usually red / `#f80363`
-- `--neutral` - Neutral color, usually grey / `#272f4d`
-- `--white` - Just white / `#fff`
-- `--black` - Just black / `#000`
-
-
diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md
deleted file mode 100644
index ea81a751..00000000
--- a/docs/troubleshooting.md
+++ /dev/null
@@ -1,2 +0,0 @@
-
-Coming Soon...
\ No newline at end of file
diff --git a/docs/user-guide.md b/docs/user-guide.md
deleted file mode 100644
index 2f314026..00000000
--- a/docs/user-guide.md
+++ /dev/null
@@ -1,125 +0,0 @@
-# User Guide
-
-This article outlines how to use the application. If you are instead looking for deployment instructions, see [Deployment](/docs/deployment.md) and [Configuring](/docs/configuring.md)
-
-### Contents
-- [Searching](#searching)
-- [Keyboard Shortcuts](#keyboard-shortcuts)
-- [Theme Switching](#theme-switching)
-- [Visual Options](#visual-options)
-- [Opening Items](#opening-items)
-- [Sections and Items](#sections-and-items)
-- [Icons](#icons)
-- [Metadata](#metadata)
-- [Editing Config](#editing-config)
-- [Managing Config Data](#managing-config-data)
-
-### Searching
-
-A key requirement for any start page is being able to quickly and effectively find the item your looking for. For Dashy, a lot of thought was put into the most intuitive method to filter links.
-
-To start searching, simply start typing. Your search term will show up in the filter field in the upper-left section, and results will be filtered accordingly.
-
-The following properties are used to filter items by:
-- Title / Item name
-- Provider - The optional field, indicating the provider of a given app or service
-- URL - Only the base URL is searched, the protocol and parameters are omitted
-- Description
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Keyboard Shortcuts
-
-Many people find using the keyboard significantly more efficient than having to reach for the mouse. And so Dashy has a series of keybindings and shortcuts to enable you to navigate through items quickly.
-
-Once you've searched for a given item, you can then tab through the list (or Shift + Tab to go backwards) until you've found the item you're looking for. You can also use the arrow keys to navigate up, down, left and right through the grid. To launch an item, just hit enter. You can also open an item in a new tab with Ctrl + Enter, or open the item in a pop-up modal with Alt + Enter. To close an open popup item, or any open menus, just hit Esc.
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Theme Switching
-
-You can change the current theme using the dropdown menu in the upper-right-hand quadrant. Your selected theme will be stored in local storage, and applied next time you load the page. For more information on customizing the look and feel of Dashy, see [Themeing Docs](/docs/theming.md)
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Visual Options
-
-There are several pre-built layout options to choose from depending on your requirements. Like the theme these options will be remembered in browser storage and applied on load.
-
-The first is Layout. This determines how sections are organised on the screen. This can be set to either grid (auto), horizontal or vertical. Vertical layout will cause each section to take up the full width of the screen, and minimum height. Horizontal is the opposite, where every section is on the same row, and spans the full height of the screen.
-
-Next there's icon size. This changes the size of the item and it's icon. It can be useful to use a smaller size when there are a lot of items, or a larger size if you commonly access Dashy from a touch screen tablet.
-
-
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Opening Items
-
-There are three methods of opening items. Clicking (or hitting Enter on a selected item) will use the default method, specified in the config file, under `item.target`. You can use Ctrl + Click or Ctrl + Enter to open and item in a new tab.
-
-You can also use Alt + Click or Alt + Enter, to open an item in a popup window. You can use drag the tab in the bottom-right corner of the pop-up to resize it. To close an item opened in a pop-up, click the close button, use the Esc key, or click anywhere outside the popup.
-
-
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Sections and Items
-
-The main content in Dashy is defined as an array of sections, each of which contains an array of items. You can have as many sections as you need, and each section can have an unlimited amount of items. If you are using the grid layout, then it works better, visually if each of your sections have similar number of items.
-
-Sections are collapsible, which is useful for those sections which contain less used applications, or are particularly long. The collapse state of a given section is remembered (stored in local storage), and applied on load.
-
-Sections also have several optional properties, which are specified under `section.displayData`, and let you set certain display settings. A full list of options can be found in the [configuring docs](/docs/configuring.md).
-
-
-```
- ┌─────────────────────────────────────────────────────┐
- │ Title │
- │ Sub-Title/ Description Link 1 Link 2 │
- ├──────────────┬─────────────────┬────────────────────┤
- │ Search │ │ Display Options │
- ├──────────────┘ └────────────────────┤
- │ │
- │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
- │ │ Section 1 │ │ Section 2 │ │ Section 3 │ │
- │ ├──────────────┤ ├──────────────┤ ├──────────────┤ │
- │ │ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ │ │
- │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │
- │ │ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ │ │ ┌───┐ ┌───┐ │ │
- │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │ │
- │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │ └───┘ └───┘ │ │
- │ └──────────────┘ └──────────────┘ └──────────────┘ │
- │ │
- ├─────────────────────────────────────────────────────┤
- └─────────────────────────────────────────────────────┘
-```
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Icons
-
-Both sections and items can have an icon associated with them. There are several options for specifying icons. You can let the icon be automatically resolved and fetched from the items associated URL, by setting it's value to `favicon`. You can use a font-awesome icon, by specifying it's name and category, e.g. `fas fa-rocket`. Or you can pass in a URL, either to a locally hosted or remote image. For local images, you can put them in `./public/item-icons/` and then reference them just by the file name.
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Metadata
-
-Basic site information, displayed in the header and footer can be set from the UI. This includes: title, sub-title, footer text, and nav-bar links. Click the wrench icon in the upper-right corner, then go to the Site Metadata tab. Fill in your new data, and hit save. The page will be refreshed, and your changes will appear. These settings are stored under `pageInfo` in the config, and if set through the UI, will only be applied locally.
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Editing Config
-
-The config file can be edited from the UI, but take note that changes are only applied locally. You will need to either export this data into your conf.yml, or use the cloud backup and sync feature.
-
-To make changes to the config file, click the wrench icon in the upper-left hand corner. Then go to the Config tab. Here you'll find a JSON editor. You can switch from tree mode to plain-text mode if you find that easier. And parsing or validation issues will be displayed at the bottom of the screen.
-
-**[⬆️ Back to Top](#user-guide)**
-
-### Managing Config Data
-
-You can download, backup or reset local config data directly from the UI. To apply config to Dashy on other devices, you will need to either download the config file, or use the cloud backup and sync feature. To download config, click the Wrench icon, in the upper-right hand corner, and then go to Download. Similarly, for cloud backup, click the Cloud icon in the upper right corner, and fill in the required fields. For detailed instructions, and technical information about backup and sync, please see the [Cloud Backup Documentation](/docs/backup-restore.md). You can also Reset all local settings from the config menu. This will not effect any data saved in your systems `conf.yml` file.
-
-**[⬆️ Back to Top](#user-guide)**
diff --git a/src/components/HomepageFeatures.js b/src/components/HomepageFeatures.js
index b03afc22..97700fcd 100644
--- a/src/components/HomepageFeatures.js
+++ b/src/components/HomepageFeatures.js
@@ -1,25 +1,45 @@
import React from 'react';
import './../styles/HomepageFeatures.scss';
+import Button from '../components/Button';
+
+import IconAuth from '../../static/icons/features_authentication.svg';
+import IconCloudSync from '../../static/icons/features_cloud-sync.svg';
+import IconDeploy from '../../static/icons/features_depoloyment.svg';
+import IconIconography from '../../static/icons/features_icons.svg';
+import IconLayout from '../../static/icons/features_layout-customization.svg';
+import IconOpeningMethods from '../../static/icons/features_opening-methods.svg';
+import IconShortcuts from '../../static/icons/features_shortcuts.svg';
+import IconStatusIndicators from '../../static/icons/features_status-indicators.svg';
+import IconThemes from '../../static/icons/features_themes.svg';
+import IconUiConfig from '../../static/icons/features_ui-configuration.svg';
const FeatureList = [
{
title: 'Search & Shortcuts',
description: (
<>
- Quisque ut dolor gravida, placerat libero vel, euismod. Ambitioni dedisse
- scripsisse iudicaretur.Donec sed odio operae, eu vulputate felis rhoncus.
- Nihilne te nocturnum praesidium Palati, nihil urbis vigiliae.
+ Arguably one of the most important features for any start page is the ability to find
+ and launch applications as quickly as possible.
+
+ To filter services, just start typing. No need to select the search bar or use any special key.
+ You can then use either the tab key or arrow keys to select and move between results,
+ and hit enter to launch the currently selected application.
>
),
+ icon: (),
},
{
title: 'Theming',
description: (
<>
- Docusaurus lets you focus on your docs, and we'll do the chores. Go
- ahead and move your docs into the docs directory.
+ Dashy comes with a ton of built-in themes, so you'll easily find one that suits you.
+ But it's also easy to write you're own. All colors, and most other CSS properties
+ make use of CSS variables, which makes customizing the look and feel of Dashy very easy.
+ You can apply custom styles directly through the UI,
+ or pass an external stylesheet into the config file
>
),
+ icon: (),
},
{
title: 'Customizable Layouts',
@@ -29,16 +49,30 @@ const FeatureList = [
be extended while reusing the same header and footer.
>
),
+ icon: (),
},
];
-function Feature({ title, description, index }) {
+const getColor = (index) => {
+ const remainder = index % 4;
+ switch (remainder) {
+ case 0: return 'pink';
+ case 1: return 'blue';
+ case 2: return 'green';
+ case 3: return 'yellow';
+ default: return 'white';
+ }
+};
+
+function Feature({ title, description, icon, index }) {
const side = index % 2 == 0 ? 'left' : 'right';
+ const color = getColor(index)
return (
-