{"id":16701079,"url":"https://github.com/scriptex/url-shortener","last_synced_at":"2025-08-17T01:32:21.410Z","repository":{"id":37900585,"uuid":"316338481","full_name":"scriptex/url-shortener","owner":"scriptex","description":"My personal URL shortener","archived":false,"fork":false,"pushed_at":"2025-07-06T07:13:30.000Z","size":471,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-06T08:28:12.375Z","etag":null,"topics":["redirect","url-shortener"],"latest_commit_sha":null,"homepage":"https://atanas.info/portfolio/open-source/url-shortener","language":"Nunjucks","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/scriptex.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,"zenodo":null},"funding":{"github":["scriptex"],"patreon":"atanas","open_collective":null,"ko_fi":"scriptex","tidelift":null,"community_bridge":null,"liberapay":"scriptex","issuehunt":"scriptex","otechie":null,"custom":["paypal.me/scriptex","revolut.me/scriptex"]}},"created_at":"2020-11-26T21:17:38.000Z","updated_at":"2025-07-06T07:13:32.000Z","dependencies_parsed_at":"2022-08-19T21:50:18.450Z","dependency_job_id":"7ace334e-970f-4743-917e-5ce6bcfe8713","html_url":"https://github.com/scriptex/url-shortener","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/scriptex/url-shortener","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptex%2Furl-shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptex%2Furl-shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptex%2Furl-shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptex%2Furl-shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/scriptex","download_url":"https://codeload.github.com/scriptex/url-shortener/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/scriptex%2Furl-shortener/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270796229,"owners_count":24647320,"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","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":["redirect","url-shortener"],"created_at":"2024-10-12T18:28:29.604Z","updated_at":"2025-08-17T01:32:21.384Z","avatar_url":"https://github.com/scriptex.png","language":"Nunjucks","readme":"[![Github Build](https://github.com/scriptex/url-shortener/workflows/Build/badge.svg)](https://github.com/scriptex/url-shortener/actions?query=workflow%3ABuild)\n[![Codacy Badge](https://app.codacy.com/project/badge/Grade/34d3d75710534dc6a38c3584a1dcd068)](https://www.codacy.com/gh/scriptex/url-shortener/dashboard?utm_source=github.com\u0026utm_medium=referral\u0026utm_content=scriptex/url-shortener\u0026utm_campaign=Badge_Grade)\n[![Codebeat Badge](https://codebeat.co/badges/d765a4c8-2c0e-44f2-89c3-fa364fdc14e6)](https://codebeat.co/projects/github-com-scriptex-url-shortener-master)\n[![CodeFactor Badge](https://www.codefactor.io/repository/github/scriptex/url-shortener/badge)](https://www.codefactor.io/repository/github/scriptex/url-shortener)\n[![DeepScan grade](https://deepscan.io/api/teams/3574/projects/5257/branches/40799/badge/grade.svg)](https://deepscan.io/dashboard#view=project\u0026tid=3574\u0026pid=5257\u0026bid=40799)\n[![Analytics](https://ga-beacon-361907.ew.r.appspot.com/UA-83446952-1/github.com/scriptex/url-shortener/README.md?pixel)](https://github.com/scriptex/url-shortener/)\n\n# Personal URL shortener\n\n## Visitor stats\n\n![GitHub stars](https://img.shields.io/github/stars/scriptex/url-shortener?style=social)\n![GitHub forks](https://img.shields.io/github/forks/scriptex/url-shortener?style=social)\n![GitHub watchers](https://img.shields.io/github/watchers/scriptex/url-shortener?style=social)\n![GitHub followers](https://img.shields.io/github/followers/scriptex?style=social)\n\n## Code stats\n\n![GitHub code size in bytes](https://img.shields.io/github/languages/code-size/scriptex/url-shortener)\n![GitHub repo size](https://img.shields.io/github/repo-size/scriptex/url-shortener?style=plastic)\n![GitHub language count](https://img.shields.io/github/languages/count/scriptex/url-shortener?style=plastic)\n![GitHub top language](https://img.shields.io/github/languages/top/scriptex/url-shortener?style=plastic)\n![GitHub last commit](https://img.shields.io/github/last-commit/scriptex/url-shortener?style=plastic)\n\n\n## Manage Links\n\nLinks are managed through [`src/links.json`](src/links.json), which is seeded\nwith a few examples to start:\n\n```json\n{\n\t\"/\": \"https://atanas.info\",\n\t\"in\": \"https://linkedin.com/in/scriptex\",\n\t\"tw\": \"https://twitter.com/scriptexbg\"\n}\n```\n\nIt couldn't be simpler: the key is the \"shortlink\" path that gets redirected,\nand the value is the target URL. Keys can be as short or as long as you want,\nusing whatever mixture of characters you want. `/` is a special entry for\nredirecting the root path.\n\nGo ahead and make an edit, then commit and push to your repository. The hosting\nprovider you chose above should automatically build and deploy your change.\nThat's it!\n\n### Config\n\nEnvironment variables are used to set config options. There is only one at this\npoint:\n\n| Variable | Description                                                        | Values   | Default |\n| -------- | ------------------------------------------------------------------ | -------- | ------- |\n| `USE_JS` | Whether to redirect with JavaScript instead of a `\u003cmeta\u003e` refresh. | `1`, `0` | `0`     |\n\n### Install Manually\n\nTo install somewhere else, or just on your own machine:\n\n1. Fork this repository to create your own copy and clone to your machine.\n\n2. Make sure you have a compatible version of [Node.js](https://nodejs.org/)\n   (see `engines.node` in [`package.json`](package.json)).\n   [nvm](https://github.com/nvm-sh/nvm) is the recommended installation method\n   on your own machine:\n\n    ```bash\n    $ nvm install\n    ```\n\n3. Install dependencies with npm:\n\n    ```bash\n    $ npm install\n    ```\n\n4. Build the static site:\n\n    ```bash\n    $ npm run build\n    ```\n\n5. Deploy the generated `_site` directory to its final destination.\n\n## Development\n\nThe following includes a few instructions for developing. For 11ty-specific\ndetails – the static site generator that powers the url shortener – see their\n[docs](https://www.11ty.dev/docs/).\n\n### Install\n\nFollow the \"Install Manually\" section above to setup on your own machine.\n\n### Start\n\nStart the development server:\n\n```bash\n$ npm run dev\n```\n\n### Code Style\n\n[Prettier](https://prettier.com/) is setup to enforce a consistent code style.\nIt's highly recommended to\n[add an integration to your editor](https://prettier.io/docs/en/editors.html)\nthat automatically formats on save.\n\nTo run via the command line:\n\n```bash\n$ npm run lint\n```\n\n## Releasing\n\nAfter development is done in the `development` branch and is ready for release,\nit should be merged into the `master` branch, where the latest release code\nlives. [Release It!](https://github.com/release-it/release-it) is then used to\ninteractively orchestrate the release process:\n\n```bash\n$ npm run release\n```\n\n---\n\n\u003cdiv align=\"center\"\u003e\n    Connect with me:\n\u003c/div\u003e\n\n\u003cbr /\u003e\n\n\u003cdiv align=\"center\"\u003e\n    \u003ca href=\"https://atanas.info\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/logo.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"mailto:hi@atanas.info\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/email.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://www.linkedin.com/in/scriptex/\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/linkedin.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://github.com/scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/github.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://gitlab.com/scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/gitlab.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://twitter.com/scriptexbg\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/twitter.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://www.npmjs.com/~scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/npm.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://www.youtube.com/user/scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/youtube.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://stackoverflow.com/users/4140082/atanas-atanasov\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/stackoverflow.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://codepen.io/scriptex/\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/codepen.svg\" width=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://profile.codersrank.io/user/scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/codersrank.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n    \u0026nbsp;\n    \u003ca href=\"https://linktr.ee/scriptex\"\u003e\n        \u003cimg src=\"https://raw.githubusercontent.com/scriptex/socials/master/styled-assets/linktree.svg\" height=\"20\" alt=\"\"\u003e\n    \u003c/a\u003e\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\nSupport and sponsor my work:\n\u003cbr /\u003e\n\u003cbr /\u003e\n\u003ca href=\"https://twitter.com/intent/tweet?text=Checkout%20this%20awesome%20developer%20profile%3A\u0026url=https%3A%2F%2Fgithub.com%2Fscriptex\u0026via=scriptexbg\u0026hashtags=software%2Cgithub%2Ccode%2Cawesome\" title=\"Tweet\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Tweet-Share_my_profile-blue.svg?logo=twitter\u0026color=38A1F3\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://paypal.me/scriptex\" title=\"Donate on Paypal\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Donate-Support_me_on_PayPal-blue.svg?logo=paypal\u0026color=222d65\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://revolut.me/scriptex\" title=\"Donate on Revolut\"\u003e\n\t\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/revolut.json\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://patreon.com/atanas\" title=\"Become a Patron\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Become_Patron-Support_me_on_Patreon-blue.svg?logo=patreon\u0026color=e64413\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://ko-fi.com/scriptex\" title=\"Buy Me A Coffee\"\u003e\n\t\u003cimg src=\"https://img.shields.io/badge/Donate-Buy%20me%20a%20coffee-yellow.svg?logo=ko-fi\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://liberapay.com/scriptex/donate\" title=\"Donate on Liberapay\"\u003e\n\t\u003cimg src=\"https://img.shields.io/liberapay/receives/scriptex?label=Donate%20on%20Liberapay\u0026logo=liberapay\" /\u003e\n\u003c/a\u003e\n\n\u003ca href=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/bitcoin.json\" title=\"Donate Bitcoin\"\u003e\n\t\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/bitcoin.json\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/etherium.json\" title=\"Donate Etherium\"\u003e\n\t\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/etherium.json\" /\u003e\n\u003c/a\u003e\n\u003ca href=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/shiba-inu.json\" title=\"Donate Shiba Inu\"\u003e\n\t\u003cimg src=\"https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/scriptex/scriptex/master/badges/shiba-inu.json\" /\u003e\n\u003c/a\u003e\n\u003c/div\u003e\n","funding_links":["https://github.com/sponsors/scriptex","https://patreon.com/atanas","https://ko-fi.com/scriptex","https://liberapay.com/scriptex","https://issuehunt.io/r/scriptex","paypal.me/scriptex","revolut.me/scriptex","https://paypal.me/scriptex","https://liberapay.com/scriptex/donate"],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptex%2Furl-shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fscriptex%2Furl-shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fscriptex%2Furl-shortener/lists"}