{"id":24617751,"url":"https://github.com/jacoblincool/certi","last_synced_at":"2025-07-13T10:35:47.500Z","repository":{"id":40440735,"uuid":"470278529","full_name":"JacobLinCool/Certi","owner":"JacobLinCool","description":"An configurable URL shortener for Certificates (and other things).","archived":false,"fork":false,"pushed_at":"2023-12-15T02:27:17.000Z","size":443,"stargazers_count":2,"open_issues_count":1,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2024-10-15T03:01:46.463Z","etag":null,"topics":["cli","cloudflare-workers","deta","url-shortener"],"latest_commit_sha":null,"homepage":"https://certi.jacoblin.cool","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/JacobLinCool.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":"2022-03-15T18:08:51.000Z","updated_at":"2022-08-26T05:00:04.000Z","dependencies_parsed_at":"2023-12-15T03:40:52.922Z","dependency_job_id":null,"html_url":"https://github.com/JacobLinCool/Certi","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FCerti","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FCerti/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FCerti/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JacobLinCool%2FCerti/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JacobLinCool","download_url":"https://codeload.github.com/JacobLinCool/Certi/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244308706,"owners_count":20432252,"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":["cli","cloudflare-workers","deta","url-shortener"],"created_at":"2025-01-24T23:40:33.512Z","updated_at":"2025-03-18T21:27:12.661Z","avatar_url":"https://github.com/JacobLinCool.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Certi\n\nAn configurable URL shortener for Certificates (and other things).\n\nIt has a core library and multiple distributions: CLI Tool, Cloudflare Workers, and Deta Macro.\n\n\u003e The URL of the Coursera certificate is too long, and putting it on the resume is breaking the layout, so I created this URL shortener.\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#usage\"\u003e Usage \u003c/a\u003e |\n    \u003ca href=\"#supported-certificates\"\u003e Supported Certificates \u003c/a\u003e |\n    \u003ca href=\"#endpoints\"\u003e Endpoints \u003c/a\u003e\n\u003c/p\u003e\n\n## Usage\n\n### Create a short URL\n\n```sh\ncurl https://certi.jacoblin.cool/create?cert=\u003ccertificate_url\u003e\u0026prefix=\u003cprefix\u003e\n```\n\n`cert`: The URL of the certificate.\n`prefix`: The prefix of the short URL. (optional, length: 0-16)\n\nsuccess:\n\n```json\n{\n  \"success\": true,\n  \"item\": {\n    \"prefix\": \"jacob-\",\n    \"key\": \"861523\",\n    \"cert\": \"https://www.coursera.org/account/accomplishments/certificate/RZU3FVL3SWJ4\",\n    \"del_code\": \"lpq9h2\",\n    \"created\": 1647366594944\n  },\n  \"url\": \"https://certi.jacoblin.cool/jacob-861523\"\n}\n```\n\nfailed:\n\n```json\n{\n  \"success\": false,\n  \"error\": \"Already Exists (or other error message)\",\n  \"url\": \"https://certi.jacoblin.cool/jacob-861523\"\n}\n```\n\n### Delete a short URL\n\n```sh\ncurl /delete?key=\u003ckey\u003e\u0026del_code=\u003cdelete_code\u003e\n```\n\nsuccess:\n\n```json\n{\n  \"success\": true,\n  \"item\": {\n    \"cert\": \"https://www.coursera.org/account/accomplishments/certificate/RZU3FVL3SWJ4\",\n    \"created\": 1647366594944,\n    \"del_code\": \"lpq9h2\",\n    \"key\": \"jacob-861523\",\n    \"prefix\": \"jacob-\"\n  }\n}\n```\n\nfailed:\n\n```json\n{\n  \"success\": false,\n  \"error\": \"Error Message\"\n}\n```\n\n## Supported Certificates\n\nNow it only supports [Coursera](https://www.coursera.org/) certificates:\n\n- `https://www.coursera.org/account/accomplishments/certificate/ABCDEFGHIJKL`\n- `https://www.coursera.org/account/accomplishments/specialization/certificate/ABCDEFGHIJKL`\n\nFeel free to open an issue or pull request if you want to support other certificates.\n\n## Endpoints\n\nThose are public endpoints:\n\n- `cert.deta.dev` (Hosted on [Deta](https://deta.sh/))\n- `certi.jacoblin.cool` (Alias of `cert.deta.dev`)\n- `certi.jacob.workers.dev` (Hosted on [Cloudflare Workers](https://workers.cloudflare.com/))\n\nYou can also host this service on your own domain.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacoblincool%2Fcerti","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjacoblincool%2Fcerti","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjacoblincool%2Fcerti/lists"}