# Dashboard

![Alt text](/screenshot.png?raw=true 'screenshot')

Dashboard is just that - a dashboard. It's inspired by [SUI](https://github.com/jeroenpardon/sui) and has all the same features as SUI, such as simple customization through JSON-files and a handy search bar to search the internet more efficiently.

## Features

So what makes this thing better than SUI?

-   "Display URL" functionality, in case the URL you want to show is different than the URL you want to be redirected to
-   Theming through JSON
-   Search providers customizable through JSON (SUI has them both in a JSON and hardcoded)

## Installation

Getting Dashboard to run is fairly simple and can be accomplished with two techniques:

1. Locally

Prerequisites: yarn, npm, node

```
$ git clone https://github.com/phntxx/dashboard.git
$ cd dashboard/
$ yarn
$ yarn build
$ yarn serve:production
```

2. Using Docker

```
$ docker run -d \
	-v $(pwd)/data:/app/data
	-p 3000:3000 \
	--name dashboard \
	phntxx/dashboard
```

Sample Docker Compose configuration:

```
version: "3"

services:
	dashboard:
		image: phntxx/dashboard:latest
		restart: unless-stopped
		volumes:
			- [path to data directory]:/app/data
		ports:
			- 3000:3000
```

**Note: You might still need to clone the repository in order to get the JSON-files which are required for the
app to run**

## Customization

Dashboard is designed to be customizable. Everything is handled using four .json-files, which can be found at /src/components/data

### Applications

To add an application, append the following to apps.json or simply edit one of the examples given.

```
{
	"name": "[Name of the Application]",
	"displayURL": "[URL you want to show]",
	"URL": "[URL to redirect to]",
	"icon": "[Icon code]"
}
...
```

To find icons, simply go to the [Material Design Icon Library](https://material.io/icons/) and copy one of the codes for an icon there.

**NEW FEATURE: CATEGORIES**

To add a category to your dashboard, change apps.json to resemble the following:

```
{
	"categories": [
		...
	],
	"apps": [
		...
	]
}

```

Then, a category can be added by entering the following within the "categories" field:

```
{
	"name": "[Name of the category]",
	"items": [
		[Application goes here]
	]
}
```

In the end, your apps.json file should look something like this:

1. Without categories

```
{
	"apps": [
		{
			"name": "[Name of the Application]",
			"displayURL": "[URL you want to show]",
			"URL": "[URL to redirect to]",
			"icon": "[Icon code]"
		},
		{
		"name": "[Name of the Application]",
		"displayURL": "[URL you want to show]",
		"URL": "[URL to redirect to]",
		"icon": "[Icon code]"
		},
		...
	]
}
```

2. With apps and categories

```
{
	"categories": [
		{
			"name": "[Name of the category]",
			"items": [
				{
					"name": "[Name of the Application]",
					"displayURL": "[URL you want to show]",
					"URL": "[URL to redirect to]",
					"icon": "[Icon code]"
				},
				{
				"name": "[Name of the Application]",
				"displayURL": "[URL you want to show]",
				"URL": "[URL to redirect to]",
				"icon": "[Icon code]"
				},
				...
			]
		},
		...
	],
	"apps": [
		{
			"name": "[Name of the Application]",
			"displayURL": "[URL you want to show]",
			"URL": "[URL to redirect to]",
			"icon": "[Icon code]"
		},
		{
		"name": "[Name of the Application]",
		"displayURL": "[URL you want to show]",
		"URL": "[URL to redirect to]",
		"icon": "[Icon code]"
		},
		...
	]
}
```

### Bookmarks

To add a bookmark, append the following to bookmarks.json or simply edit one of the examples given.

```
{
	"name": "[Category name]",
	"items": [
		{
		"name": "[Bookmark name]",
		"url": "[URL to redirect to]"
		},
		{
		"name": "[Bookmark name]",
		"url": "[URL to redirect to]"
		},
		{
		"name": "[Bookmark name]",
		"url": "[URL to redirect to]"
		}
		...
	]
},
...
```

### Theming:

Dashboard also supports themes with the help of a simple JSON-file: themes.json. To add a theme, append the following to themes.json:

```
{
	"label": "[Theme Name]",
	"value": [Number of the theme],
	"mainColor": "[Main Color as 6-character hex code]",
	"accentColor": "[Accent Color as 6-character hex code]",
	"backgroundColor": "[Background Color as 6-character hex code]"
}
```

### Search Providers:

The searchbar on the top supports shortcuts like "/so", just as SUI does. To add one of your own, simply append the following to search.json

```
{
	"name":"[Name of the website]",
	"url":"[Link that processes searches on that website]",
	"prefix":"[a custom prefix]"
},
```
