🎉 Initialised Dashy Docs Website
@ -1,5 +0,0 @@
|
|||||||
[*.{js,jsx,ts,tsx,vue}]
|
|
||||||
indent_style = space
|
|
||||||
indent_size = 2
|
|
||||||
trim_trailing_whitespace = true
|
|
||||||
insert_final_newline = true
|
|
29
.gitignore
vendored
@ -1,21 +1,20 @@
|
|||||||
|
# Dependencies
|
||||||
|
/node_modules
|
||||||
|
|
||||||
|
# Production
|
||||||
|
/build
|
||||||
|
|
||||||
|
# Generated files
|
||||||
|
.docusaurus
|
||||||
|
.cache-loader
|
||||||
|
|
||||||
|
# Misc
|
||||||
.DS_Store
|
.DS_Store
|
||||||
node_modules
|
|
||||||
/dist
|
|
||||||
|
|
||||||
# local env files
|
|
||||||
.env.local
|
.env.local
|
||||||
.env.*.local
|
.env.development.local
|
||||||
|
.env.test.local
|
||||||
|
.env.production.local
|
||||||
|
|
||||||
# Log files
|
|
||||||
npm-debug.log*
|
npm-debug.log*
|
||||||
yarn-debug.log*
|
yarn-debug.log*
|
||||||
yarn-error.log*
|
yarn-error.log*
|
||||||
|
|
||||||
# Editor directories and files
|
|
||||||
.idea
|
|
||||||
.vscode
|
|
||||||
*.suo
|
|
||||||
*.ntvs*
|
|
||||||
*.njsproj
|
|
||||||
*.sln
|
|
||||||
*.sw?
|
|
||||||
|
30
Dockerfile
@ -1,30 +0,0 @@
|
|||||||
FROM node:lts-alpine
|
|
||||||
|
|
||||||
# Define some ENV Vars
|
|
||||||
ENV PORT 80
|
|
||||||
ENV DIRECTORY /app
|
|
||||||
ENV IS_DOCKER true
|
|
||||||
|
|
||||||
# Create and set the working directory
|
|
||||||
WORKDIR ${DIRECTORY}
|
|
||||||
|
|
||||||
# Copy over both 'package.json' and 'package-lock.json' (if available)
|
|
||||||
COPY package*.json ./
|
|
||||||
|
|
||||||
# Install project dependencies
|
|
||||||
RUN yarn
|
|
||||||
|
|
||||||
# Copy over all project files and folders to the working directory
|
|
||||||
COPY . .
|
|
||||||
|
|
||||||
# Build initial app for production
|
|
||||||
RUN yarn build
|
|
||||||
|
|
||||||
# Expose given port
|
|
||||||
EXPOSE ${PORT}
|
|
||||||
|
|
||||||
# Finally, run start command to serve up the built application
|
|
||||||
CMD [ "yarn", "build-and-start"]
|
|
||||||
|
|
||||||
# Run simple healthchecks every 5 mins, to check the Dashy's everythings great
|
|
||||||
HEALTHCHECK --interval=5m --timeout=2s --start-period=30s CMD yarn health-check
|
|
17
LICENSE
@ -1,17 +0,0 @@
|
|||||||
Licensed under MIT X11. Copyright © 2021 Alicia Sykes <https://aliciasykes.com>
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
|
||||||
software and associated documentation files (the “Software”), to deal in the Software
|
|
||||||
without restriction, including without limitation the rights to use, copy, modify, merge,
|
|
||||||
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
||||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or
|
|
||||||
substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
|
||||||
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
||||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
|
||||||
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAREOR THE USE
|
|
||||||
OR OTHER DEALINGS IN THE SOFTWARE.
|
|
17
app.json
@ -1,17 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Dashy",
|
|
||||||
"description": "A Dashboard for your Homelab 🚀",
|
|
||||||
"repository": "https://github.com/lissy93/dashy",
|
|
||||||
"logo": "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png",
|
|
||||||
"keywords": [
|
|
||||||
"node",
|
|
||||||
"vue",
|
|
||||||
"static",
|
|
||||||
"dashboard",
|
|
||||||
"self-hosted",
|
|
||||||
"home-lab",
|
|
||||||
"lissy93"
|
|
||||||
],
|
|
||||||
"image": "heroku/nodejs",
|
|
||||||
"stack": "heroku-20"
|
|
||||||
}
|
|
3
babel.config.js
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
module.exports = {
|
||||||
|
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
|
||||||
|
};
|
11
blog/2019-05-28-hola.md
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
---
|
||||||
|
slug: hola
|
||||||
|
title: Hola
|
||||||
|
author: Gao Wei
|
||||||
|
author_title: Docusaurus Core Team
|
||||||
|
author_url: https://github.com/wgao19
|
||||||
|
author_image_url: https://avatars1.githubusercontent.com/u/2055384?v=4
|
||||||
|
tags: [hola, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque elementum dignissim ultricies. Fusce rhoncus ipsum tempor eros aliquam consequat. Lorem ipsum dolor sit amet
|
17
blog/2019-05-29-hello-world.md
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
---
|
||||||
|
slug: hello-world
|
||||||
|
title: Hello
|
||||||
|
author: Endilie Yacop Sucipto
|
||||||
|
author_title: Maintainer of Docusaurus
|
||||||
|
author_url: https://github.com/endiliey
|
||||||
|
author_image_url: https://avatars1.githubusercontent.com/u/17883920?s=460&v=4
|
||||||
|
tags: [hello, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Welcome to this blog. This blog is created with [**Docusaurus 2**](https://docusaurus.io/).
|
||||||
|
|
||||||
|
<!--truncate-->
|
||||||
|
|
||||||
|
This is a test post.
|
||||||
|
|
||||||
|
A whole bunch of other information.
|
13
blog/2019-05-30-welcome.md
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
slug: welcome
|
||||||
|
title: Welcome
|
||||||
|
author: Yangshun Tay
|
||||||
|
author_title: Front End Engineer @ Facebook
|
||||||
|
author_url: https://github.com/yangshun
|
||||||
|
author_image_url: https://avatars0.githubusercontent.com/u/1315101?s=400&v=4
|
||||||
|
tags: [facebook, hello, docusaurus]
|
||||||
|
---
|
||||||
|
|
||||||
|
Blog features are powered by the blog plugin. Simply add files to the `blog` directory. It supports tags as well!
|
||||||
|
|
||||||
|
Delete the whole directory if you don't want the blog features. As simple as that!
|
@ -1,29 +0,0 @@
|
|||||||
---
|
|
||||||
# Welcome to Dashy! To get started, run `docker compose up`
|
|
||||||
version: "3.8"
|
|
||||||
services:
|
|
||||||
dashy:
|
|
||||||
# To build from source, replace 'image: lissy93/dashy' with 'build: .'
|
|
||||||
# build: .
|
|
||||||
image: lissy93/dashy
|
|
||||||
container_name: Dashy
|
|
||||||
# Pass in your config file below, by specifying the path on your host machine
|
|
||||||
# volumes:
|
|
||||||
# - /root/my-config.yml:/app/public/conf.yml
|
|
||||||
ports:
|
|
||||||
- 4000:80
|
|
||||||
# Set any environmental variables
|
|
||||||
environment:
|
|
||||||
- NODE_ENV=production
|
|
||||||
# Specify your user ID and group ID. You can find this by running `id -u` and `id -g`
|
|
||||||
# - UID=1000
|
|
||||||
# - GID=1000
|
|
||||||
# Specify restart policy
|
|
||||||
restart: unless-stopped
|
|
||||||
# Configure healthchecks
|
|
||||||
healthcheck:
|
|
||||||
test: ['CMD', 'node', '/app/services/healthcheck']
|
|
||||||
interval: 1m30s
|
|
||||||
timeout: 10s
|
|
||||||
retries: 3
|
|
||||||
start_period: 40s
|
|
@ -1,4 +1,4 @@
|
|||||||
### Cloud Backup and Restore
|
# 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.
|
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.
|
||||||
|
|
||||||
|
@ -1,35 +0,0 @@
|
|||||||
# README
|
|
||||||
|
|
||||||
## Top-level Schemas
|
|
||||||
|
|
||||||
* [Dashy Config Schema](./dashy-config.md) – `https://example.com/schemas/abstract`
|
|
||||||
|
|
||||||
## Other Schemas
|
|
||||||
|
|
||||||
### Objects
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo.md) – `https://example.com/schemas/abstract#/properties/pageInfo`
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks-items.md) – `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items`
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-appconfig.md "Application configuration") – `https://example.com/schemas/abstract#/properties/appConfig`
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items.md) – `https://example.com/schemas/abstract#/properties/sections/items`
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-displaydata.md "Optional meta data for customizing a section") – `https://example.com/schemas/abstract#/properties/sections/items/properties/displayData`
|
|
||||||
|
|
||||||
* [Untitled object in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items-items.md) – `https://example.com/schemas/abstract#/properties/sections/items/properties/items/items`
|
|
||||||
|
|
||||||
### Arrays
|
|
||||||
|
|
||||||
* [Untitled array in Dashy Config Schema](./dashy-config-properties-pageinfo-properties-navlinks.md "Quick access links, displayed in header") – `https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks`
|
|
||||||
|
|
||||||
* [Untitled array in Dashy Config Schema](./dashy-config-properties-appconfig-properties-cssthemes.md "Theme names to be added to the dropdown") – `https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes`
|
|
||||||
|
|
||||||
* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections.md "Array of sections, containing items") – `https://example.com/schemas/abstract#/properties/sections`
|
|
||||||
|
|
||||||
* [Untitled array in Dashy Config Schema](./dashy-config-properties-sections-items-properties-items.md "Array of items to display with a section") – `https://example.com/schemas/abstract#/properties/sections/items/properties/items`
|
|
||||||
|
|
||||||
## Version Note
|
|
||||||
|
|
||||||
The schemas linked above follow the JSON Schema Spec version: `http://json-schema.org/draft-06/schema#`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg
|
|
||||||
```
|
|
||||||
|
|
||||||
A URL to an image asset to be displayed as background
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## backgroundImg Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes/items
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled array in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes
|
|
||||||
```
|
|
||||||
|
|
||||||
Theme names to be added to the dropdown
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## cssThemes Type
|
|
||||||
|
|
||||||
`string[]`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/customCss
|
|
||||||
```
|
|
||||||
|
|
||||||
Any custom CSS overides, must be minified
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## customCss Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,23 +0,0 @@
|
|||||||
# Untitled boolean in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome
|
|
||||||
```
|
|
||||||
|
|
||||||
Should load font-awesome assets
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## enableFontAwesome Type
|
|
||||||
|
|
||||||
`boolean`
|
|
||||||
|
|
||||||
## enableFontAwesome Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
true
|
|
||||||
```
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet/items
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled undefined type in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet
|
|
||||||
```
|
|
||||||
|
|
||||||
URL or URLs of external stylesheets to add to dropdown/ load
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## externalStyleSheet Type
|
|
||||||
|
|
||||||
any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))
|
|
@ -1,25 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey
|
|
||||||
```
|
|
||||||
|
|
||||||
API key for font-awesome
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## fontAwesomeKey Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## fontAwesomeKey Constraints
|
|
||||||
|
|
||||||
**pattern**: the string must match the following regular expression:
|
|
||||||
|
|
||||||
```regexp
|
|
||||||
^[a-z0-9]{10}$
|
|
||||||
```
|
|
||||||
|
|
||||||
[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com")
|
|
@ -1,23 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig/properties/theme
|
|
||||||
```
|
|
||||||
|
|
||||||
A theme to be applied by default on first load
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## theme Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## theme Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"Callisto"
|
|
||||||
```
|
|
@ -1,179 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/appConfig
|
|
||||||
```
|
|
||||||
|
|
||||||
Application configuration
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## appConfig Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-appconfig.md))
|
|
||||||
|
|
||||||
# appConfig Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :---------------------------------------- | :-------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [backgroundImg](#backgroundimg) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg") |
|
|
||||||
| [theme](#theme) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme") |
|
|
||||||
| [enableFontAwesome](#enablefontawesome) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome") |
|
|
||||||
| [fontAwesomeKey](#fontawesomekey) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey") |
|
|
||||||
| [cssThemes](#cssthemes) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes") |
|
|
||||||
| [externalStyleSheet](#externalstylesheet) | Multiple | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet") |
|
|
||||||
| [customCss](#customcss) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss") |
|
|
||||||
|
|
||||||
## backgroundImg
|
|
||||||
|
|
||||||
A URL to an image asset to be displayed as background
|
|
||||||
|
|
||||||
`backgroundImg`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-backgroundimg.md "https://example.com/schemas/abstract#/properties/appConfig/properties/backgroundImg")
|
|
||||||
|
|
||||||
### backgroundImg Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## theme
|
|
||||||
|
|
||||||
A theme to be applied by default on first load
|
|
||||||
|
|
||||||
`theme`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-theme.md "https://example.com/schemas/abstract#/properties/appConfig/properties/theme")
|
|
||||||
|
|
||||||
### theme Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
### theme Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"Callisto"
|
|
||||||
```
|
|
||||||
|
|
||||||
## enableFontAwesome
|
|
||||||
|
|
||||||
Should load font-awesome assets
|
|
||||||
|
|
||||||
`enableFontAwesome`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `boolean`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-enablefontawesome.md "https://example.com/schemas/abstract#/properties/appConfig/properties/enableFontAwesome")
|
|
||||||
|
|
||||||
### enableFontAwesome Type
|
|
||||||
|
|
||||||
`boolean`
|
|
||||||
|
|
||||||
### enableFontAwesome Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
true
|
|
||||||
```
|
|
||||||
|
|
||||||
## fontAwesomeKey
|
|
||||||
|
|
||||||
API key for font-awesome
|
|
||||||
|
|
||||||
`fontAwesomeKey`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-fontawesomekey.md "https://example.com/schemas/abstract#/properties/appConfig/properties/fontAwesomeKey")
|
|
||||||
|
|
||||||
### fontAwesomeKey Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
### fontAwesomeKey Constraints
|
|
||||||
|
|
||||||
**pattern**: the string must match the following regular expression:
|
|
||||||
|
|
||||||
```regexp
|
|
||||||
^[a-z0-9]{10}$
|
|
||||||
```
|
|
||||||
|
|
||||||
[try pattern](https://regexr.com/?expression=%5E%5Ba-z0-9%5D%7B10%7D%24 "try regular expression with regexr.com")
|
|
||||||
|
|
||||||
## cssThemes
|
|
||||||
|
|
||||||
Theme names to be added to the dropdown
|
|
||||||
|
|
||||||
`cssThemes`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string[]`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-cssthemes.md "https://example.com/schemas/abstract#/properties/appConfig/properties/cssThemes")
|
|
||||||
|
|
||||||
### cssThemes Type
|
|
||||||
|
|
||||||
`string[]`
|
|
||||||
|
|
||||||
## externalStyleSheet
|
|
||||||
|
|
||||||
URL or URLs of external stylesheets to add to dropdown/ load
|
|
||||||
|
|
||||||
`externalStyleSheet`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-externalstylesheet.md "https://example.com/schemas/abstract#/properties/appConfig/properties/externalStyleSheet")
|
|
||||||
|
|
||||||
### externalStyleSheet Type
|
|
||||||
|
|
||||||
any of the folllowing: `string` or `array` ([Details](dashy-config-properties-appconfig-properties-externalstylesheet.md))
|
|
||||||
|
|
||||||
## customCss
|
|
||||||
|
|
||||||
Any custom CSS overides, must be minified
|
|
||||||
|
|
||||||
`customCss`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig-properties-customcss.md "https://example.com/schemas/abstract#/properties/appConfig/properties/customCss")
|
|
||||||
|
|
||||||
### customCss Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/description
|
|
||||||
```
|
|
||||||
|
|
||||||
Sub-title, displayed in header
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## description Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## footerText Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## path Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## title Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,58 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
|
|
||||||
|
|
||||||
# items Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :-------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title") |
|
|
||||||
| [path](#path) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path") |
|
|
||||||
|
|
||||||
## title
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`title`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/title")
|
|
||||||
|
|
||||||
### title Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## path
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`path`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks-items-properties-path.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks/items/properties/path")
|
|
||||||
|
|
||||||
### path Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,19 +0,0 @@
|
|||||||
# Untitled array in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks
|
|
||||||
```
|
|
||||||
|
|
||||||
Quick access links, displayed in header
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## navLinks Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
|
|
||||||
|
|
||||||
## navLinks Constraints
|
|
||||||
|
|
||||||
**maximum number of items**: the maximum number of items for this array is: `6`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo/properties/title
|
|
||||||
```
|
|
||||||
|
|
||||||
Title and heading for the app
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## title Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,100 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/pageInfo
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## pageInfo Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-pageinfo.md))
|
|
||||||
|
|
||||||
# pageInfo Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title") |
|
|
||||||
| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description") |
|
|
||||||
| [navLinks](#navlinks) | `array` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks") |
|
|
||||||
| [footerText](#footertext) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText") |
|
|
||||||
|
|
||||||
## title
|
|
||||||
|
|
||||||
Title and heading for the app
|
|
||||||
|
|
||||||
`title`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-title.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/title")
|
|
||||||
|
|
||||||
### title Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## description
|
|
||||||
|
|
||||||
Sub-title, displayed in header
|
|
||||||
|
|
||||||
`description`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-description.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/description")
|
|
||||||
|
|
||||||
### description Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## navLinks
|
|
||||||
|
|
||||||
Quick access links, displayed in header
|
|
||||||
|
|
||||||
`navLinks`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-navlinks.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/navLinks")
|
|
||||||
|
|
||||||
### navLinks Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-pageinfo-properties-navlinks-items.md))
|
|
||||||
|
|
||||||
### navLinks Constraints
|
|
||||||
|
|
||||||
**maximum number of items**: the maximum number of items for this array is: `6`
|
|
||||||
|
|
||||||
## footerText
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`footerText`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo-properties-footertext.md "https://example.com/schemas/abstract#/properties/pageInfo/properties/footerText")
|
|
||||||
|
|
||||||
### footerText Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled boolean in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed
|
|
||||||
```
|
|
||||||
|
|
||||||
If true, section needs to be clicked to open
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## collapsed Type
|
|
||||||
|
|
||||||
`boolean`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color
|
|
||||||
```
|
|
||||||
|
|
||||||
Hex code, or HTML color for section fill
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## color Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,29 +0,0 @@
|
|||||||
# Untitled number in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols
|
|
||||||
```
|
|
||||||
|
|
||||||
The amount of space that the section spans horizontally
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## cols Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
## cols Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `5`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
||||||
|
|
||||||
## cols Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
1
|
|
||||||
```
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles
|
|
||||||
```
|
|
||||||
|
|
||||||
CSS overides for section container
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## customStyles Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,21 +0,0 @@
|
|||||||
# Untitled number in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX
|
|
||||||
```
|
|
||||||
|
|
||||||
Number of items per column
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## itemCountX Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
## itemCountX Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `12`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
@ -1,21 +0,0 @@
|
|||||||
# Untitled number in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY
|
|
||||||
```
|
|
||||||
|
|
||||||
Number of items per row
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## itemCountY Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
## itemCountY Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `12`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
@ -1,33 +0,0 @@
|
|||||||
# Untitled undefined type in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize
|
|
||||||
```
|
|
||||||
|
|
||||||
Size of items within the section
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## itemSize Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
## itemSize Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :--------- | :---------- |
|
|
||||||
| `"small"` | |
|
|
||||||
| `"medium"` | |
|
|
||||||
| `"large"` | |
|
|
||||||
|
|
||||||
## itemSize Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"medium"
|
|
||||||
```
|
|
@ -1,32 +0,0 @@
|
|||||||
# Untitled undefined type in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout
|
|
||||||
```
|
|
||||||
|
|
||||||
If set to grid, items have uniform width, and itemCount can be set
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## layout Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
## layout Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :------- | :---------- |
|
|
||||||
| `"grid"` | |
|
|
||||||
| `"auto"` | |
|
|
||||||
|
|
||||||
## layout Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"auto"
|
|
||||||
```
|
|
@ -1,29 +0,0 @@
|
|||||||
# Untitled number in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows
|
|
||||||
```
|
|
||||||
|
|
||||||
The amount of space that the section spans vertically
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## rows Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
## rows Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `5`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
||||||
|
|
||||||
## rows Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
1
|
|
||||||
```
|
|
@ -1,266 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/displayData
|
|
||||||
```
|
|
||||||
|
|
||||||
Optional meta data for customizing a section
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## displayData Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
|
|
||||||
|
|
||||||
# displayData Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :---------------------------- | :------------ | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [collapsed](#collapsed) | `boolean` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed") |
|
|
||||||
| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color") |
|
|
||||||
| [customStyles](#customstyles) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles") |
|
|
||||||
| [itemSize](#itemsize) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize") |
|
|
||||||
| [rows](#rows) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows") |
|
|
||||||
| [cols](#cols) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols") |
|
|
||||||
| [layout](#layout) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout") |
|
|
||||||
| [itemCountX](#itemcountx) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX") |
|
|
||||||
| [itemCountY](#itemcounty) | `number` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY") |
|
|
||||||
|
|
||||||
## collapsed
|
|
||||||
|
|
||||||
If true, section needs to be clicked to open
|
|
||||||
|
|
||||||
`collapsed`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `boolean`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-collapsed.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/collapsed")
|
|
||||||
|
|
||||||
### collapsed Type
|
|
||||||
|
|
||||||
`boolean`
|
|
||||||
|
|
||||||
## color
|
|
||||||
|
|
||||||
Hex code, or HTML color for section fill
|
|
||||||
|
|
||||||
`color`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/color")
|
|
||||||
|
|
||||||
### color Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## customStyles
|
|
||||||
|
|
||||||
CSS overides for section container
|
|
||||||
|
|
||||||
`customStyles`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-customstyles.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/customStyles")
|
|
||||||
|
|
||||||
### customStyles Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## itemSize
|
|
||||||
|
|
||||||
Size of items within the section
|
|
||||||
|
|
||||||
`itemSize`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: unknown
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemsize.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemSize")
|
|
||||||
|
|
||||||
### itemSize Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
### itemSize Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :--------- | :---------- |
|
|
||||||
| `"small"` | |
|
|
||||||
| `"medium"` | |
|
|
||||||
| `"large"` | |
|
|
||||||
|
|
||||||
### itemSize Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"medium"
|
|
||||||
```
|
|
||||||
|
|
||||||
## rows
|
|
||||||
|
|
||||||
The amount of space that the section spans vertically
|
|
||||||
|
|
||||||
`rows`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `number`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-rows.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/rows")
|
|
||||||
|
|
||||||
### rows Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
### rows Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `5`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
||||||
|
|
||||||
### rows Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
1
|
|
||||||
```
|
|
||||||
|
|
||||||
## cols
|
|
||||||
|
|
||||||
The amount of space that the section spans horizontally
|
|
||||||
|
|
||||||
`cols`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `number`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-cols.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/cols")
|
|
||||||
|
|
||||||
### cols Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
### cols Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `5`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
||||||
|
|
||||||
### cols Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
1
|
|
||||||
```
|
|
||||||
|
|
||||||
## layout
|
|
||||||
|
|
||||||
If set to grid, items have uniform width, and itemCount can be set
|
|
||||||
|
|
||||||
`layout`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: unknown
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-layout.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/layout")
|
|
||||||
|
|
||||||
### layout Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
### layout Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :------- | :---------- |
|
|
||||||
| `"grid"` | |
|
|
||||||
| `"auto"` | |
|
|
||||||
|
|
||||||
### layout Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"auto"
|
|
||||||
```
|
|
||||||
|
|
||||||
## itemCountX
|
|
||||||
|
|
||||||
Number of items per column
|
|
||||||
|
|
||||||
`itemCountX`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `number`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcountx.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountX")
|
|
||||||
|
|
||||||
### itemCountX Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
### itemCountX Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `12`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
||||||
|
|
||||||
## itemCountY
|
|
||||||
|
|
||||||
Number of items per row
|
|
||||||
|
|
||||||
`itemCountY`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `number`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata-properties-itemcounty.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData/properties/itemCountY")
|
|
||||||
|
|
||||||
### itemCountY Type
|
|
||||||
|
|
||||||
`number`
|
|
||||||
|
|
||||||
### itemCountY Constraints
|
|
||||||
|
|
||||||
**maximum**: the value of this number must smaller than or equal to: `12`
|
|
||||||
|
|
||||||
**minimum**: the value of this number must greater than or equal to: `1`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/icon
|
|
||||||
```
|
|
||||||
|
|
||||||
Icon will be displayed next to title
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## icon Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color
|
|
||||||
```
|
|
||||||
|
|
||||||
A custom fill color of the item
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## color Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description
|
|
||||||
```
|
|
||||||
|
|
||||||
Short description, shown on hover or in a tooltip
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## description Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon
|
|
||||||
```
|
|
||||||
|
|
||||||
An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## icon Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider
|
|
||||||
```
|
|
||||||
|
|
||||||
Provider name, e.g. Microsoft
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## provider Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,33 +0,0 @@
|
|||||||
# Untitled undefined type in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target
|
|
||||||
```
|
|
||||||
|
|
||||||
Opening method, when item is clicked
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## target Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
## target Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :---------- | :---------- |
|
|
||||||
| `"newtab"` | |
|
|
||||||
| `"sametab"` | |
|
|
||||||
| `"iframe"` | |
|
|
||||||
|
|
||||||
## target Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"newtab"
|
|
||||||
```
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title
|
|
||||||
```
|
|
||||||
|
|
||||||
Text shown on the item
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## title Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url
|
|
||||||
```
|
|
||||||
|
|
||||||
The destination to navigate to when item is clicked
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## url Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,171 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items/items
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
|
|
||||||
|
|
||||||
# items Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :-------------------------- | :------------ | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [title](#title) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title") |
|
|
||||||
| [description](#description) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description") |
|
|
||||||
| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon") |
|
|
||||||
| [url](#url) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url") |
|
|
||||||
| [target](#target) | Not specified | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target") |
|
|
||||||
| [color](#color) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color") |
|
|
||||||
| [provider](#provider) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider") |
|
|
||||||
|
|
||||||
## title
|
|
||||||
|
|
||||||
Text shown on the item
|
|
||||||
|
|
||||||
`title`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-title.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/title")
|
|
||||||
|
|
||||||
### title Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## description
|
|
||||||
|
|
||||||
Short description, shown on hover or in a tooltip
|
|
||||||
|
|
||||||
`description`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-description.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/description")
|
|
||||||
|
|
||||||
### description Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## icon
|
|
||||||
|
|
||||||
An icon, either as a font-awesome identifier, local or remote URL, or auto-fetched favicon
|
|
||||||
|
|
||||||
`icon`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/icon")
|
|
||||||
|
|
||||||
### icon Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## url
|
|
||||||
|
|
||||||
The destination to navigate to when item is clicked
|
|
||||||
|
|
||||||
`url`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-url.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/url")
|
|
||||||
|
|
||||||
### url Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## target
|
|
||||||
|
|
||||||
Opening method, when item is clicked
|
|
||||||
|
|
||||||
`target`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: unknown
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-target.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/target")
|
|
||||||
|
|
||||||
### target Type
|
|
||||||
|
|
||||||
unknown
|
|
||||||
|
|
||||||
### target Constraints
|
|
||||||
|
|
||||||
**enum**: the value of this property must be equal to one of the following values:
|
|
||||||
|
|
||||||
| Value | Explanation |
|
|
||||||
| :---------- | :---------- |
|
|
||||||
| `"newtab"` | |
|
|
||||||
| `"sametab"` | |
|
|
||||||
| `"iframe"` | |
|
|
||||||
|
|
||||||
### target Default Value
|
|
||||||
|
|
||||||
The default value is:
|
|
||||||
|
|
||||||
```json
|
|
||||||
"newtab"
|
|
||||||
```
|
|
||||||
|
|
||||||
## color
|
|
||||||
|
|
||||||
A custom fill color of the item
|
|
||||||
|
|
||||||
`color`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-color.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/color")
|
|
||||||
|
|
||||||
### color Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## provider
|
|
||||||
|
|
||||||
Provider name, e.g. Microsoft
|
|
||||||
|
|
||||||
`provider`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items-items-properties-provider.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items/items/properties/provider")
|
|
||||||
|
|
||||||
### provider Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled array in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/items
|
|
||||||
```
|
|
||||||
|
|
||||||
Array of items to display with a section
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled string in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items/properties/name
|
|
||||||
```
|
|
||||||
|
|
||||||
Title/ heading for a section
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## name Type
|
|
||||||
|
|
||||||
`string`
|
|
@ -1,96 +0,0 @@
|
|||||||
# Untitled object in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections/items
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## items Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-sections-items.md))
|
|
||||||
|
|
||||||
# items Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :-------------------------- | :------- | :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [name](#name) | `string` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name") |
|
|
||||||
| [icon](#icon) | `string` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon") |
|
|
||||||
| [displayData](#displaydata) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData") |
|
|
||||||
| [items](#items) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items") |
|
|
||||||
|
|
||||||
## name
|
|
||||||
|
|
||||||
Title/ heading for a section
|
|
||||||
|
|
||||||
`name`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-name.md "https://example.com/schemas/abstract#/properties/sections/items/properties/name")
|
|
||||||
|
|
||||||
### name Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## icon
|
|
||||||
|
|
||||||
Icon will be displayed next to title
|
|
||||||
|
|
||||||
`icon`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `string`
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-icon.md "https://example.com/schemas/abstract#/properties/sections/items/properties/icon")
|
|
||||||
|
|
||||||
### icon Type
|
|
||||||
|
|
||||||
`string`
|
|
||||||
|
|
||||||
## displayData
|
|
||||||
|
|
||||||
Optional meta data for customizing a section
|
|
||||||
|
|
||||||
`displayData`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-displaydata.md "https://example.com/schemas/abstract#/properties/sections/items/properties/displayData")
|
|
||||||
|
|
||||||
### displayData Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-sections-items-properties-displaydata.md))
|
|
||||||
|
|
||||||
## items
|
|
||||||
|
|
||||||
Array of items to display with a section
|
|
||||||
|
|
||||||
`items`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections-items-properties-items.md "https://example.com/schemas/abstract#/properties/sections/items/properties/items")
|
|
||||||
|
|
||||||
### items Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-sections-items-properties-items-items.md))
|
|
@ -1,15 +0,0 @@
|
|||||||
# Untitled array in Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract#/properties/sections
|
|
||||||
```
|
|
||||||
|
|
||||||
Array of sections, containing items
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :---------------------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------- |
|
|
||||||
| Can be instantiated | No | Unknown status | Unknown identifiability | Forbidden | Allowed | none | [dashy-config.schema.json*](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## sections Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-sections-items.md))
|
|
@ -1,77 +0,0 @@
|
|||||||
# Dashy Config Schema Schema
|
|
||||||
|
|
||||||
```txt
|
|
||||||
https://example.com/schemas/abstract
|
|
||||||
```
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
| Abstract | Extensible | Status | Identifiable | Custom Properties | Additional Properties | Access Restrictions | Defined In |
|
|
||||||
| :------------------ | :--------- | :------------- | :----------- | :---------------- | :-------------------- | :------------------ | :------------------------------------------------------------------------------------ |
|
|
||||||
| Can be instantiated | No | Unknown status | No | Forbidden | Forbidden | none | [dashy-config.schema.json](../../out/dashy-config.schema.json "open original schema") |
|
|
||||||
|
|
||||||
## Dashy Config Schema Type
|
|
||||||
|
|
||||||
`object` ([Dashy Config Schema](dashy-config.md))
|
|
||||||
|
|
||||||
# Dashy Config Schema Properties
|
|
||||||
|
|
||||||
| Property | Type | Required | Nullable | Defined by |
|
|
||||||
| :---------------------- | :------- | :------- | :------------- | :----------------------------------------------------------------------------------------------------------------------- |
|
|
||||||
| [pageInfo](#pageinfo) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo") |
|
|
||||||
| [appConfig](#appconfig) | `object` | Optional | cannot be null | [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig") |
|
|
||||||
| [sections](#sections) | `array` | Required | cannot be null | [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections") |
|
|
||||||
|
|
||||||
## pageInfo
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
`pageInfo`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `object` ([Details](dashy-config-properties-pageinfo.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-pageinfo.md "https://example.com/schemas/abstract#/properties/pageInfo")
|
|
||||||
|
|
||||||
### pageInfo Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-pageinfo.md))
|
|
||||||
|
|
||||||
## appConfig
|
|
||||||
|
|
||||||
Application configuration
|
|
||||||
|
|
||||||
`appConfig`
|
|
||||||
|
|
||||||
* is optional
|
|
||||||
|
|
||||||
* Type: `object` ([Details](dashy-config-properties-appconfig.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-appconfig.md "https://example.com/schemas/abstract#/properties/appConfig")
|
|
||||||
|
|
||||||
### appConfig Type
|
|
||||||
|
|
||||||
`object` ([Details](dashy-config-properties-appconfig.md))
|
|
||||||
|
|
||||||
## sections
|
|
||||||
|
|
||||||
Array of sections, containing items
|
|
||||||
|
|
||||||
`sections`
|
|
||||||
|
|
||||||
* is required
|
|
||||||
|
|
||||||
* Type: `object[]` ([Details](dashy-config-properties-sections-items.md))
|
|
||||||
|
|
||||||
* cannot be null
|
|
||||||
|
|
||||||
* defined in: [Dashy Config Schema](dashy-config-properties-sections.md "https://example.com/schemas/abstract#/properties/sections")
|
|
||||||
|
|
||||||
### sections Type
|
|
||||||
|
|
||||||
`object[]` ([Details](dashy-config-properties-sections-items.md))
|
|
@ -1,4 +1,4 @@
|
|||||||
|
# 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).
|
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).
|
||||||
|
|
||||||
|
421
docs/dashy.md
Normal file
@ -0,0 +1,421 @@
|
|||||||
|
|
||||||
|
<h1 align="center">Dashy</h1>
|
||||||
|
<p align="center"><i>Dashy helps you organize your self-hosted services, by making them all accessible from a single place</i></p>
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img width="220" src="https://i.ibb.co/yhbt6CY/dashy.png" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
[![Awesome Self-Hosted](https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg)](https://github.com/awesome-selfhosted/awesome-selfhosted#personal-dashboards)
|
||||||
|
![Docker Pulls](https://img.shields.io/docker/pulls/lissy93/dashy?logo=docker&style=flat-square)
|
||||||
|
![Stars](https://flat.badgen.net/github/stars/lissy93/dashy?icon=github)
|
||||||
|
![GitHub Status](https://flat.badgen.net/github/status/lissy93/dashy?icon=github)
|
||||||
|
![License MIT](https://img.shields.io/badge/License-MIT-09be48?style=flat-square&logo=opensourceinitiative)
|
||||||
|
![Current Version](https://img.shields.io/github/package-json/v/lissy93/dashy?style=flat-square&logo=azurepipelines&color=00af87)
|
||||||
|
|
||||||
|
## 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: [![One-Click Deploy with PWD](https://img.shields.io/badge/Play--with--Docker-Deploy-2496ed?style=flat-square&logo=docker)](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
|
||||||
|
<p align="center">
|
||||||
|
<img width="800" src="https://i.ibb.co/L8YbNNc/dashy-demo2.gif" alt="Demo" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
#### User Showcase
|
||||||
|
Are using Dashy? Want to share your dashboard here too - [Submit your Screenshots to the Showcase](./docs/showcase.md#submitting-your-dashboard)!
|
||||||
|
|
||||||
|
![Screenshots](https://i.ibb.co/r5T3MwM/dashy-screenshots.png)
|
||||||
|
|
||||||
|
**[⬆️ 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)
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<a href="https://i.ibb.co/BVSHV1v/dashy-themes-slideshow.gif">
|
||||||
|
<img alt="Example Themes" src="https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/theme-slideshow.gif" width="400" />
|
||||||
|
</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img width="400" src="https://i.ibb.co/GTVmZnc/dashy-example-icons.png" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
- **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.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img alt="Status Checks demo" src="https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/status-check-demo.gif" width="600" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
**[⬆️ 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`.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img width="500" src="https://i.ibb.co/vmZdSRt/dashy-context-menu-2.png" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
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:
|
||||||
|
<p align="center">
|
||||||
|
<img alt="Workspace view demo" src="https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/workspace-demo.gif" width="600" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
**[⬆️ 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.
|
||||||
|
|
||||||
|
<p align="center">
|
||||||
|
<img alt="Workspace view demo" src="https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/config-editor-demo.gif" width="600" />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Developing 🧱
|
||||||
|
|
||||||
|
> For full development documentation, see: [**Developing**](./docs/developing.md)
|
||||||
|
|
||||||
|
1. Get Code: `git clone git@github.com:Lissy93/dashy.git` and `cd dashy`
|
||||||
|
2. Install dependencies: `yarn`
|
||||||
|
3. Start dev server: `yarn dev`
|
||||||
|
|
||||||
|
Hot reload is enabled, so changes will be detected automatically, triggering the app to be rebuilt and refreshed. Ensure that all lint checks and tests are passing before pushing an code or deploying the app.
|
||||||
|
|
||||||
|
If you are new to Vue.js or web development and want to learn more, [here are some resources](docs/developing.md#resources-for-beginners) to help get you started. Dashy is a pretty straight-forward application, so would make an ideal candidate for your first PR!
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Contributing 😇
|
||||||
|
|
||||||
|
> For full contributing guide, see: [**Contributing**](/docs/contributing.md)
|
||||||
|
|
||||||
|
Pull requests are welcome, and would by much appreciated!
|
||||||
|
|
||||||
|
Some ideas for PRs include: bug fixes, improve the docs, add new themes, implement a new widget, add or improve the display options, improve or refactor the code, or implement a new feature.
|
||||||
|
|
||||||
|
Before you submit your pull request, please ensure the following:
|
||||||
|
- Must be backwards compatible
|
||||||
|
- All lint checks and tests must pass
|
||||||
|
- If a new option in the the config file is added, it needs to be added into the [schema](https://github.com/Lissy93/dashy/blob/master/src/utils/ConfigSchema.json), and documented in the [configuring](https://github.com/Lissy93/dashy/blob/master/docs/configuring.md) guide
|
||||||
|
- If a new dependency is required, it must be essential, and it must be thoroughly checked out for security or efficiency issues
|
||||||
|
- Your pull request will need to be up-to-date with master, and the PR template must be filled in
|
||||||
|
|
||||||
|
### Repo Status
|
||||||
|
|
||||||
|
![Open PRs](https://flat.badgen.net/github/open-prs/lissy93/dashy?icon=github)
|
||||||
|
![Total PRs](https://flat.badgen.net/github/prs/lissy93/dashy?icon=github)
|
||||||
|
![GitHub commit activity](https://img.shields.io/github/commit-activity/m/lissy93/dashy?style=flat-square)
|
||||||
|
![Last Commit](https://flat.badgen.net/github/last-commit/lissy93/dashy?icon=github)
|
||||||
|
![Contributors](https://flat.badgen.net/github/contributors/lissy93/dashy?icon=github)
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Support 🙋♀️
|
||||||
|
|
||||||
|
> For general discussions, the [Discussions Board](https://github.com/Lissy93/dashy/discussions) is now active!
|
||||||
|
|
||||||
|
If you've found a bug, or something that isn't working as you'd expect, please raise an issue, so that it can be resolved. Similarly, if you're having trouble getting things up and running, feel free to ask a question. Feature requests and feedback are also welcome, as it helps Dashy improve.
|
||||||
|
|
||||||
|
- [Raise a Bug 🐛](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%90%9B+Bug&template=bug-report---.md&title=%5BBUG%5D)
|
||||||
|
- [Submit a Feature Request 🦄](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A6%84+Feature+Request&template=feature-request---.md&title=%5BFEATURE_REQUEST%5D)
|
||||||
|
- [Ask a Question 🤷♀️](https://github.com/Lissy93/dashy/issues/new?assignees=Lissy93&labels=%F0%9F%A4%B7%E2%80%8D%E2%99%82%EF%B8%8F+Question&template=question------.md&title=%5BQUESTION%5D)
|
||||||
|
- [Share Feedback 🌈](https://github.com/Lissy93/dashy/issues/new?assignees=&labels=%F0%9F%8C%88+Feedback&template=share-feedback---.md&title=%5BFEEDBACK%5D)
|
||||||
|
|
||||||
|
[**Issue Status**](https://isitmaintained.com/project/lissy93/dashy) ![Resolution Time](http://isitmaintained.com/badge/resolution/lissy93/dashy.svg) ![Open Issues](http://isitmaintained.com/badge/open/lissy93/dashy.svg) ![Closed Issues](https://badgen.net/github/closed-issues/lissy93/dashy)
|
||||||
|
|
||||||
|
|
||||||
|
For more general questions about any of the technologies used, [StackOverflow](https://stackoverflow.com/questions/) may be more helpful first port of info
|
||||||
|
|
||||||
|
If you need to get in touch securely with the author (me, Alicia Sykes), drop me a message at:
|
||||||
|
- **Email**: `alicia at omg dot lol`
|
||||||
|
- **Public Key** [`0688 F8D3 4587 D954 E9E5 1FB8 FEDB 68F5 5C02 83A7`](https://keybase.io/aliciasykes/pgp_keys.asc?fingerprint=0688f8d34587d954e9e51fb8fedb68f55c0283a7)
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Documentation 📘
|
||||||
|
|
||||||
|
- [Getting Started](/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)
|
||||||
|
- [Theming](/docs/theming.md)
|
||||||
|
- [Icons](/docs/icons.md)
|
||||||
|
- [Authentication](/docs/authentication.md)
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Credits 🏆
|
||||||
|
|
||||||
|
### Contributors 👥
|
||||||
|
|
||||||
|
![Auto-generated contributors](https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/CONTRIBUTORS.svg)
|
||||||
|
|
||||||
|
### Dependencies 🔗
|
||||||
|
|
||||||
|
This app definitely wouldn't have been quite so possible without the making use of the following package and components. Full credit and big kudos to their respective authors, who've done an amazing job in building and maintaining them.
|
||||||
|
|
||||||
|
##### Core
|
||||||
|
At it's core, the application uses [Vue.js](https://github.com/vuejs/vue), as well as it's services. Styling is done with [SCSS](https://github.com/sass/sass), JavaScript is currently [Babel](https://github.com/babel/babel), (but I am in the process of converting to [TypeScript](https://github.com/Microsoft/TypeScript)), linting is done with [ESLint](https://github.com/eslint/eslint), the config is defined in [YAML](https://github.com/yaml/yaml), and there is a simple [Node.js](https://github.com/nodejs/node) server to serve up the static app.
|
||||||
|
|
||||||
|
##### Frontend Components
|
||||||
|
- [`vue-select`](https://github.com/sagalbot/vue-select) - Dropdown component by @sagalbot `MIT`
|
||||||
|
- [`vue-js-modal`](https://github.com/euvl/vue-js-modal) - Modal component by @euvl `MIT`
|
||||||
|
- [`v-tooltip`](https://github.com/Akryum/v-tooltip) - Tooltip component by @Akryum `MIT`
|
||||||
|
- [`vue-material-tabs`](https://github.com/jairoblatt/vue-material-tabs) - Tab view component by @jairoblatt `MIT`
|
||||||
|
- [`VJsoneditor`](https://github.com/yansenlei/VJsoneditor) - Interactive JSON editor component by @yansenlei `MIT`
|
||||||
|
- Forked from [`JsonEditor`](https://github.com/josdejong/jsoneditor) by @josdejong `Apache-2.0 License`
|
||||||
|
- [`vue-toasted`](https://github.com/shakee93/vue-toasted) - Toast notification component by @shakee93 `MIT`
|
||||||
|
- [`vue-prism-editor`](https://github.com/koca/vue-prism-editor) - Lightweight code editor by @koca `MIT`
|
||||||
|
- Forked from [`prism.js`](https://github.com/PrismJS/prism) `MIT`
|
||||||
|
|
||||||
|
##### Utilities
|
||||||
|
- [`crypto-js`](https://github.com/brix/crypto-js) - Encryption implementations by @evanvosberg and community `MIT`
|
||||||
|
- [`axios`](https://github.com/axios/axios) - Promise based HTTP client by @mzabriskie and community `MIT`
|
||||||
|
- [`ajv`](https://github.com/ajv-validator/ajv) - JSON schema Validator by @epoberezkin and community `MIT`
|
||||||
|
|
||||||
|
##### Backup & Sync Server
|
||||||
|
Although the app is purely frontend, there is an optional cloud backup and restore feature. This is built as a serverless function on [Cloudflare workers](https://workers.cloudflare.com/) using [KV](https://developers.cloudflare.com/workers/runtime-apis/kv) and [web crypto](https://developers.cloudflare.com/workers/runtime-apis/web-crypto)
|
||||||
|
|
||||||
|
##### External Services
|
||||||
|
The 1-Click deploy demo uses [Play-with-Docker Labs](https://play-with-docker.com/). Code is hosted on [GitHub](https://github.com), Docker image is hosted on [DockerHub](https://hub.docker.com/), and the demos are hosted on [Netlify](https://www.netlify.com/).
|
||||||
|
|
||||||
|
### Alternatives 🙌
|
||||||
|
|
||||||
|
There are a few self-hosted web apps, that serve a similar purpose to Dashy. If you're looking for a dashboard, and Dashy doesn't meet your needs, I highly recommend you check these projects out!
|
||||||
|
[HomeDash2](https://lamarios.github.io/Homedash2), [Homer](https://github.com/bastienwirtz/homer) (`Apache License 2.0`), [Organizr](https://organizr.app/) (`GPL-3.0 License`) and [Heimdall](https://github.com/linuxserver/Heimdall) (`MIT License`)
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
## License 📜
|
||||||
|
|
||||||
|
```
|
||||||
|
Copyright © 2021 Alicia Sykes <https://aliciasykes.com>
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy of this
|
||||||
|
software and associated documentation files (the “Software”), to deal in the Software
|
||||||
|
without restriction, including without limitation the rights to use, copy, modify, merge,
|
||||||
|
publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
||||||
|
persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in all copies or
|
||||||
|
substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
|
||||||
|
INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
||||||
|
PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||||
|
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWAREOR THE USE
|
||||||
|
OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
|
```
|
||||||
|
|
||||||
|
**TDLR;** _You can do whatever you like with Dashy: use it in private or commercial settings,_
|
||||||
|
_redistribute and modify it. But you must display this license and credit the author._
|
||||||
|
_There is no warranty that this app will work as expected, and the author cannot be held_
|
||||||
|
_liable for anything that goes wrong._
|
||||||
|
For more info, see TLDR Legal's [Explanation of MIT](https://tldrlegal.com/license/mit-license)
|
||||||
|
|
||||||
|
![Octocat](https://github.githubassets.com/images/icons/emoji/octocat.png?v8)
|
||||||
|
|
||||||
|
**[⬆️ Back to Top](#dashy)**
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
<a href="https://www.producthunt.com/posts/dashy" target="_blank" align="center"><img src="https://api.producthunt.com/widgets/embed-image/v1/featured.svg?post_id=294872&theme=dark" alt="Dashy - A feature-rich dashboard for your homelab 🚀 | Product Hunt" width="250" height="54" /></a>
|
@ -1,5 +1,4 @@
|
|||||||
|
# Developing
|
||||||
## Developing
|
|
||||||
|
|
||||||
This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture.
|
This article outlines how to get Dashy running in a development environment, and outlines the basics of the architecture.
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Icons
|
# 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
|
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
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Contents
|
# Contents
|
||||||
|
|
||||||
- [Deployment](/docs/deployment.md)
|
- [Deployment](/docs/deployment.md)
|
||||||
- [Configuring](/docs/configuring.md)
|
- [Configuring](/docs/configuring.md)
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Dashy Showcase
|
# Showcase
|
||||||
|
|
||||||
> Do you use Dashy? Got a sweet dashboard? Submit it to the showcase! [See How](#submitting-your-dashboard)
|
> Do you use Dashy? Got a sweet dashboard? Submit it to the showcase! [See How](#submitting-your-dashboard)
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## Theming
|
# Theming
|
||||||
|
|
||||||
By default Dashy comes with 20 built in themes, which can be applied from the dropwodwn menu in the UI
|
By default Dashy comes with 20 built in themes, which can be applied from the dropwodwn menu in the UI
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
## User Guide
|
# 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)
|
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)
|
||||||
|
|
||||||
|
81
docusaurus.config.js
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
const lightCodeTheme = require('prism-react-renderer/themes/github');
|
||||||
|
const darkCodeTheme = require('prism-react-renderer/themes/dracula');
|
||||||
|
|
||||||
|
/** @type {import('@docusaurus/types').DocusaurusConfig} */
|
||||||
|
module.exports = {
|
||||||
|
title: 'Dashy',
|
||||||
|
tagline: 'The Ultimate Homepage for your Homelab',
|
||||||
|
url: 'https://dashy.to',
|
||||||
|
baseUrl: '/',
|
||||||
|
onBrokenLinks: 'throw',
|
||||||
|
onBrokenMarkdownLinks: 'warn',
|
||||||
|
favicon: 'img/favicon.ico',
|
||||||
|
organizationName: 'facebook', // Usually your GitHub org/user name.
|
||||||
|
projectName: 'docusaurus', // Usually your repo name.
|
||||||
|
themeConfig: {
|
||||||
|
navbar: {
|
||||||
|
title: 'Dashy',
|
||||||
|
logo: {
|
||||||
|
alt: 'My Site Logo',
|
||||||
|
src: 'img/dashy-512.png',
|
||||||
|
},
|
||||||
|
items: [
|
||||||
|
|
||||||
|
],
|
||||||
|
},
|
||||||
|
footer: {
|
||||||
|
style: 'dark',
|
||||||
|
links: [
|
||||||
|
{
|
||||||
|
title: 'Docs',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Tutorial',
|
||||||
|
to: '/docs/intro',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'More',
|
||||||
|
items: [
|
||||||
|
{
|
||||||
|
label: 'Docs',
|
||||||
|
to: '/docs',
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: 'GitHub',
|
||||||
|
href: 'https://github.com/lissy93/dashy',
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
copyright: `Copyright © ${new Date().getFullYear()} Alicia Sykes`,
|
||||||
|
},
|
||||||
|
prism: {
|
||||||
|
theme: lightCodeTheme,
|
||||||
|
darkTheme: darkCodeTheme,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
presets: [
|
||||||
|
[
|
||||||
|
'@docusaurus/preset-classic',
|
||||||
|
{
|
||||||
|
docs: {
|
||||||
|
sidebarPath: require.resolve('./sidebars.js'),
|
||||||
|
// Please change this to your repo.
|
||||||
|
editUrl:
|
||||||
|
'https://github.com/facebook/docusaurus/edit/master/website/',
|
||||||
|
},
|
||||||
|
blog: {
|
||||||
|
showReadingTime: true,
|
||||||
|
// Please change this to your repo.
|
||||||
|
editUrl:
|
||||||
|
'https://github.com/facebook/docusaurus/edit/master/website/blog/',
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
customCss: require.resolve('./src/css/custom.css'),
|
||||||
|
},
|
||||||
|
},
|
||||||
|
],
|
||||||
|
],
|
||||||
|
};
|
10
netlify.toml
@ -1,10 +0,0 @@
|
|||||||
[build]
|
|
||||||
command = "yarn build"
|
|
||||||
publish = "dist"
|
|
||||||
|
|
||||||
[template.environment]
|
|
||||||
STATUSKIT_PAGE_TITLE = "Dashy"
|
|
||||||
STATUSKIT_COMPANY_LOGO = "https://raw.githubusercontent.com/Lissy93/dashy/master/docs/assets/logo.png"
|
|
||||||
STATUSKIT_SUPPORT_CONTACT_LINK = "https://dashy.as93.net"
|
|
||||||
STATUSKIT_RESOURCES_LINK = "https://github.com/Lissy93/dashy/tree/master/docs"
|
|
||||||
|
|
115
package.json
@ -1,89 +1,40 @@
|
|||||||
{
|
{
|
||||||
"name": "Dashy",
|
"name": "dashy",
|
||||||
"version": "1.3.6",
|
"version": "0.0.0",
|
||||||
"license": "MIT",
|
"private": true,
|
||||||
"main": "server",
|
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "node server",
|
"docusaurus": "docusaurus",
|
||||||
"dev": "vue-cli-service serve",
|
"start": "docusaurus start",
|
||||||
"build": "vue-cli-service build",
|
"build": "docusaurus build",
|
||||||
"lint": "vue-cli-service lint",
|
"swizzle": "docusaurus swizzle",
|
||||||
"pm2-start": "npx pm2 start server.js",
|
"deploy": "docusaurus deploy",
|
||||||
"build-watch": "vue-cli-service build --watch --mode production",
|
"clear": "docusaurus clear",
|
||||||
"build-and-start": "npm-run-all --parallel build-watch start",
|
"serve": "docusaurus serve",
|
||||||
"validate-config": "node src/utils/ConfigValidator",
|
"write-translations": "docusaurus write-translations",
|
||||||
"health-check": "node services/healthcheck"
|
"write-heading-ids": "docusaurus write-heading-ids"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"ajv": "^8.5.0",
|
"@docusaurus/core": "2.0.0-beta.2",
|
||||||
"axios": "^0.21.1",
|
"@docusaurus/preset-classic": "2.0.0-beta.2",
|
||||||
"body-parser": "^1.19.0",
|
"@mdx-js/react": "^1.6.21",
|
||||||
"connect": "^3.7.0",
|
"@svgr/webpack": "^5.5.0",
|
||||||
"crypto-js": "^4.0.0",
|
"clsx": "^1.1.1",
|
||||||
"highlight.js": "^11.0.0",
|
"file-loader": "^6.2.0",
|
||||||
"js-yaml": "^4.1.0",
|
"prism-react-renderer": "^1.2.1",
|
||||||
"npm-run-all": "^4.1.5",
|
"react": "^17.0.1",
|
||||||
"prismjs": "^1.23.0",
|
"react-dom": "^17.0.1",
|
||||||
"register-service-worker": "^1.6.2",
|
"url-loader": "^4.1.1"
|
||||||
"remedial": "^1.0.8",
|
|
||||||
"serve-static": "^1.14.1",
|
|
||||||
"v-jsoneditor": "^1.4.2",
|
|
||||||
"v-tooltip": "^2.1.3",
|
|
||||||
"vue": "^2.6.10",
|
|
||||||
"vue-cli-plugin-yaml": "^1.0.2",
|
|
||||||
"vue-js-modal": "^2.0.0-rc.6",
|
|
||||||
"vue-material-tabs": "^0.0.7",
|
|
||||||
"vue-prism-editor": "^1.2.2",
|
|
||||||
"vue-router": "^3.0.3",
|
|
||||||
"vue-select": "^3.11.2",
|
|
||||||
"vue-toasted": "^1.1.28"
|
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"browserslist": {
|
||||||
"@vue/cli-plugin-babel": "^4.5.12",
|
"production": [
|
||||||
"@vue/cli-plugin-eslint": "^4.5.12",
|
">0.5%",
|
||||||
"@vue/cli-plugin-pwa": "^4.5.12",
|
"not dead",
|
||||||
"@vue/cli-service": "^4.5.12",
|
"not op_mini all"
|
||||||
"@vue/eslint-config-standard": "^4.0.0",
|
|
||||||
"babel-eslint": "^10.0.1",
|
|
||||||
"eslint": "^7.24.0",
|
|
||||||
"eslint-config-airbnb": "^18.0.1",
|
|
||||||
"eslint-plugin-vue": "^7.9.0",
|
|
||||||
"progress-bar-webpack-plugin": "^2.1.0",
|
|
||||||
"sass": "^1.18.0",
|
|
||||||
"sass-loader": "^7.1.0",
|
|
||||||
"vue-svg-loader": "^0.16.0",
|
|
||||||
"vue-template-compiler": "^2.6.10",
|
|
||||||
"webpack-build-notifier": "^2.3.0"
|
|
||||||
},
|
|
||||||
"gitHooks": {
|
|
||||||
"pre-commit": "yarn lint"
|
|
||||||
},
|
|
||||||
"eslintConfig": {
|
|
||||||
"root": true,
|
|
||||||
"env": {
|
|
||||||
"node": true
|
|
||||||
},
|
|
||||||
"extends": [
|
|
||||||
"plugin:vue/essential",
|
|
||||||
"@vue/standard",
|
|
||||||
"airbnb-base"
|
|
||||||
],
|
],
|
||||||
"rules": {
|
"development": [
|
||||||
"import/no-unresolved": "off",
|
"last 1 chrome version",
|
||||||
"arrow-parens": 0,
|
"last 1 firefox version",
|
||||||
"no-else-return": 0
|
"last 1 safari version"
|
||||||
},
|
]
|
||||||
"parserOptions": {
|
}
|
||||||
"parser": "babel-eslint"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"postcss": {
|
|
||||||
"plugins": {
|
|
||||||
"autoprefixer": {}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"browserslist": [
|
|
||||||
"> 1%",
|
|
||||||
"last 2 versions"
|
|
||||||
]
|
|
||||||
}
|
}
|
@ -1,33 +0,0 @@
|
|||||||
---
|
|
||||||
pageInfo:
|
|
||||||
title: Dashy
|
|
||||||
navLinks:
|
|
||||||
- title: Home
|
|
||||||
path: /
|
|
||||||
- title: About
|
|
||||||
path: /about
|
|
||||||
- title: Source Code
|
|
||||||
path: https://github.com/Lissy93/dashy
|
|
||||||
appConfig:
|
|
||||||
theme: colorful
|
|
||||||
fontAwesomeKey: 0821c65656
|
|
||||||
sections:
|
|
||||||
- name: Getting Started
|
|
||||||
items:
|
|
||||||
- title: Source
|
|
||||||
description: Source code and documentation on GitHub
|
|
||||||
icon: fab fa-github
|
|
||||||
url: https://github.com/Lissy93/dashy
|
|
||||||
- title: Issues
|
|
||||||
description: View currently open issues, or raise a new one
|
|
||||||
icon: fas fa-bug
|
|
||||||
url: https://github.com/Lissy93/dashy/issues
|
|
||||||
- title: Demo 1
|
|
||||||
description: 'Live Demo #1'
|
|
||||||
icon: far fa-rocket
|
|
||||||
url: https://dashy-demo-1.netlify.app
|
|
||||||
- title: Demo 2
|
|
||||||
description: 'Live Demo #2'
|
|
||||||
icon: fad fa-planet-ringed
|
|
||||||
url: https://dashy-demo-2.netlify.app
|
|
||||||
|
|
@ -1,128 +0,0 @@
|
|||||||
<!doctype html>
|
|
||||||
<html>
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<title>Dashy</title>
|
|
||||||
<meta name="description" content="Welcome to Dashy">
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com">
|
|
||||||
<link href="https://fonts.googleapis.com/css2?family=Fredoka+One&display=swap" rel="stylesheet">
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<svg viewbox="0 0 100 20">
|
|
||||||
<defs>
|
|
||||||
<linearGradient id="gradient" x1="0" x2="0" y1="0" y2="1">
|
|
||||||
<stop offset="5%" stop-color="#00CCB4" />
|
|
||||||
<stop offset="95%" stop-color="#1186cf" />
|
|
||||||
</linearGradient>
|
|
||||||
<pattern id="wave" x="0" y="0" width="120" height="20" patternUnits="userSpaceOnUse">
|
|
||||||
<path id="wavePath" d="M-40 9 Q-30 7 -20 9 T0 9 T20 9 T40 9 T60 9 T80 9 T100 9 T120 9 V20 H-40z"
|
|
||||||
mask="url(#mask)" fill="url(#gradient)">
|
|
||||||
<animateTransform attributeName="transform" begin="0s" dur="3s" type="translate" from="0,0" to="40,0"
|
|
||||||
repeatCount="indefinite" />
|
|
||||||
</path>
|
|
||||||
</pattern>
|
|
||||||
</defs>
|
|
||||||
<text text-anchor="middle" x="50" y="15" font-size="17" fill="url(#wave)" fill-opacity="0.8">Dashy</text>
|
|
||||||
<text text-anchor="middle" x="50" y="15" font-size="17" fill="url(#gradient)" fill-opacity="0.5">Dashy</text>
|
|
||||||
</svg>
|
|
||||||
<div>
|
|
||||||
<h2>Initializing</h2>
|
|
||||||
<span class="dots-cont">
|
|
||||||
<span class="dot dot-1"></span>
|
|
||||||
<span class="dot dot-2"></span>
|
|
||||||
<span class="dot dot-3"></span>
|
|
||||||
<span class="dot dot-4"></span>
|
|
||||||
</span>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style lang="css">
|
|
||||||
body,
|
|
||||||
html {
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
height: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
body {
|
|
||||||
background: #141b33;
|
|
||||||
display: flex;
|
|
||||||
flex-direction: column;
|
|
||||||
justify-content: center;
|
|
||||||
align-items: center;
|
|
||||||
}
|
|
||||||
|
|
||||||
svg {
|
|
||||||
font-family: 'Fredoka One', 'Cabin Condensed', 'Courier New', Courier, monospace;
|
|
||||||
font-weight: bold;
|
|
||||||
max-width: 80%;
|
|
||||||
height: auto;
|
|
||||||
}
|
|
||||||
|
|
||||||
h2 {
|
|
||||||
color: #fff;
|
|
||||||
font-family: 'Courier New', Courier, monospace;
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dots-cont {
|
|
||||||
display: inline;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dot {
|
|
||||||
width: 4px;
|
|
||||||
height: 4px;
|
|
||||||
background: #fff;
|
|
||||||
display: inline-block;
|
|
||||||
border-radius: 35%;
|
|
||||||
right: 0px;
|
|
||||||
bottom: 0px;
|
|
||||||
margin: 0px 2.5px;
|
|
||||||
position: relative;
|
|
||||||
animation: jump 1s infinite;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dots-cont .dot-1 {
|
|
||||||
-webkit-animation-delay: 100ms;
|
|
||||||
animation-delay: 100ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dots-cont .dot-2 {
|
|
||||||
-webkit-animation-delay: 200ms;
|
|
||||||
animation-delay: 200ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dots-cont .dot-3 {
|
|
||||||
-webkit-animation-delay: 300ms;
|
|
||||||
animation-delay: 300ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
.dots-cont .dot-4 {
|
|
||||||
-webkit-animation-delay: 400ms;
|
|
||||||
animation-delay: 400ms;
|
|
||||||
}
|
|
||||||
|
|
||||||
@keyframes jump {
|
|
||||||
0% {
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
|
|
||||||
20% {
|
|
||||||
bottom: 5px;
|
|
||||||
}
|
|
||||||
|
|
||||||
40% {
|
|
||||||
bottom: 0px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</style>
|
|
||||||
|
|
||||||
<script>
|
|
||||||
setTimeout(() => { location.reload(); }, 10000);
|
|
||||||
</script>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
Before Width: | Height: | Size: 15 KiB |
@ -1,25 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<!-- Do not modify this file directly -->
|
|
||||||
|
|
||||||
<html lang="en">
|
|
||||||
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
|
||||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
|
||||||
<link rel="icon" type="image/png" sizes="64x64" href="/web-icons/favicon-64x64.png">
|
|
||||||
<link rel="icon" type="image/png" sizes="32x32" href="/web-icons/favicon-32x32.png">
|
|
||||||
<title>Dashy</title>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<!-- Devices without JS enabled -->
|
|
||||||
<noscript>
|
|
||||||
<strong>Sorry, JavaScript is required to run this app 😥</strong>
|
|
||||||
</noscript>
|
|
||||||
|
|
||||||
<!-- built files will be auto injected -->
|
|
||||||
<div id="app"></div>
|
|
||||||
</body>
|
|
||||||
|
|
||||||
</html>
|
|
7
public/item-icons/.gitignore
vendored
@ -1,7 +0,0 @@
|
|||||||
# Place any custom icons used by your instance of Dashy here.
|
|
||||||
# For more info, see Icon docs at: https://git.io/JZwc5
|
|
||||||
|
|
||||||
# Ignore everything in this directory
|
|
||||||
*
|
|
||||||
# Except this file
|
|
||||||
!.gitignore
|
|
@ -1,556 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "Dashy Web",
|
|
||||||
"short_name": "Dashy",
|
|
||||||
"description": "A Dashboard for your Homelab",
|
|
||||||
"scope": "/",
|
|
||||||
"start_url": "./index.html",
|
|
||||||
"display": "standalone",
|
|
||||||
"background_color": "#0b1021",
|
|
||||||
"theme_color": "#4DBA87",
|
|
||||||
"lang": "en-GB",
|
|
||||||
"orientation": "portrait-primary",
|
|
||||||
"icons": [
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SmallTile.scale-100.png",
|
|
||||||
"sizes": "71x71"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SmallTile.scale-125.png",
|
|
||||||
"sizes": "89x89"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SmallTile.scale-150.png",
|
|
||||||
"sizes": "107x107"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SmallTile.scale-200.png",
|
|
||||||
"sizes": "142x142"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SmallTile.scale-400.png",
|
|
||||||
"sizes": "284x284"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square150x150Logo.scale-100.png",
|
|
||||||
"sizes": "150x150"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square150x150Logo.scale-125.png",
|
|
||||||
"sizes": "188x188"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square150x150Logo.scale-150.png",
|
|
||||||
"sizes": "225x225"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square150x150Logo.scale-200.png",
|
|
||||||
"sizes": "300x300"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square150x150Logo.scale-400.png",
|
|
||||||
"sizes": "600x600"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Wide310x150Logo.scale-100.png",
|
|
||||||
"sizes": "310x150"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Wide310x150Logo.scale-125.png",
|
|
||||||
"sizes": "388x188"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Wide310x150Logo.scale-150.png",
|
|
||||||
"sizes": "465x225"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Wide310x150Logo.scale-200.png",
|
|
||||||
"sizes": "620x300"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Wide310x150Logo.scale-400.png",
|
|
||||||
"sizes": "1240x600"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/LargeTile.scale-100.png",
|
|
||||||
"sizes": "310x310"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/LargeTile.scale-125.png",
|
|
||||||
"sizes": "388x388"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/LargeTile.scale-150.png",
|
|
||||||
"sizes": "465x465"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/LargeTile.scale-200.png",
|
|
||||||
"sizes": "620x620"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/LargeTile.scale-400.png",
|
|
||||||
"sizes": "1240x1240"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.scale-100.png",
|
|
||||||
"sizes": "44x44"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.scale-125.png",
|
|
||||||
"sizes": "55x55"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.scale-150.png",
|
|
||||||
"sizes": "66x66"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.scale-200.png",
|
|
||||||
"sizes": "88x88"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.scale-400.png",
|
|
||||||
"sizes": "176x176"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/StoreLogo.scale-100.png",
|
|
||||||
"sizes": "50x50"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/StoreLogo.scale-125.png",
|
|
||||||
"sizes": "63x63"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/StoreLogo.scale-150.png",
|
|
||||||
"sizes": "75x75"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/StoreLogo.scale-200.png",
|
|
||||||
"sizes": "100x100"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/StoreLogo.scale-400.png",
|
|
||||||
"sizes": "200x200"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SplashScreen.scale-100.png",
|
|
||||||
"sizes": "620x300"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SplashScreen.scale-125.png",
|
|
||||||
"sizes": "775x375"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SplashScreen.scale-150.png",
|
|
||||||
"sizes": "930x450"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SplashScreen.scale-200.png",
|
|
||||||
"sizes": "1240x600"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/SplashScreen.scale-400.png",
|
|
||||||
"sizes": "2480x1200"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-16.png",
|
|
||||||
"sizes": "16x16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-20.png",
|
|
||||||
"sizes": "20x20"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-24.png",
|
|
||||||
"sizes": "24x24"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-30.png",
|
|
||||||
"sizes": "30x30"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-32.png",
|
|
||||||
"sizes": "32x32"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-36.png",
|
|
||||||
"sizes": "36x36"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-40.png",
|
|
||||||
"sizes": "40x40"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-44.png",
|
|
||||||
"sizes": "44x44"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-60.png",
|
|
||||||
"sizes": "60x60"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-64.png",
|
|
||||||
"sizes": "64x64"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-72.png",
|
|
||||||
"sizes": "72x72"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-80.png",
|
|
||||||
"sizes": "80x80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-96.png",
|
|
||||||
"sizes": "96x96"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.targetsize-256.png",
|
|
||||||
"sizes": "256x256"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-16.png",
|
|
||||||
"sizes": "16x16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-20.png",
|
|
||||||
"sizes": "20x20"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-24.png",
|
|
||||||
"sizes": "24x24"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-30.png",
|
|
||||||
"sizes": "30x30"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-32.png",
|
|
||||||
"sizes": "32x32"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-36.png",
|
|
||||||
"sizes": "36x36"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-40.png",
|
|
||||||
"sizes": "40x40"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-44.png",
|
|
||||||
"sizes": "44x44"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-60.png",
|
|
||||||
"sizes": "60x60"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-64.png",
|
|
||||||
"sizes": "64x64"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-72.png",
|
|
||||||
"sizes": "72x72"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-80.png",
|
|
||||||
"sizes": "80x80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-96.png",
|
|
||||||
"sizes": "96x96"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-unplated_targetsize-256.png",
|
|
||||||
"sizes": "256x256"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-16.png",
|
|
||||||
"sizes": "16x16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-20.png",
|
|
||||||
"sizes": "20x20"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-24.png",
|
|
||||||
"sizes": "24x24"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-30.png",
|
|
||||||
"sizes": "30x30"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-32.png",
|
|
||||||
"sizes": "32x32"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-36.png",
|
|
||||||
"sizes": "36x36"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-40.png",
|
|
||||||
"sizes": "40x40"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-44.png",
|
|
||||||
"sizes": "44x44"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-60.png",
|
|
||||||
"sizes": "60x60"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-64.png",
|
|
||||||
"sizes": "64x64"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-72.png",
|
|
||||||
"sizes": "72x72"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-80.png",
|
|
||||||
"sizes": "80x80"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-96.png",
|
|
||||||
"sizes": "96x96"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows10/Square44x44Logo.altform-lightunplated_targetsize-256.png",
|
|
||||||
"sizes": "256x256"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-smallsquare-24-24.png",
|
|
||||||
"sizes": "24x24"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-smallsquare-30-30.png",
|
|
||||||
"sizes": "30x30"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-smallsquare-42-42.png",
|
|
||||||
"sizes": "42x42"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-smallsquare-54-54.png",
|
|
||||||
"sizes": "54x54"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-splashscreen-1116-540.png",
|
|
||||||
"sizes": "1116x540"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-splashscreen-868-420.png",
|
|
||||||
"sizes": "868x420"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-splashscreen-620-300.png",
|
|
||||||
"sizes": "620x300"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-squarelogo-270-270.png",
|
|
||||||
"sizes": "270x270"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-squarelogo-210-210.png",
|
|
||||||
"sizes": "210x210"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-squarelogo-150-150.png",
|
|
||||||
"sizes": "150x150"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-squarelogo-120-120.png",
|
|
||||||
"sizes": "120x120"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-storelogo-90-90.png",
|
|
||||||
"sizes": "90x90"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-storelogo-70-70.png",
|
|
||||||
"sizes": "70x70"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windows-storelogo-50-50.png",
|
|
||||||
"sizes": "50x50"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-appicon-106-106.png",
|
|
||||||
"sizes": "106x106"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-appicon-62-62.png",
|
|
||||||
"sizes": "62x62"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-appicon-44-44.png",
|
|
||||||
"sizes": "44x44"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-mediumtile-360-360.png",
|
|
||||||
"sizes": "360x360"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-mediumtile-210-210.png",
|
|
||||||
"sizes": "210x210"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-mediumtile-150-150.png",
|
|
||||||
"sizes": "150x150"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-smalltile-170-170.png",
|
|
||||||
"sizes": "170x170"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-smalltile-99-99.png",
|
|
||||||
"sizes": "99x99"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-smalltile-71-71.png",
|
|
||||||
"sizes": "71x71"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-storelogo-120-120.png",
|
|
||||||
"sizes": "120x120"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-storelogo-70-70.png",
|
|
||||||
"sizes": "70x70"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/windows/windowsphone-storelogo-50-50.png",
|
|
||||||
"sizes": "50x50"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/msteams/msteams-192-192.png",
|
|
||||||
"sizes": "192x192"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/msteams/msteams-silhouette-32-32.png",
|
|
||||||
"sizes": "32x32"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-512-512.png",
|
|
||||||
"sizes": "512x512"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-192-192.png",
|
|
||||||
"sizes": "192x192"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-144-144.png",
|
|
||||||
"sizes": "144x144"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-96-96.png",
|
|
||||||
"sizes": "96x96"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-72-72.png",
|
|
||||||
"sizes": "72x72"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/android/android-launchericon-48-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/chrome/chrome-extensionmanagementpage-48-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/chrome/chrome-favicon-16-16.png",
|
|
||||||
"sizes": "16x16"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/chrome/chrome-installprocess-128-128.png",
|
|
||||||
"sizes": "128x128"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-marketplace-512-512.png",
|
|
||||||
"sizes": "512x512"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-marketplace-128-128.png",
|
|
||||||
"sizes": "128x128"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-256-256.png",
|
|
||||||
"sizes": "256x256"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-128-128.png",
|
|
||||||
"sizes": "128x128"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-90-90.png",
|
|
||||||
"sizes": "90x90"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-64-64.png",
|
|
||||||
"sizes": "64x64"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-48-48.png",
|
|
||||||
"sizes": "48x48"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-32-32.png",
|
|
||||||
"sizes": "32x32"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/firefox/firefox-general-16-16.png",
|
|
||||||
"sizes": "16x16"
|
|
||||||
}
|
|
||||||
],
|
|
||||||
"screenshots": [
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-1.png",
|
|
||||||
"sizes": "1523x1347",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Dashy example homelab with Callisto theme"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-2.png",
|
|
||||||
"sizes": "1264x861",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Example, Networking services with Minimal Dark theme and a Horizontal layout"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-3.png",
|
|
||||||
"sizes": "1303x864",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Dashy example homelab with Material theme and auto-fetched favicons"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-4.png",
|
|
||||||
"sizes": "1273x865",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Dashy CFT Toolbox using Matrix theme"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-5.png",
|
|
||||||
"sizes": "1146x851",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Dashy as a Bookmark Manager, with Dracula theme and Font-Awesome icons"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"src": "./web-icons/screenshots/dashy-scrsht-6.png",
|
|
||||||
"sizes": "1147x872",
|
|
||||||
"type": "image/png",
|
|
||||||
"label": "Dashy example homelab with Nord theme"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -1,2 +0,0 @@
|
|||||||
User-agent: *
|
|
||||||
Disallow:
|
|
Before Width: | Height: | Size: 58 KiB |
Before Width: | Height: | Size: 2.0 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 102 KiB |
92
server.js
@ -1,92 +0,0 @@
|
|||||||
/**
|
|
||||||
* Note: The app must first be built (yarn build) before this script is run
|
|
||||||
* This is the main entry point for the application, a simple server that
|
|
||||||
* runs some checks, and then serves up the app from the ./dist directory
|
|
||||||
* Also includes some routes for status checks/ ping and config saving
|
|
||||||
* */
|
|
||||||
|
|
||||||
/* Include required node dependencies */
|
|
||||||
const serveStatic = require('serve-static');
|
|
||||||
const connect = require('connect');
|
|
||||||
const util = require('util');
|
|
||||||
const dns = require('dns');
|
|
||||||
const os = require('os');
|
|
||||||
const bodyParser = require('body-parser');
|
|
||||||
|
|
||||||
/* Include helper functions and route handlers */
|
|
||||||
const pingUrl = require('./services/ping'); // Used by the status check feature, to ping services
|
|
||||||
const saveConfig = require('./services/save-config'); // Saves users new conf.yml to file-system
|
|
||||||
const printMessage = require('./services/print-message'); // Function to print welcome msg on start
|
|
||||||
const rebuild = require('./services/rebuild-app'); // A script to programmatically trigger a build
|
|
||||||
require('./src/utils/ConfigValidator'); // Include and kicks off the config file validation script
|
|
||||||
|
|
||||||
/* Checks if app is running within a container, from env var */
|
|
||||||
const isDocker = !!process.env.IS_DOCKER;
|
|
||||||
|
|
||||||
/* Checks env var for port. If undefined, will use Port 80 for Docker, or 4000 for metal */
|
|
||||||
const port = process.env.PORT || (isDocker ? 80 : 4000);
|
|
||||||
|
|
||||||
/* Attempts to get the users local IP, used as part of welcome message */
|
|
||||||
const getLocalIp = () => {
|
|
||||||
const dnsLookup = util.promisify(dns.lookup);
|
|
||||||
return dnsLookup(os.hostname());
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Gets the users local IP and port, then calls to print welcome message */
|
|
||||||
const printWelcomeMessage = () => {
|
|
||||||
getLocalIp().then(({ address }) => {
|
|
||||||
const ip = address || 'localhost';
|
|
||||||
console.log(printMessage(ip, port, isDocker)); // eslint-disable-line no-console
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Just console.warns an error */
|
|
||||||
const printWarning = (msg, error) => {
|
|
||||||
console.warn(`\x1b[103m\x1b[34m${msg}\x1b[0m\n`, error || ''); // eslint-disable-line no-console
|
|
||||||
};
|
|
||||||
|
|
||||||
/* A middleware function for Connect, that filters requests based on method type */
|
|
||||||
const method = (m, mw) => (req, res, next) => (req.method === m ? mw(req, res, next) : next());
|
|
||||||
|
|
||||||
try {
|
|
||||||
connect()
|
|
||||||
.use(bodyParser.json())
|
|
||||||
// Serves up the main built application to the root
|
|
||||||
.use(serveStatic(`${__dirname}/dist`))
|
|
||||||
// During build, a custom page will be served before the app is available
|
|
||||||
.use(serveStatic(`${__dirname}/public`, { index: 'default.html' }))
|
|
||||||
// This root returns the status of a given service - used for uptime monitoring
|
|
||||||
.use('/ping', (req, res) => {
|
|
||||||
try {
|
|
||||||
pingUrl(req.url, async (results) => {
|
|
||||||
await res.end(results);
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
printWarning(`Error running ping check for ${req.url}\n`, e);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
// POST Endpoint used to save config, by writing conf.yml to disk
|
|
||||||
.use('/config-manager/save', method('POST', (req, res) => {
|
|
||||||
try {
|
|
||||||
saveConfig(req.body, (results) => {
|
|
||||||
res.end(results);
|
|
||||||
});
|
|
||||||
} catch (e) {
|
|
||||||
res.end(JSON.stringify({ success: false, message: e }));
|
|
||||||
}
|
|
||||||
}))
|
|
||||||
// GET endpoint to trigger a build, and respond with success status and output
|
|
||||||
.use('/config-manager/rebuild', (req, res) => {
|
|
||||||
rebuild().then((response) => {
|
|
||||||
res.end(JSON.stringify(response));
|
|
||||||
}).catch((response) => {
|
|
||||||
res.end(JSON.stringify(response));
|
|
||||||
});
|
|
||||||
})
|
|
||||||
// Finally, initialize the server then print welcome message
|
|
||||||
.listen(port, () => {
|
|
||||||
try { printWelcomeMessage(); } catch (e) { printWarning('Dashy is Starting...'); }
|
|
||||||
});
|
|
||||||
} catch (error) {
|
|
||||||
printWarning('Sorry, a critical error occurred ', error);
|
|
||||||
}
|
|
@ -1,37 +0,0 @@
|
|||||||
/**
|
|
||||||
* An endpoint for confirming that the application is up and running
|
|
||||||
* Used for better Docker healthcheck results
|
|
||||||
* Note that exiting with code 1 indicates failure, and 0 is success
|
|
||||||
*/
|
|
||||||
|
|
||||||
const http = require('http');
|
|
||||||
|
|
||||||
/* Location of the server to test */
|
|
||||||
const port = process.env.PORT || !!process.env.IS_DOCKER ? 80 : 4000;
|
|
||||||
const host = process.env.HOST || '0.0.0.0';
|
|
||||||
const timeout = 2000;
|
|
||||||
|
|
||||||
const requestOptions = { host, port, timeout };
|
|
||||||
|
|
||||||
const startTime = new Date();
|
|
||||||
|
|
||||||
console.log(`[${startTime}] Running health check...`);
|
|
||||||
|
|
||||||
/* Starts quick HTTP server, attempts to send GET to app, then exists with appropriate exit code */
|
|
||||||
const healthCheck = http.request(requestOptions, (response) => {
|
|
||||||
const totalTime = (new Date() - startTime) / 1000;
|
|
||||||
const status = response.statusCode;
|
|
||||||
const color = status === 200 ? '\x1b[32m' : '\x1b[31m';
|
|
||||||
const message = `${color}Status: ${status}\nRequest took ${totalTime} seconds\n\x1b[0m---`;
|
|
||||||
console.log(message);
|
|
||||||
if (status == 200) { process.exit(0); }
|
|
||||||
else { process.exit(1); }
|
|
||||||
});
|
|
||||||
|
|
||||||
/* If the server is not running, then print the error code, and exit with 1 */
|
|
||||||
healthCheck.on('error', (err) => {
|
|
||||||
console.error(`\x1b[31mHealthceck Failed, Error: ${'\033[4m'}${err.code}\x1b[0m`);
|
|
||||||
process.exit(1);
|
|
||||||
});
|
|
||||||
|
|
||||||
healthCheck.end();
|
|
@ -1,66 +0,0 @@
|
|||||||
/**
|
|
||||||
* This file contains the Node.js code, used for the optional status check feature
|
|
||||||
* It accepts a single url parameter, and will make an empty GET request to that
|
|
||||||
* endpoint, and then resolve the response status code, time taken, and short message
|
|
||||||
*/
|
|
||||||
const axios = require('axios').default;
|
|
||||||
|
|
||||||
/* Determines if successful from the HTTP response code */
|
|
||||||
const getResponseType = (code) => {
|
|
||||||
if (Number.isNaN(code)) return false;
|
|
||||||
const numericCode = parseInt(code, 10);
|
|
||||||
return (numericCode >= 200 && numericCode <= 302);
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Makes human-readable response text for successful check */
|
|
||||||
const makeMessageText = (data) => `${data.successStatus ? '✅' : '⚠️'} `
|
|
||||||
+ `${data.serverName || 'Server'} responded with `
|
|
||||||
+ `${data.statusCode} - ${data.statusText}. `
|
|
||||||
+ `\n⏱️Took ${data.timeTaken} ms`;
|
|
||||||
|
|
||||||
/* Makes human-readable response text for failed check */
|
|
||||||
const makeErrorMessage = (data) => `❌ Service Unavailable: ${data.hostname || 'Server'} `
|
|
||||||
+ `resulted in ${data.code || 'a fatal error'} ${data.errno ? `(${data.errno})` : ''}`;
|
|
||||||
|
|
||||||
const makeErrorMessage2 = (data) => '❌ Service Error - '
|
|
||||||
+ `${data.status} - ${data.statusText}`;
|
|
||||||
|
|
||||||
/* Kicks of a HTTP request, then formats and renders results */
|
|
||||||
const makeRequest = (url, render) => {
|
|
||||||
const startTime = new Date();
|
|
||||||
axios.get(url)
|
|
||||||
.then((response) => {
|
|
||||||
const statusCode = response.status;
|
|
||||||
const { statusText } = response;
|
|
||||||
const successStatus = getResponseType(statusCode);
|
|
||||||
const serverName = response.request.socket.servername;
|
|
||||||
const timeTaken = (new Date() - startTime);
|
|
||||||
const results = {
|
|
||||||
statusCode, statusText, serverName, successStatus, timeTaken,
|
|
||||||
};
|
|
||||||
const messageText = makeMessageText(results);
|
|
||||||
results.message = messageText;
|
|
||||||
return results;
|
|
||||||
})
|
|
||||||
.catch((error) => {
|
|
||||||
render(JSON.stringify({
|
|
||||||
successStatus: false,
|
|
||||||
message: error.response ? makeErrorMessage2(error.response) : makeErrorMessage(error),
|
|
||||||
}));
|
|
||||||
}).then((results) => {
|
|
||||||
render(JSON.stringify(results));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Main function, will check if a URL present, and call function */
|
|
||||||
module.exports = (params, render) => {
|
|
||||||
if (!params || !params.includes('=')) {
|
|
||||||
render(JSON.stringify({
|
|
||||||
success: false,
|
|
||||||
message: '❌ Malformed URL',
|
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
const url = params.split('=')[1];
|
|
||||||
makeRequest(url, render);
|
|
||||||
}
|
|
||||||
};
|
|
@ -1,55 +0,0 @@
|
|||||||
/**
|
|
||||||
* Returns a welcome message, to be printed to the user when they start the app
|
|
||||||
* Contains essential info about restarting and managing the container or service
|
|
||||||
* @param String ip: The users local IP address or hostname
|
|
||||||
* @param Integer port: the port number that the app is running at
|
|
||||||
* @param Boolean isDocker: whether or not the app is being run within a container
|
|
||||||
* @returns A string formatted for the terminal
|
|
||||||
*/
|
|
||||||
module.exports = (ip, port, isDocker) => {
|
|
||||||
let msg = ''; // To return
|
|
||||||
const chars = { // Color codes used in the message
|
|
||||||
RESET: '\x1b[0m',
|
|
||||||
CYAN: '\x1b[36m',
|
|
||||||
GREEN: '\x1b[32m',
|
|
||||||
BLUE: '\x1b[34m',
|
|
||||||
BRIGHT: '\x1b[1m',
|
|
||||||
BR: '\n',
|
|
||||||
};
|
|
||||||
// Functions to insert string of set length of characters
|
|
||||||
const printChars = (count, char) => new Array(count).fill(char).join('');
|
|
||||||
const stars = (count) => printChars(count, '*');
|
|
||||||
const line = (count) => printChars(count, '━');
|
|
||||||
const blanks = (count) => printChars(count, ' ');
|
|
||||||
if (isDocker) {
|
|
||||||
// Prepare message for Docker users
|
|
||||||
const containerId = process.env.HOSTNAME || undefined;
|
|
||||||
msg = `${chars.BLUE}${stars(91)}${chars.BR}${chars.RESET}`
|
|
||||||
+ `${chars.CYAN}Welcome to Dashy! 🚀${chars.RESET}${chars.BR}`
|
|
||||||
+ `${chars.GREEN}Your new dashboard is now up and running `
|
|
||||||
+ `${containerId ? `in container ID ${containerId}` : 'with Docker'}${chars.BR}`
|
|
||||||
+ `${chars.GREEN}After updating your config file, run `
|
|
||||||
+ `'${chars.BRIGHT}docker exec -it ${containerId || '[container-id]'} yarn build`
|
|
||||||
+ `${chars.RESET}${chars.GREEN}' to rebuild${chars.BR}`
|
|
||||||
+ `${chars.BLUE}${stars(91)}${chars.BR}${chars.RESET}`;
|
|
||||||
} else {
|
|
||||||
// Prepare message for users running app on bare metal
|
|
||||||
msg = `${chars.GREEN}┏${line(75)}┓${chars.BR}`
|
|
||||||
+ `┃ ${chars.CYAN}Welcome to Dashy! 🚀${blanks(55)}${chars.GREEN}┃${chars.BR}`
|
|
||||||
+ `┃ ${chars.CYAN}Your new dashboard is now up and running at ${chars.BRIGHT}`
|
|
||||||
+ `http://${ip}:${port}${chars.RESET}${blanks(18 - ip.length)}${chars.GREEN}┃${chars.BR}`
|
|
||||||
+ `┃ ${chars.CYAN}After updating your config file, run '${chars.BRIGHT}yarn build`
|
|
||||||
+ `${chars.RESET}${chars.CYAN}' to rebuild the app${blanks(6)}${chars.GREEN}┃${chars.BR}`
|
|
||||||
+ `┗${line(75)}┛${chars.BR}${chars.BR}${chars.RESET}`;
|
|
||||||
}
|
|
||||||
// Make some sexy ascii art ;)
|
|
||||||
const ascii = `\x1b[40m${chars.CYAN}\n\n`
|
|
||||||
+ ' ██████╗ █████╗ ███████╗██╗ ██╗██╗ ██╗\n'
|
|
||||||
+ ' ██╔══██╗██╔══██╗██╔════╝██║ ██║╚██╗ ██╔╝\n'
|
|
||||||
+ ' ██║ ██║███████║███████╗███████║ ╚████╔╝\n'
|
|
||||||
+ ' ██║ ██║██╔══██║╚════██║██╔══██║ ╚██╔╝\n'
|
|
||||||
+ ' ██████╔╝██║ ██║███████║██║ ██║ ██║\n'
|
|
||||||
+ ` ╚═════╝ ╚═╝ ╚═╝╚══════╝╚═╝ ╚═╝ ╚═╝\n${chars.RESET}\n`;
|
|
||||||
|
|
||||||
return ascii + msg;
|
|
||||||
};
|
|
@ -1,31 +0,0 @@
|
|||||||
/**
|
|
||||||
* This script programmatically triggers a production build
|
|
||||||
* and responds with the status, message and full output
|
|
||||||
*/
|
|
||||||
const { exec } = require('child_process');
|
|
||||||
|
|
||||||
module.exports = () => new Promise((resolve, reject) => {
|
|
||||||
const buildProcess = exec('npm run build');
|
|
||||||
|
|
||||||
let output = '';
|
|
||||||
|
|
||||||
buildProcess.stdout.on('data', (data) => {
|
|
||||||
process.stdout.write(data);
|
|
||||||
output += data;
|
|
||||||
});
|
|
||||||
|
|
||||||
buildProcess.on('error', (error) => {
|
|
||||||
reject(Error({
|
|
||||||
success: false,
|
|
||||||
error,
|
|
||||||
output,
|
|
||||||
}));
|
|
||||||
});
|
|
||||||
|
|
||||||
buildProcess.on('exit', (response) => {
|
|
||||||
const success = response === 0;
|
|
||||||
const message = `Build process exited with ${response}: `
|
|
||||||
+ `${success ? 'Success' : 'Possible Error'}`;
|
|
||||||
resolve({ success, message, output });
|
|
||||||
});
|
|
||||||
});
|
|
@ -1,52 +0,0 @@
|
|||||||
/**
|
|
||||||
* This file exports a function, used by the write config endpoint.
|
|
||||||
* It will make a backup of the users conf.yml file
|
|
||||||
* and then write their new config into the main conf.yml file.
|
|
||||||
* Finally, it will call a function with the status message
|
|
||||||
*/
|
|
||||||
const fsPromises = require('fs').promises;
|
|
||||||
|
|
||||||
module.exports = async (newConfig, render) => {
|
|
||||||
// Define constants for the config file
|
|
||||||
const settings = {
|
|
||||||
defaultLocation: './public/',
|
|
||||||
defaultFile: 'conf.yml',
|
|
||||||
filename: 'conf',
|
|
||||||
backupDenominator: '.backup.yml',
|
|
||||||
};
|
|
||||||
|
|
||||||
// Make the full file name and path to save the backup config file
|
|
||||||
const backupFilePath = `${settings.defaultLocation}${settings.filename}-`
|
|
||||||
+ `${Math.round(new Date() / 1000)}${settings.backupDenominator}`;
|
|
||||||
|
|
||||||
// The path where the main conf.yml should be read and saved to
|
|
||||||
const defaultFilePath = settings.defaultLocation + settings.defaultFile;
|
|
||||||
|
|
||||||
// Returns a string confirming successful job
|
|
||||||
const getSuccessMessage = () => `Successfully backed up ${settings.defaultFile} to`
|
|
||||||
+ ` ${backupFilePath}, and updated the contents of ${defaultFilePath}`;
|
|
||||||
|
|
||||||
// Encoding options for writing to conf file
|
|
||||||
const writeFileOptions = { encoding: 'utf8' };
|
|
||||||
|
|
||||||
// Prepare the response returned by the API
|
|
||||||
const getRenderMessage = (success, errorMsg) => JSON.stringify({
|
|
||||||
success,
|
|
||||||
message: !success ? errorMsg : getSuccessMessage(),
|
|
||||||
});
|
|
||||||
|
|
||||||
// Makes a backup of the existing config file
|
|
||||||
await fsPromises.copyFile(defaultFilePath, backupFilePath)
|
|
||||||
.catch((error) => {
|
|
||||||
render(getRenderMessage(false, `Unable to backup conf.yml: ${error}`));
|
|
||||||
});
|
|
||||||
|
|
||||||
// Writes the new content to the conf.yml file
|
|
||||||
await fsPromises.writeFile(defaultFilePath, newConfig.config.toString(), writeFileOptions)
|
|
||||||
.catch((error) => {
|
|
||||||
render(getRenderMessage(false, `Unable to write changes to conf.yml: ${error}`));
|
|
||||||
});
|
|
||||||
|
|
||||||
// If successful, then render hasn't yet been called- call it
|
|
||||||
await render(getRenderMessage(true));
|
|
||||||
};
|
|
26
sidebars.js
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
/**
|
||||||
|
* Creating a sidebar enables you to:
|
||||||
|
- create an ordered group of docs
|
||||||
|
- render a sidebar for each doc of that group
|
||||||
|
- provide next/previous navigation
|
||||||
|
|
||||||
|
The sidebars can be generated from the filesystem, or explicitly defined here.
|
||||||
|
|
||||||
|
Create as many sidebars as you want.
|
||||||
|
*/
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
// By default, Docusaurus generates a sidebar from the docs folder structure
|
||||||
|
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
|
||||||
|
|
||||||
|
// But you can create a sidebar manually
|
||||||
|
/*
|
||||||
|
tutorialSidebar: [
|
||||||
|
{
|
||||||
|
type: 'category',
|
||||||
|
label: 'Tutorial',
|
||||||
|
items: ['hello'],
|
||||||
|
},
|
||||||
|
],
|
||||||
|
*/
|
||||||
|
};
|
95
src/App.vue
@ -1,95 +0,0 @@
|
|||||||
<template>
|
|
||||||
<div id="dashy">
|
|
||||||
<LoadingScreen :isLoading="isLoading" v-if="shouldShowSplash()" />
|
|
||||||
<Header :pageInfo="pageInfo" v-if="!shouldHidePageComponents()" />
|
|
||||||
<router-view />
|
|
||||||
<Footer v-if="showFooter && !shouldHidePageComponents()" :text="getFooterText()" />
|
|
||||||
</div>
|
|
||||||
</template>
|
|
||||||
<script>
|
|
||||||
|
|
||||||
import Header from '@/components/PageStrcture/Header.vue';
|
|
||||||
import Footer from '@/components/PageStrcture/Footer.vue';
|
|
||||||
import LoadingScreen from '@/components/PageStrcture/LoadingScreen.vue';
|
|
||||||
import Defaults, { localStorageKeys, splashScreenTime } from '@/utils/defaults';
|
|
||||||
import { config, appConfig, pageInfo } from '@/utils/ConfigAccumalator';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
name: 'app',
|
|
||||||
components: {
|
|
||||||
Header,
|
|
||||||
Footer,
|
|
||||||
LoadingScreen,
|
|
||||||
},
|
|
||||||
provide: {
|
|
||||||
config,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
showFooter: Defaults.visibleComponents.footer,
|
|
||||||
isLoading: true,
|
|
||||||
appConfig,
|
|
||||||
pageInfo,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
methods: {
|
|
||||||
getFooterText() {
|
|
||||||
if (this.pageInfo && this.pageInfo.footerText) {
|
|
||||||
return this.pageInfo.footerText;
|
|
||||||
}
|
|
||||||
return '';
|
|
||||||
},
|
|
||||||
injectCustomStyles(usersCss) {
|
|
||||||
const style = document.createElement('style');
|
|
||||||
style.textContent = usersCss;
|
|
||||||
document.head.append(style);
|
|
||||||
},
|
|
||||||
shouldShowSplash() {
|
|
||||||
return this.appConfig.showSplashScreen || !localStorage[localStorageKeys.HIDE_WELCOME_BANNER];
|
|
||||||
},
|
|
||||||
hideSplash() {
|
|
||||||
if (this.shouldShowSplash() && !this.shouldHidePageComponents()) {
|
|
||||||
setTimeout(() => { this.isLoading = false; }, splashScreenTime || 2000);
|
|
||||||
} else {
|
|
||||||
this.isLoading = false;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
shouldHidePageComponents() {
|
|
||||||
return (['download'].includes(this.$route.name));
|
|
||||||
},
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
currentRouteName() {
|
|
||||||
return this.$route.name;
|
|
||||||
},
|
|
||||||
},
|
|
||||||
mounted() {
|
|
||||||
this.hideSplash();
|
|
||||||
if (this.appConfig.customCss) {
|
|
||||||
const cleanedCss = this.appConfig.customCss.replace(/<\/?[^>]+(>|$)/g, '');
|
|
||||||
this.injectCustomStyles(cleanedCss);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
};
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<style lang="scss">
|
|
||||||
@import '@/styles/global-styles.scss';
|
|
||||||
@import '@/styles/color-palette.scss';
|
|
||||||
@import '@/styles/dimensions.scss';
|
|
||||||
@import '@/styles/color-themes.scss';
|
|
||||||
@import '@/styles/typography.scss';
|
|
||||||
|
|
||||||
body {
|
|
||||||
background: var(--background);
|
|
||||||
margin: 0;
|
|
||||||
padding: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
#app {
|
|
||||||
.footer {
|
|
||||||
text-align: center;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
</style>
|
|
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="plus-circle" class="svg-inline--fa fa-plus-circle fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M384 240v32c0 6.6-5.4 12-12 12h-88v88c0 6.6-5.4 12-12 12h-32c-6.6 0-12-5.4-12-12v-88h-88c-6.6 0-12-5.4-12-12v-32c0-6.6 5.4-12 12-12h88v-88c0-6.6 5.4-12 12-12h32c6.6 0 12 5.4 12 12v88h88c6.6 0 12 5.4 12 12zm120 16c0 137-111 248-248 248S8 393 8 256 119 8 256 8s248 111 248 248zm-48 0c0-110.5-89.5-200-200-200S56 145.5 56 256s89.5 200 200 200 200-89.5 200-200z"></path></svg>
|
|
Before Width: | Height: | Size: 599 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="info" class="svg-inline--fa fa-info fa-w-8" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 256 512"><path fill="currentColor" d="M224 352.589V224c0-16.475-6.258-31.517-16.521-42.872C225.905 161.14 236 135.346 236 108 236 48.313 187.697 0 128 0 68.313 0 20 48.303 20 108c0 20.882 5.886 40.859 16.874 58.037C15.107 176.264 0 198.401 0 224v39.314c0 23.641 12.884 44.329 32 55.411v33.864C12.884 363.671 0 384.359 0 408v40c0 35.29 28.71 64 64 64h128c35.29 0 64-28.71 64-64v-40c0-23.641-12.884-44.329-32-55.411zM128 48c33.137 0 60 26.863 60 60s-26.863 60-60 60-60-26.863-60-60 26.863-60 60-60zm80 400c0 8.836-7.164 16-16 16H64c-8.836 0-16-7.164-16-16v-40c0-8.836 7.164-16 16-16h16V279.314H64c-8.836 0-16-7.164-16-16V224c0-8.836 7.164-16 16-16h96c8.836 0 16 7.164 16 16v168h16c8.836 0 16 7.164 16 16v40z"></path></svg>
|
|
Before Width: | Height: | Size: 894 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="hammer" class="svg-inline--fa fa-hammer fa-w-18" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 576 512"><path fill="currentColor" d="M571.31 193.94l-22.63-22.63c-6.25-6.25-16.38-6.25-22.63 0l-11.31 11.31-28.9-28.9c5.63-21.31.36-44.9-16.35-61.61l-45.25-45.25c-62.48-62.48-163.79-62.48-226.28 0l90.51 45.25v18.75c0 16.97 6.74 33.25 18.75 45.25l49.14 49.14c16.71 16.71 40.3 21.98 61.61 16.35l28.9 28.9-11.31 11.31c-6.25 6.25-6.25 16.38 0 22.63l22.63 22.63c6.25 6.25 16.38 6.25 22.63 0l90.51-90.51c6.23-6.24 6.23-16.37-.02-22.62zm-286.72-15.2c-3.7-3.7-6.84-7.79-9.85-11.95L19.64 404.96c-25.57 23.88-26.26 64.19-1.53 88.93s65.05 24.05 88.93-1.53l238.13-255.07c-3.96-2.91-7.9-5.87-11.44-9.41l-49.14-49.14z"></path></svg>
|
|
Before Width: | Height: | Size: 798 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="fas" data-icon="sync" class="svg-inline--fa fa-sync fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M440.65 12.57l4 82.77A247.16 247.16 0 0 0 255.83 8C134.73 8 33.91 94.92 12.29 209.82A12 12 0 0 0 24.09 224h49.05a12 12 0 0 0 11.67-9.26 175.91 175.91 0 0 1 317-56.94l-101.46-4.86a12 12 0 0 0-12.57 12v47.41a12 12 0 0 0 12 12H500a12 12 0 0 0 12-12V12a12 12 0 0 0-12-12h-47.37a12 12 0 0 0-11.98 12.57zM255.83 432a175.61 175.61 0 0 1-146-77.8l101.8 4.87a12 12 0 0 0 12.57-12v-47.4a12 12 0 0 0-12-12H12a12 12 0 0 0-12 12V500a12 12 0 0 0 12 12h47.35a12 12 0 0 0 12-12.6l-4.15-82.57A247.17 247.17 0 0 0 255.83 504c121.11 0 221.93-86.92 243.55-201.82a12 12 0 0 0-11.8-14.18h-49.05a12 12 0 0 0-11.67 9.26A175.86 175.86 0 0 1 255.83 432z"></path></svg>
|
|
Before Width: | Height: | Size: 855 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="fal" data-icon="ellipsis-v-alt" class="svg-inline--fa fa-ellipsis-v-alt fa-w-6" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 192 512"><path fill="currentColor" d="M96 152c39.8 0 72-32.2 72-72S135.8 8 96 8 24 40.2 24 80s32.2 72 72 72zm0-112c22.1 0 40 17.9 40 40s-17.9 40-40 40-40-17.9-40-40 17.9-40 40-40zm0 144c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40zm0 64c-39.8 0-72 32.2-72 72s32.2 72 72 72 72-32.2 72-72-32.2-72-72-72zm0 112c-22.1 0-40-17.9-40-40s17.9-40 40-40 40 17.9 40 40-17.9 40-40 40z"></path></svg>
|
|
Before Width: | Height: | Size: 671 B |
@ -1,50 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="iso-8859-1"?>
|
|
||||||
<!-- Generator: Adobe Illustrator 19.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
|
||||||
<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
|
||||||
viewBox="0 0 512 512" style="enable-background:new 0 0 512 512;" xml:space="preserve">
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
<g>
|
|
||||||
|
|
||||||
<rect x="96.397" y="284.966" transform="matrix(-0.9401 0.341 -0.341 -0.9401 320.6888 545.5591)" width="31.998" height="31.998"/>
|
|
||||||
<polygon points="271.552,301.072 193.696,254.352 152.08,269.504 163.024,299.568 190.304,289.648 272.448,338.928
|
|
||||||
370.048,273.856 480,315.088 480,480 32,480 32,347.2 72.8,332.352 61.872,302.304 0,324.8 0,512 512,512 512,292.912
|
|
||||||
365.952,238.144 "/>
|
|
||||||
<polygon points="0,0 0,278.848 66.576,254.624 55.648,224.56 32,233.152 32,32 480,32 480,200.912 365.952,158.144
|
|
||||||
271.552,221.072 193.696,174.352 145.856,191.744 156.8,221.808 190.304,209.648 272.448,258.928 370.048,193.856 512,247.088
|
|
||||||
512,0 "/>
|
|
||||||
<rect x="90.237" y="207.181" transform="matrix(-0.3419 -0.9397 0.9397 -0.3419 -67.18 399.3166)" width="31.984" height="32"/>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
<g>
|
|
||||||
</g>
|
|
||||||
</svg>
|
|
Before Width: | Height: | Size: 1.3 KiB |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="cloud-upload-alt" class="svg-inline--fa fa-cloud-upload-alt fa-w-20" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 512"><path fill="currentColor" d="M395.5 267.5l-99-99c-4.7-4.7-12.3-4.7-17 0l-99 99c-7.6 7.6-2.2 20.5 8.5 20.5h67v84c0 6.6 5.4 12 12 12h40c6.6 0 12-5.4 12-12v-84h67c10.7 0 16.1-12.9 8.5-20.5zm148.2-67.4C539.7 142.1 491.4 96 432 96c-7.6 0-15.1.8-22.4 2.3C377.7 58.3 328.1 32 272 32c-84.6 0-155.5 59.7-172.3 139.8C39.9 196.1 0 254.4 0 320c0 88.4 71.6 160 160 160h336c79.5 0 144-64.5 144-144 0-61.8-39.2-115.8-96.3-135.9zM496 432H160c-61.9 0-112-50.1-112-112 0-56.4 41.7-103.1 96-110.9V208c0-70.7 57.3-128 128-128 53.5 0 99.3 32.8 118.4 79.4 11.2-9.6 25.7-15.4 41.6-15.4 35.3 0 64 28.7 64 64 0 11.8-3.2 22.9-8.8 32.4 2.9-.3 5.9-.4 8.8-.4 53 0 96 43 96 96s-43 96-96 96z"></path></svg>
|
|
Before Width: | Height: | Size: 883 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="fal" data-icon="upload" class="svg-inline--fa fa-upload fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M452 432c0 11-9 20-20 20s-20-9-20-20 9-20 20-20 20 9 20 20zm-84-20c-11 0-20 9-20 20s9 20 20 20 20-9 20-20-9-20-20-20zm144-48v104c0 24.3-19.7 44-44 44H44c-24.3 0-44-19.7-44-44V364c0-24.3 19.7-44 44-44h124v-99.3h-52.7c-35.6 0-53.4-43.1-28.3-68.3L227.7 11.7c15.6-15.6 40.9-15.6 56.6 0L425 152.4c25.2 25.2 7.3 68.3-28.3 68.3H344V320h124c24.3 0 44 19.7 44 44zM200 188.7V376c0 4.4 3.6 8 8 8h96c4.4 0 8-3.6 8-8V188.7h84.7c7.1 0 10.7-8.6 5.7-13.7L261.7 34.3c-3.1-3.1-8.2-3.1-11.3 0L109.7 175c-5 5-1.5 13.7 5.7 13.7H200zM480 364c0-6.6-5.4-12-12-12H344v24c0 22.1-17.9 40-40 40h-96c-22.1 0-40-17.9-40-40v-24H44c-6.6 0-12 5.4-12 12v104c0 6.6 5.4 12 12 12h424c6.6 0 12-5.4 12-12V364z"></path></svg>
|
|
Before Width: | Height: | Size: 902 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="far" data-icon="times-circle" class="svg-inline--fa fa-times-circle fa-w-16" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path fill="currentColor" d="M256 8C119 8 8 119 8 256s111 248 248 248 248-111 248-248S393 8 256 8zm0 448c-110.5 0-200-89.5-200-200S145.5 56 256 56s200 89.5 200 200-89.5 200-200 200zm101.8-262.2L295.6 256l62.2 62.2c4.7 4.7 4.7 12.3 0 17l-22.6 22.6c-4.7 4.7-12.3 4.7-17 0L256 295.6l-62.2 62.2c-4.7 4.7-12.3 4.7-17 0l-22.6-22.6c-4.7-4.7-4.7-12.3 0-17l62.2-62.2-62.2-62.2c-4.7-4.7-4.7-12.3 0-17l22.6-22.6c4.7-4.7 12.3-4.7 17 0l62.2 62.2 62.2-62.2c4.7-4.7 12.3-4.7 17 0l22.6 22.6c4.7 4.7 4.7 12.3 0 17z"></path></svg>
|
|
Before Width: | Height: | Size: 712 B |
@ -1 +0,0 @@
|
|||||||
<svg aria-hidden="true" focusable="false" data-prefix="fab" data-icon="css3-alt" class="svg-inline--fa fa-css3-alt fa-w-12" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><path fill="currentColor" d="M0 32l34.9 395.8L192 480l157.1-52.2L384 32H0zm313.1 80l-4.8 47.3L193 208.6l-.3.1h111.5l-12.8 146.6-98.2 28.7-98.8-29.2-6.4-73.9h48.9l3.2 38.3 52.6 13.3 54.7-15.4 3.7-61.6-166.3-.5v-.1l-.2.1-3.6-46.3L193.1 162l6.5-2.7H76.7L70.9 112h242.2z"></path></svg>
|
|
Before Width: | Height: | Size: 473 B |