{"id":18743943,"url":"https://github.com/tinyplayerss/gitlinks","last_synced_at":"2026-01-24T13:41:08.276Z","repository":{"id":211329901,"uuid":"728842266","full_name":"tinyplayerss/gitlinks","owner":"tinyplayerss","description":null,"archived":false,"fork":false,"pushed_at":"2026-01-03T01:45:01.000Z","size":95,"stargazers_count":3,"open_issues_count":1,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-01-07T02:41:13.496Z","etag":null,"topics":["custom-linktree","linktree-alternative","linktree-api"],"latest_commit_sha":null,"homepage":"https://tinyplayerss.github.io/gitlinks","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tinyplayerss.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-12-07T20:15:56.000Z","updated_at":"2026-01-03T01:45:04.000Z","dependencies_parsed_at":"2024-03-16T14:20:29.580Z","dependency_job_id":"7635efc1-6623-4cc6-a225-f57e70b0ec7e","html_url":"https://github.com/tinyplayerss/gitlinks","commit_stats":null,"previous_names":["tinyplayerss/linktree","tinyplayerss/gitlinks"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/tinyplayerss/gitlinks","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyplayerss%2Fgitlinks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyplayerss%2Fgitlinks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyplayerss%2Fgitlinks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyplayerss%2Fgitlinks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tinyplayerss","download_url":"https://codeload.github.com/tinyplayerss/gitlinks/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tinyplayerss%2Fgitlinks/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28729213,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-24T10:24:43.181Z","status":"ssl_error","status_checked_at":"2026-01-24T10:24:36.112Z","response_time":89,"last_error":"SSL_read: 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":["custom-linktree","linktree-alternative","linktree-api"],"created_at":"2024-11-07T16:13:13.506Z","updated_at":"2026-01-24T13:41:08.271Z","avatar_url":"https://github.com/tinyplayerss.png","language":"JavaScript","readme":"# GitLinks\n\nA simple, privacy-friendly \"linktree\" you can fork and customize. Ideal for streamers and creators who want a fast static page they control — edit a single file (user.json), save, and your page updates.\n\n![Presenting linktree](https://github.com/tinyplayerss/linktree/assets/123846642/9a54a16c-747a-47a5-b37a-133e197c4699)\n\n\u003ca target=\"_BLANK\" href=\"https://paypal.me/2players1gamer\"\u003e\u003cimg src=\"https://github.com/tinyplayerss/linktree/assets/123846642/4d60218d-4a4b-4b97-a46f-f767e444ce23\" align=\"center\" width=\"360\" height=\"120\"\u003e\u003c/a\u003e\n\n---\n\n## Quick start (3 easy steps)\n1. Click \"Use this template\" or \"Fork\" to create your own copy of this repository.  \n2. Open the file `user.json` in your repo, edit the Link Names, URLs, or Divider Titles, then click **Commit changes**.  \n3. Wait ~30–90 seconds for GitHub Pages to publish your site, then open:\n   `https://YOUR_GITHUB_USERNAME.github.io/gitlinks`\n\nThat’s it — keep everything else the same; only change the parts described below.\n\n---\n\n## Why choose GitLinks? (quick comparison)\n\n| Feature / Benefit                          | GitLinks (this project) | Linktree \u0026 Hosted Services |\n|--------------------------------------------|:-----------------------:|:--------------------------:|\n| Open-source (full repo access)             | ✔️                      | ❌                         |\n| Privacy-first (no tracking by default)     | ✔️                      | ❌                         |\n| Self-hostable / free static hosting        | ✔️                      | ❌                         |\n| Versioned via Git (forks, PRs, history)    | ✔️                      | ❌                         |\n| High-quality favicons \u0026 crisp assets       | ✔️                      | ✔️                         |\n| Divider categories with centered titles    | ✔️                      | ✔️                         |\n| Unlimited links (no hidden limits)         | ✔️                      | ❌ (limits on free tiers)  |\n| Custom domain support (no mandatory paywall)| ✔️ (via GitHub Pages)  | ❌ (often paid)            |\n| No forced branding / remove brand easily   | ✔️                      | ❌ (paid on many services) |\n| Theme customization (CSS / HTML control)   | ✔️                      | ❌ (limited unless paid)   |\n| Export / backup via Git (full control)     | ✔️                      | ❌                         |\n| Built-in visual editor \u0026 analytics         | ❌ (optional add-ons)    | ✔️ (usually paid)          |\n| One-click deploy via GitHub template       | ✔️                      | ❌                         |\n| Ideal for non-technical users out-of-box   | ❌ (but simple workflow) | ✔️                         |\n\nShort take:\n- Pros (GitLinks): total control, privacy, free self-hosting, unlimited links, and Git-based workflow for safe edits and collaboration. Great for people who want freedom from paywalls and vendor lock-in.\n- Cons (GitLinks): currently favors a simple file-based workflow rather than a full visual editor or built-in analytics — those can be added or used as optional hosted services.\n\n---\n\n## No paywalls — what that actually means\nMany hosted link services place basic features behind paid tiers (for example: limiting free users to 5 links, forcing branding, or charging extra for custom domains and removal of the platform logo). GitLinks takes a different approach:\n\n- Unlimited links: add as many link buttons as you want — there is no enforced cap in the project itself.\n- No mandatory paywall for basics: the project is open-source and self-hosted, so you don’t need to pay to use core features (links, dividers, custom CSS, favicon improvements).\n- Custom domains: GitHub Pages supports custom domains for free, so you can use your own domain without paying Linktree-style fees.\n- Full control: you can remove or replace branding, change styling, and version-control everything in Git.\n- Optional paid services: if you want analytics, a hosted visual editor, or managed backups, those can be offered separately — but they are opt-in, not required.\n\nWhy this works: because the code and content live in your repository, the project acts as a tool you control rather than a locked service. If you want hosted convenience, you can build it on top — but the core functionality remains free.\n\n---\n\n## How to edit (non-technical)\n- Each item in `user.json` becomes a button or a divider on your page.\n- To add a normal link, add an object like:\n```json\n{ \"name\": \"My Link\", \"url\": \"https://example.com\" }\n```\n- To add a divider (category label), add an object like:\n```json\n{ \"name\": \"spacer\", \"type\": \"spacer\", \"title\": \"Category 1\", \"color\": \"#ffffff\" }\n```\n- Place divider objects between links where you want grouped sections to appear.\n- Only change the `name`, `url`, or `title` and `color` fields — do not remove other parts of the file unless you know what you're doing.\n\nSample `user.json` (ready to copy/paste):\n```json\n{\n  \"githubUsername\": \"YOUR_GITHUB_NAME\",\n  \"links\": [\n    { \"name\": \"XYZ\", \"url\": \"https://example.com\" },\n    { \"name\": \"spacer\", \"type\": \"spacer\", \"title\": \"Category 1\", \"color\": \"#ffffff\" },\n    { \"name\": \"XYZ\", \"url\": \"https://example.com\" },\n    { \"name\": \"XYZ\", \"url\": \"https://example.com\" }\n  ]\n}\n```\n\n---\n\n## Expected behavior \u0026 timing\n- After you commit changes, GitHub Pages will publish the site. Changes usually appear in 30–90 seconds.\n- If you don't see updates, try a hard refresh in your browser (Ctrl+F5 or Cmd+Shift+R).\n- The script auto-fetches a fresh copy of `user.json` on each load, so updates show up quickly.\n\nTip for instant refresh during testing\n- We include a cache-busting query when fetching `user.json` (e.g. `user.json?t=123456789`) so most browsers load the newest version automatically. If edits still don’t appear, verify your commit on GitHub and then hard-refresh the page.\n\n---\n\n## Divider (spacer) details\n- Use `\"type\": \"spacer\"` to mark an object as a divider.\n- The optional `\"title\"` shows a label centered in the divider (e.g., \"Category 1\").\n- The optional `\"color\"` sets the divider and title color (use hex like `#ffffff`). Defaults to white if omitted.\n\nExample divider:\n```json\n{ \"name\": \"spacer\", \"type\": \"spacer\", \"title\": \"Socials\", \"color\": \"#00aced\" }\n```\n\n---\n\n## Accessibility \u0026 safety\n- Buttons and dividers are keyboard accessible.\n- Names and titles are escaped to prevent unsafe HTML.\n- External links open in a new tab (`target=\"_blank\"`) and use `rel=\"noopener noreferrer\"` for safety.\n\n---\n\n## Troubleshooting (simple)\n- Edits not showing: Wait up to 90 seconds, then hard refresh (Ctrl+F5 / Cmd+Shift+R).  \n- Mistyped JSON: If the site stops loading, open `user.json` in GitHub and undo your last change. Use the sample above as a correct template.  \n- Need help? Open an issue in this repo with a screenshot and your `user.json` content (don’t share secrets).\n\n---\n\n## Make it your own (recommended next steps)\n- Change only `user.json` to manage links; keep everything else default for easiest maintenance.\n- If you want a custom domain, add it in the repository Pages settings (Settings → Pages).\n- Consider using the \"Use this template\" button so other people can create their own copy with one click.\n- If you want a no-code UI later, we can add an optional visual editor that writes `user.json` to your repo (opt-in).\n\n---\n\nThanks for using GitLinks — unlimited links, no paywalls, and full control.\n","funding_links":["https://paypal.me/2players1gamer"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinyplayerss%2Fgitlinks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftinyplayerss%2Fgitlinks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftinyplayerss%2Fgitlinks/lists"}