{"id":14070569,"url":"https://github.com/mandarons/yadd","last_synced_at":"2026-02-26T22:04:17.374Z","repository":{"id":47653976,"uuid":"392537101","full_name":"mandarons/yadd","owner":"mandarons","description":"Yet Another Dashboard (Dockerized) - homepage for your services","archived":false,"fork":false,"pushed_at":"2025-11-08T04:02:54.000Z","size":9892,"stargazers_count":67,"open_issues_count":2,"forks_count":1,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-11-08T04:18:48.235Z","etag":null,"topics":["dashboard","docker","javascript","nodejs","reactjs","self-hosted","tailwindcss","typescript"],"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/mandarons.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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,"dei":null,"publiccode":null,"codemeta":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/mandarons"]}},"created_at":"2021-08-04T03:37:54.000Z","updated_at":"2025-10-11T13:36:01.000Z","dependencies_parsed_at":"2024-08-13T07:17:33.715Z","dependency_job_id":"f23e57cc-d429-478e-a0ad-cb45ff8583d8","html_url":"https://github.com/mandarons/yadd","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/mandarons/yadd","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandarons%2Fyadd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandarons%2Fyadd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandarons%2Fyadd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandarons%2Fyadd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mandarons","download_url":"https://codeload.github.com/mandarons/yadd/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mandarons%2Fyadd/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29874503,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-26T21:05:00.265Z","status":"ssl_error","status_checked_at":"2026-02-26T20:57:13.669Z","response_time":89,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"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":["dashboard","docker","javascript","nodejs","reactjs","self-hosted","tailwindcss","typescript"],"created_at":"2024-08-13T07:07:53.043Z","updated_at":"2026-02-26T22:04:17.355Z","avatar_url":"https://github.com/mandarons.png","language":"TypeScript","readme":"# YADD - Yet Another Dashboard (Dockerized)\n\n[![Main - Test, Coverage and Deploy](https://github.com/mandarons/yadd/actions/workflows/ci-main-test-coverege-deploy.yml/badge.svg?branch=main)](https://github.com/mandarons/yadd/actions/workflows/ci-main-test-coverege-deploy.yml)\n[![Tests](https://mandarons.github.io/yadd/badges/tests.svg)](https://mandarons.github.io/yadd/test-results/)\n[![Coverage](https://mandarons.github.io/yadd/badges/coverage.svg)](https://mandarons.github.io/yadd/test-coverage/index.html)\n[![Docker](https://badgen.net/docker/pulls/mandarons/yadd)](https://hub.docker.com/r/mandarons/yadd)\n[![Discord](https://img.shields.io/discord/871555550444408883?style=for-the-badge)](https://discord.gg/HfAXY2ykhp)\n\n:love_you_gesture: ***Please star this repository if you end up using the container. It will help me continue supporting this product.*** :pray:\n\n## Introduction\n\nA minimalistic dashboard for all the services that you use and love. It also monitors if the service is up or not, provides url-shortening service etc.\n\n## Key Features\n* Dashboard for the services you want to track\n* Automatic health check (shown as background green for success, red for failure)\n* URL shortening for quick navigation - no need to open the dashboard page and then click to navigate\n* Tracks when the service was online before failure\n* Tracks number of hits (Work in progress ...)\n* Easy to backup and restore (all data is in `db.sqlite` file and configuration is in `config.yaml` file)\n* Configuration through YAML file\n* Single user authentication (optional)\n\n## Screenshot\n### Sample dashboard\n![services screenshot](https://user-images.githubusercontent.com/50469173/128587087-3c90744c-d820-4de9-bf0c-e74e04d356c1.png)\n### Optional authentication - can be enabled in `config.yaml` file ([details below](#configuration-file))\n![authentication screenshot](https://user-images.githubusercontent.com/50469173/130120350-180e8c67-d0cb-4407-b8f7-f9ff98980de8.png)\n\n\n## Installation\n1. Install Docker (if you haven't already)\n2. Create `yadd` deployment folder and use it as `cwd`\n3. Run `docker container run --name yadd -p 3334:3334 -v ${PWD}/config/:/app/config/ mandarons/yadd`\n4. Navigate to `http://localhost:3334` to and start adding services!\n\n## User Guide\n\n### Adding a new service\n   \n   `NAME`: User friendly name of the service e.g. `Amazon`\n\n   `URL`: Complete URL of the service e.g. `https://amazon.com`  \n   \n   `SHORT NAME`: Unique, short name to be used as short URL e.g. `amazon`\n   \n   `LOGO URL`: Relative path to icon to be used e.g. `/icons/amazon.png`. [Full list of available icons](https://github.com/mandarons/yadd/tree/main/clients/web/public/icons)\n   \n   Click on `CREATE SERVICE`\n\n### Navigating to an existing service using short name\n\nSimply navigate to `http://localhost:3334/amazon` (from example above) and it will take you to `https://amazon.com` (the service URL).\n\nYou may also click on service icon to navigate to the service URL.\n\n### Checking the online status of an existing service\n\nAfter adding a new service for first few seconds, the service background will be red. If the service is online, it should turn green and stay green.\n\n### Editing an existing service\n\nSimply click on `pencil` icon on the service card, make changes and click `SAVE CHANGES`.\n\n### Deleting an existing service\n\nSimply click on `pencil` icon on the service card that you want to delete and click `DELETE SERVICE`.\n\n### Recommended Setup (using `NGINX` at root)\n\nMost common use case is repurpose existing system/VM to serve `yadd` from root using `NGINX`. Here is a sample configuration for NGINX (assuming `yadd` service is running on port `3334`).\n\n```nginx\nserver {\n\tlisten 80;\n\tserver_name goto;\n\t\n\tlocation / {\n        proxy_set_header X-Real-IP $remote_addr;\n        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n        proxy_pass http://localhost:3334/;\n    }\n}\n```\nIf you host a DNS server, you can add entry to resolve `http://goto` to above server. If not, you can update `/etc/hosts` on Linux/Mac, `C:\\Windows\\System32\\drivers\\etc\\hosts` with the following entry:\n\n```ini\n# Resolve http://goto to IP address of above server which is serving YADD from its root \n\u003cip_of_above_server\u003e goto\n```\n#### Sample `docker-compose.yaml` entry \n\n```yaml\nyadd:\n    image: mandarons/yadd\n    container_name: yadd\n    restart: unless-stopped\n    environment:\n      - PGID=1000\n      - PUID=1000\n    ports:\n      - 3334:3334\n    volumes:\n      - ${PWD}/yadd/config/:/app/config/\n      - ${PWD}/yadd/config/config.yaml:/app/config/config.yaml\n    healthcheck:\n      test: wget --quiet --tries=1 --spider http://localhost:3334/ || exit 1\n      interval: 10s\n      timeout: 10s\n      retries: 3\n      start_period: 30s\n```\n\n### Configuration File\nConfiguration file `config.yaml` is located in the `config` folder. Default configuration file looks like below:\n```yaml\nserver:\n  # Container port on which server to run\n  port: 3334\n  # `token` to expire after when authentication is enabled \n  authTokenExpiration: 7d\n  # Interval for checking if the service is reachable or not\n  statusCheckRefreshInterval: \"5 * * * * *\" # 5 seconds\n  # Authentication\n  auth:\n    # If authentication is to be enabled -  container must be restarted if this value is changed\n    enable: false\n    # password - set this to something complex\n    adminPassword: \"admin\"\n    # Unused (TODO: use it instead of `authTokenExpiration` above\n    tokenExpiration: \"7d\" # 7 days\n    # Secret key - must be set to something long and random string\n    secretKey: \"some-random-long-string\"\n```\n","funding_links":["https://www.buymeacoffee.com/mandarons"],"categories":["TypeScript"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmandarons%2Fyadd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmandarons%2Fyadd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmandarons%2Fyadd/lists"}