{"id":20632420,"url":"https://github.com/dragonish/slender-go","last_synced_at":"2026-04-20T20:32:04.639Z","repository":{"id":244796299,"uuid":"815939494","full_name":"dragonish/slender-go","owner":"dragonish","description":"Personal website navigation. | 个人网站导航。","archived":false,"fork":false,"pushed_at":"2024-12-23T14:25:39.000Z","size":3536,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-17T07:26:55.295Z","etag":null,"topics":["bookmarking","link-management","navigation","navigation-system","web-navigation","website-directory"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dragonish.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2024-06-16T15:37:56.000Z","updated_at":"2024-12-23T14:25:08.000Z","dependencies_parsed_at":"2024-07-05T16:27:22.709Z","dependency_job_id":"5680fa99-c8af-475b-92fd-30415495b2f9","html_url":"https://github.com/dragonish/slender-go","commit_stats":null,"previous_names":["dragonish/slender-go"],"tags_count":6,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonish%2Fslender-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonish%2Fslender-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonish%2Fslender-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dragonish%2Fslender-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dragonish","download_url":"https://codeload.github.com/dragonish/slender-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242619100,"owners_count":20159001,"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":["bookmarking","link-management","navigation","navigation-system","web-navigation","website-directory"],"created_at":"2024-11-16T14:16:09.210Z","updated_at":"2025-12-26T11:31:14.219Z","avatar_url":"https://github.com/dragonish.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# slender-go\n\n\u003c!-- markdownlint-disable MD033 --\u003e\n\n\u003cp align=\"center\"\u003e\u003cb\u003eEnglish\u003c/b\u003e 👈(ﾟヮﾟ👈) | \u003ca href=\"./README-zh_CN.md\"\u003e简体中文\u003c/a\u003e\u003c/p\u003e\n\nPersonal website navigation.\n\n## Preview\n\n![desktop](./images/desktop.png)\n\n\u003cimg src=\"./images/mobile.png\" width=\"360\" alt=\"mobile\" /\u003e\n\n## Feature\n\n- Allow defining [access password](#access-password) and [admin password](#admin-password).\n- Support [dynamic link](#dynamic-link) function.\n- Support privacy mode function.\n- Support searching for bookmark items within the homepage.\n- Built-in [MaterialDesign](https://github.com/Templarian/MaterialDesign) and [simple-icons](https://github.com/simple-icons/simple-icons) icons, and allows custom or upload icons.\n- Allows custom web search engines.\n- Allows to custom the code in the home footer element.\n- Optional folder sidebar.\n- Optional display of latest bookmarks and hot bookmarks.\n\n## Installation\n\n### Docker deployment\n\nPull image:\n\n```bash\ndocker pull giterhub/slender:latest\n```\n\nCreate the [`compose.yaml`](./compose.yaml) file and run:\n\n```bash\ndocker compose up -d\n```\n\nSupport defining [environment variables](#environment-variables) or [service configuration](#service-configuration) or adding [startup commands](#startup-commands).\n\n### Local compile\n\nInstall [git](https://git-scm.com) and [Go](https://go.dev) locally and run:\n\n```bash\n# Clone project code\ngit clone https://github.com/dragonish/slender-go.git\n\n# Enter project directory\ncd slender-go\n\n# At the first time or update version\n./download.sh\n\n# Run\nCGO_ENABLED=1 go run main.go\n```\n\nSupport defining [environment variables](#environment-variables) or [service configuration](#service-configuration) or adding [startup commands](#startup-commands).\n\n## Environment variables\n\n| Name | Type | Default | Description |\n| --- | --- | --- | --- |\n| `SLENDER_ACCESS_PWD` | `string` | `\"\"` | Access password |\n| `SLENDER_ADMIN_PWD` | `string` | `\"\"` | Admin password |\n| `SLENDER_LOG_LEVEL` | `string` | `Info` | Log output level. Optional: `Debug`, `Info`, `Warn`, `Error` |\n| `SLENDER_PORT` | `int` | `8080` | Web service running port |\n| `SLENDER_TOKEN_AGE` | `int` | `30` | Token max-age (days) |\n| `SLENDER_PERFORMANCE_MODE` | `string` | `0` | Enable performance mode when a truthy value (`1, yes, true, on`). *It is recommended to enable only when the database update performance is bad* |\n| `SLENDER_SERVICE_CONFIG` | `string` | `\"\"` | Specify service config file path |\n\n## Service configuration\n\n\u003e *Service configuration take precedence over environment variables.*\n\nThe service configuration file can be defined as a YAML or JSON format file.\n\n### YAML format\n\nIf you want to use a service configuration file in YAML format, specify its file path either by [environment variables](#environment-variables) or adding [startup commands](#startup-commands).\n\nEach field in the file is optional. The file can declare fields as follows:\n\n```yaml\naccess_password: string # Access password\nadmin_password: string # Admin password\nlog_level: Debug|Info|Warn|Error # Log output level\nport: number # Web service running port\ntoken_age: number # Token max-age (days)\nperformance_mode: true # Performance mode. It is recommended to enable only when the database update performance is bad\n```\n\n### JSON format\n\nIf you want to use a service configuration file in JSON format, specify its file path either by [environment variables](#environment-variables) or adding [startup commands](#startup-commands).\n\nEach field in the file is optional. The file can declare fields as follows:\n\n```js\n{\n  \"accessPassword\": \"string\", // Access password\n  \"adminPassword\": \"string\", // Admin password\n  \"logLevel\": \"Debug|Info|Warn|Error\", // Log output level\n  \"port\": 8080, // Web service running port\n  \"tokenAge\": 30, // Token max-age (days)\n  \"performanceMode\": true, // Performance mode. It is recommended to enable only when the database update performance is bad\n}\n```\n\n## Startup commands\n\n\u003e *Startup commands take precedence over service configuration and environment variables.*\n\n| Name | Type | Description |\n| --- | --- | --- |\n| `--debug, -D` | | Enable debug mode |\n| `--version, -v` | | Show application version |\n| `--help, -h` | | Show help document |\n| `--performance, -P` | | Enable performance mode. *It is recommended to enable only when the database update performance is bad* |\n| `--config, -c` | `string` | Specify service config file path |\n| `--access_pwd, -a` | `string` | Specify access password |\n| `--admin_pwd, -d` | `string` | Specify admin password |\n| `--token_age, -t` | `int` | Specify token max-age (days) |\n| `--log, -l` | `string` | Specify log output level. Optional: `Debug`, `Info`, `Warn`, `Error` |\n| `--port, -p` | `int` | Specify web service running port |\n\n## Access password\n\nUsed to access the homepage. If not defined, it can be accessed directly by default.\n\n## Admin password\n\nUsed to access backend management and enter privacy mode.\n\nIf no admin password is set, it defaults to the access password(non-empty) or `p@$$w0rd`.\n\n## Dynamic link\n\nConvert dynamic links and display them according to the network environment.\n\nSuppose the homepage address of the Slender service is `https://192.168.0.1:8080/`, the following available parameters and their corresponding results:\n\n| parameter | result |\n| --- | --- |\n| `host` | `192.168.0.1:8080` |\n| `hostname` | `192.168.0.1` |\n| `domain` | `192.168.0.1` |\n| `href` | `https://192.168.0.1:8080/` |\n| `origin` | `https://192.168.0.1:8080` |\n| `pathname` | `/` |\n| `port` | `8080` |\n| `protocol` | `https:` |\n\n### Example\n\nIf a bookmark URL is configured as `https://{hostname}:8888/test`:\n\n- When the homepage of the Slender service is `https://192.168.0.1:8080/`, it appears as `https://192.168.0.1:8888/test`.\n- When the homepage of the Slender service is `https://172.17.0.1:8080/`, it appears as `https://172.17.0.1:8888/test`.\n- When the homepage of the Slender service is `https://link.example.com/`, it appears as `https://link.example.com:8888/test`.\n\n## Credits\n\n- [soulteary/flare](https://github.com/soulteary/flare)\n- [simple-icons/simple-icons](https://github.com/simple-icons/simple-icons)\n- [Templarian/MaterialDesign](https://github.com/Templarian/MaterialDesign)\n\n## License\n\n[GPL-3.0 license](./LICENSE)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonish%2Fslender-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdragonish%2Fslender-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdragonish%2Fslender-go/lists"}