{"id":13596868,"url":"https://github.com/phntxx/dashboard","last_synced_at":"2025-04-09T20:31:32.318Z","repository":{"id":36978836,"uuid":"265541694","full_name":"phntxx/dashboard","owner":"phntxx","description":":bar_chart: a nice and simple dashboard / landing page.","archived":false,"fork":false,"pushed_at":"2025-01-25T18:44:15.000Z","size":3460,"stargazers_count":963,"open_issues_count":26,"forks_count":56,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-01-25T19:27:44.413Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/phntxx.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null},"funding":{"github":null,"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"custom":["https://www.buymeacoffee.com/phntxx"]}},"created_at":"2020-05-20T11:18:36.000Z","updated_at":"2025-01-25T18:43:13.000Z","dependencies_parsed_at":"2024-01-14T17:04:38.771Z","dependency_job_id":"67030245-0e98-4be5-aca0-67ecf9819473","html_url":"https://github.com/phntxx/dashboard","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phntxx%2Fdashboard","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phntxx%2Fdashboard/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phntxx%2Fdashboard/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/phntxx%2Fdashboard/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/phntxx","download_url":"https://codeload.github.com/phntxx/dashboard/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248107362,"owners_count":21048913,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T16:02:53.108Z","updated_at":"2025-04-09T20:31:32.092Z","avatar_url":"https://github.com/phntxx.png","language":"TypeScript","funding_links":["https://www.buymeacoffee.com/phntxx"],"categories":["TypeScript","Software"],"sub_categories":["Personal Dashboards"],"readme":"# Dashboard\n\n[![Docker Cloud Build Status][shield-docker]][docker]\n[![Docker Image Size (latest)][shield-docker-image]][docker]\n[![codecov][shield-codecov]][codecov]\n[![GitHub license][shield-license]][license]\n\n![Alt text](/screenshot.png?raw=true \"screenshot\")\n\nDashboard 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.\n\n## Features\n\nSo what makes this project different from (or even better than) SUI?\n\n- \"Display URL\" functionality (The URL displayed for apps can differ from the actual URL)\n- Categorization for apps\n- Themes and search providers can be changed using JSON\n- Imprint functionality\n\n## Installation\n\nThe recommended way of installation is using [Docker](https://docker.com). You could also build your own version from source, but do proceed at your own risk.\n\n### Docker\n\nThe Docker image is built on top of [this image](https://github.com/ratisbona-coding/nginx-cloudflare-cache), as it's based on Nginx and also provides functionality to purge the Cloudflare cache every time the container restarts (though this functionality is entirely optional).\n\nThe Docker image is available on both [DockerHub](docker) and the GitHub Container Repository (GHCR, see \"packages\").\n\n1. Using the Docker CLI:\n\n```sh\n$ docker run -d \\\n  -e CLOUDFLARE_ZONE_ID=[OPTIONAL CLOUDFLARE V4 ZONE ID] \\\n  -e CLOUDFLARE_PURGE_TOKEN=[OPTIONAL CLOUDFLARE PURGE TOKEN] \\\n  -v $(pwd)/data:/app/data \\\n  -p 8080:8080 \\\n  --name=dashboard \\\n  phntxx/dashboard\n```\n\n2. Using Docker-Compose:\n\n```yml\nversion: \"3\"\n\nservices:\n  dashboard:\n    image: phntxx/dashboard:latest\n    restart: unless-stopped\n    environment:\n      - CLOUDFLARE_ZONE_ID=[OPTIONAL CLOUDFLARE V4 ZONE ID]\n      - CLOUDFLARE_PURGE_TOKEN=[OPTIONAL CLOUDFLARE PURGE TOKEN]\n    volumes:\n      - [path to data directory]:/app/data\n    ports:\n      - 8080:8080\n```\n\n### Compile from source\n\nI really don't anticipate people to use this, so go forth at your own risk.\n\n```bash\n$ git clone https://github.com/phntxx/dashboard.git\n$ cd dashboard/\n$ yarn\n$ yarn build\n$ yarn serve:production\n```\n\n### Manual install\n\n```bash\n$ git clone https://github.com/phntxx/dashboard.git\n$ cd dashboard/\n$ yarn\n$ yarn build\n$ cp -R build/* .\n```\n\n#### `/etc/nginx/conf.d/dashboard.conf`\n\n```\nserver {\n        server_name localhost;\n        listen 8080;\n        root /var/www/dashboard/html/;\n\n        location / {\n                index index.html index.htm;\n        }\n}\n```\n\n```bash\n$ cd ..\n$ mkdir /var/www/dashboard\n$ mv dashboard/ html\n$ mv html/ /var/www/dashboard\n$ chown -R www-data:www-data\n$ systemctl nginx reload\n```\n\n## Configuration\n\nThere's a couple of things you can / need to configure to get Dashboard to look and behave just as you want it to.\n\nIf you don't require a specific component, just remove the file from your `data`-directory. Dashboard won't render the components whose files are not present. With no files present, only the greeter will be shown.\n\nIf you're running into problems with configuring your files and you can't seem to get them to work, feel free to open an issue, I'd be happy to help! :smile:\n\n### Apps\n\nTo show the apps you want to show, change `apps.json` to resemble the following:\n\n```json\n{\n  \"categories\": [\n    {\n      \"name\": \"[Name of the category]\",\n      \"items\": [\n        {\n          \"name\": \"[Name of the app]\",\n          \"displayURL\": \"[URL you want to show]\",\n          \"url\": \"[URL to redirect to]\",\n          \"icon\": \"[Icon code]\",\n          \"newTab\": true\n        },\n        ...\n      ]\n    },\n    ...\n  ],\n  \"apps\": [\n    {\n      \"name\": \"[Name of the app]\",\n      \"displayURL\": \"[URL you want to show]\",\n      \"url\": \"[URL to redirect to]\",\n      \"icon\": \"[Icon code]\",\n      \"newTab\": false\n    },\n    ...\n  ]\n}\n```\n\nWherein either `apps` or `categories` can be omitted as needed.\n`newTab` is optional and defaults to `false`.\n\nTo find icons, simply go to the [Material Design Icon Library](https://material.io/icons/) and copy one of the codes for an icon there.\n\n### Bookmarks\n\nTo show bookmarks, `bookmarks.json` needs to resemble the following:\n\n```json\n{\n  \"groups\": [\n    {\n      \"name\": \"[Group Name]\",\n      \"items\": [\n        {\n          \"name\": \"[Bookmark Name]\",\n          \"url\": \"[Bookmark URL]\",\n          \"newTab\": true\n        },\n        ...\n      ]\n    },\n    ...\n  ]\n}\n```\n\n`newTab` is optional and defaults to `false`.\n\n### Themes\n\nIn order to customize theming, `themes.json` needs to resemble this:\n\n```json\n{\n  \"themes\": [\n    {\n      \"label\": \"[Theme Name]\",\n      \"value\": \"[Number of the theme]\",\n      \"mainColor\": \"[Main Color as 6-character hex code]\",\n      \"accentColor\": \"[Accent Color as 6-character hex code]\",\n      \"backgroundColor\": \"[Background Color as 6-character hex code]\"\n    },\n    ...\n  ]\n}\n```\n\n### Search Providers\n\nFor search providers to work, make sure your `search.json` resembles the following:\n\n```json\n{\n  \"providers\": [\n    {\n      \"name\": \"[Name of the website]\",\n      \"url\": \"[Link that processes searches on that website]\",\n      \"prefix\": \"[A custom prefix (e.g. '/test')]\"\n    },\n    ...\n  ]\n}\n```\n\nYou can also customize whether or not the search bar automatically focusses on render by adding\nthe following to `search.json`, on the same level where properties like `providers` are located:\n\n```json\n  \"autoFocus\": true,\n```\n\n### Imprint\n\nIn order for the imprint-modal to show up, make sure your `imprint.json` resembles the following:\n\n```json\n{\n  \"imprint\": {\n    \"name\": {\n      \"text\": \"[Name]\",\n      \"link\": \"[Link to the name (to e.g. a portfolio)]\"\n    },\n    \"address\": {\n      \"text\": \"[Address]\",\n      \"link\": \"[Link for the address (to e.g. Google Maps)]\"\n    },\n    \"phone\": {\n      \"text\": \"[Phone number]\",\n      \"link\": \"[Link for the phone number]\"\n    },\n    \"email\": {\n      \"text\": \"[Email address]\",\n      \"link\": \"[Link for the email address (e.g. for 'mailto')]\"\n    },\n    \"url\": {\n      \"text\": \"[URL]\",\n      \"link\": \"[Link for the URL]\"\n    },\n    \"text\": \"[Text for the imprint]\"\n  }\n}\n```\n\n\u003e :exclamation: I haven't quite tested this. I'm not a lawyer and I'm not responsible if you're sued for using this incorrectly.\n\n[docker]: https://hub.docker.com/r/phntxx/dashboard\n[codecov]: https://codecov.io/gh/phntxx/dashboard\n[repo]: https://github.com/phntxx/dashboard\n[license]: https://github.com/phntxx/dashboard/LICENSE\n[shield-docker]: https://img.shields.io/docker/cloud/build/phntxx/dashboard\n[shield-docker-image]: https://img.shields.io/docker/image-size/phntxx/dashboard/latest\n[shield-codecov]: https://codecov.io/gh/phntxx/dashboard/branch/master/graph/badge.svg\n[shield-license]: https://img.shields.io/github/license/phntxx/dashboard.svg\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphntxx%2Fdashboard","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fphntxx%2Fdashboard","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fphntxx%2Fdashboard/lists"}