{"id":13456016,"url":"https://github.com/spoo-me/url-shortener","last_synced_at":"2025-04-25T23:30:35.541Z","repository":{"id":190034700,"uuid":"657776061","full_name":"spoo-me/url-shortener","owner":"spoo-me","description":"spoo.me is a free and easy-to-use URL shortener that lets you create short links for any website. You can choose your own alias, set a password, and limit the number of clicks.","archived":false,"fork":false,"pushed_at":"2025-04-25T21:00:57.000Z","size":13155,"stargazers_count":116,"open_issues_count":22,"forks_count":30,"subscribers_count":5,"default_branch":"main","last_synced_at":"2025-04-25T21:31:53.999Z","etag":null,"topics":["flask","mongodb","python","self-hosting","url-shortener-api","url-shortner","url-statistics"],"latest_commit_sha":null,"homepage":"https://spoo.me","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/spoo-me.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"contributing.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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":"2023-06-23T20:33:27.000Z","updated_at":"2025-04-25T21:00:21.000Z","dependencies_parsed_at":"2023-12-29T12:34:34.290Z","dependency_job_id":"a5292e32-348f-40df-992b-9c84ff9e14d7","html_url":"https://github.com/spoo-me/url-shortener","commit_stats":null,"previous_names":["zingzy/jinxed.cf","spoo-me/url-shortener"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoo-me%2Furl-shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoo-me%2Furl-shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoo-me%2Furl-shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/spoo-me%2Furl-shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/spoo-me","download_url":"https://codeload.github.com/spoo-me/url-shortener/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250912660,"owners_count":21506865,"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":["flask","mongodb","python","self-hosting","url-shortener-api","url-shortner","url-statistics"],"created_at":"2024-07-31T08:01:14.909Z","updated_at":"2025-04-25T23:30:35.535Z","avatar_url":"https://github.com/spoo-me.png","language":"Python","funding_links":[],"categories":["Python","Tools \u0026 Resources"],"sub_categories":["82. Spoo.ME"],"readme":"\u003cimage src=\"https://spoo.me/static/images/banner-rounded.png\"\u003e\n\n\u003ch3 align=\"center\"\u003espoo.me\u003c/h3\u003e\n\u003cp align=\"center\"\u003eShorten Your Url not Your Possibilities 🚀\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n    \u003ca href=\"#-features\"\u003e\u003ckbd\u003e🔥 Features\u003c/kbd\u003e\u003c/a\u003e\n    \u003ca href=\"#-endpoints\"\u003e\u003ckbd\u003e📌 Endpoints\u003c/kbd\u003e\u003c/a\u003e\n    \u003ca href=\"https://spoo.me/api\" target=\"_blank\"\u003e\u003ckbd\u003e🛠️ API Docs\u003c/kbd\u003e\u003c/a\u003e\n    \u003ca href=\"#-getting-started\"\u003e\u003ckbd\u003e🚀 Getting Started\u003c/kbd\u003e\u003c/a\u003e\n    \u003ca href=\"#-contributing\"\u003e\u003ckbd\u003e🤝 Contributing\u003c/kbd\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n\u003ca href=\"https://status.spoo.me\"\u003e\u003cimg src=\"https://uptime.betterstack.com/status-badges/v1/monitor/qlmf.svg\"\u003e\u003c/a\u003e\n\u003cimg src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fspoo.me%2Fmetric\u0026query=%24.total-shortlinks\u0026label=Links%20Shortened\u0026color=6a5cf4\u0026cacheSeconds=60\" alt=\"Total URLs Shortened\"\u003e\n\u003cimg src=\"https://img.shields.io/badge/dynamic/json?url=https%3A%2F%2Fspoo.me%2Fmetric\u0026query=%24.total-clicks\u0026label=Clicks%20Redirected\u0026color=6a5cf4\u0026cacheSeconds=60\" alt=\"Total Clicks Redirected\"\u003e\n\u003ca href=\"https://spoo.me/discord\"\u003e\u003cimg src=\"https://img.shields.io/discord/1192388005206433892?logo=discord\" alt=\"Discord\"\u003e\u003c/a\u003e\n\u003ca href=\"https://twitter.com/spoo_me\"\u003e\u003cimg src=\"https://img.shields.io/twitter/follow/spoo_me?logo=x\u0026label=%40spoo_me\u0026color=0bf\" alt=\"X (formerly Twitter) Follow\"\u003e\u003c/a\u003e\n\u003c/p\u003e\n\n# ⚡ Introduction\n\n**spoo.me** is a free, open-source service for shortening URLs. It offers URL statistics, a free API, and customization options. You can create custom `slugs`, add `password protection`, and manage `link lifespans`.\n\n# 🔥 Features\n\n- `Custom Slugs` - Create custom slugs for your URLs 🎯\n- `Emoji Slugs` - Use emojis as slugs for your URLs 😃\n- `Password Protection` - Protect your URLs with a password 🔒\n- `Link Max Clicks` - Set a maximum number of clicks for your URLs 📈\n- `URL Statistics` - View detailed statistics for your URLs 📊\n- `BOT Tracking` - Track bot clicks on your URLs 🤖\n- `API` - A free and open-sourced API for URL shortening and statistics 🛠️\n- `Export Click Data` - Export click data as a CSV, JSON, XLSX, or XML file 📤\n- `Open Source` - spoo.me is open-sourced and free to use 📖\n- `Absolutely Free` - No hidden costs, no premium plans, no limitations 💸\n- `No Registration` - No need to register an account to use spoo.me 📝\n- `Self Hosting` - You can host spoo.me on your own server 🏠\n\n# 📌 Endpoints\n\nThe basic structure for accessing a shortened URL is: `https://spoo.me/\u003cshort_code\u003e`\n\n**Example** - **https://spoo.me/ga**\n\n## 🔐 Accessing Password-Protected URLs\n\nFor password-protected URLs, **use the same basic structure**. This redirects to a **password entry page**.\n\n**Example** - **https://spoo.me/exa** \u003cbr/\u003e\n**Password** - \u003ckbd\u003eExample@12\u003c/kbd\u003e\n\n\u003e [!TIP]\n\u003e Bypass the password entry page by appending the password to the URL parameters - `https://spoo.me/\u003cshort_code\u003e?password=\u003cpassword\u003e`\n\n## 📈 Checking URL Statistics\n\nTo view the statistics for a URL, use the following structure: `https://spoo.me/stats/\u003cshort_code\u003e`\n\n**Example** - **https://spoo.me/stats/ga**\n\n\u003e [!NOTE]\n\u003e You won't be able to view statistics for a password-protected page unless you provide its password.\n\n# 🛠️ API Docs\n\nSpoo.me offers a free, open-source API for URL shortening and statistics. Check it out below:\n\n|[spoo.me API](https://spoo.me/api)|\n|---|\n\n# 🚀 Getting Started\n\n\nTo self-host spoo.me on your server, follow the this **detailed** guide:\n\n|[Self-Hosting Guide 🏠](https://spoo.me/docs/self-hosting)|\n|---|\n\n\n\u003cdetails\u003e\n\n\u003csummary\u003eExpand this for a Quick Start\u003c/summary\u003e\n\n## Method 1 - Docker (Recommended)\n\n### 📋 Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/) 🐳\n\n### 📂 Clone the repository (Docker Method)\n\n```bash\ngit clone https://github.com/spoo-me/url-shortener.git\n```\n\n### Rename .env.example to .env\n\n```bash\nmv .env.example .env\n```\n\n### ➕ Adding environment variables to .env file\n\n```bash\nMONGODB_URI=\u003cyour_MONGODB_URI\u003e\nCONTACT_WEBHOOK=\u003cvalid_webhook_URI\u003e\nURL_REPORT_WEBHOOK=\u003cvalid_webhook_URI\u003e\n```\n\n\u003e [!NOTE]\n\u003e With this method, you can either use a cloud service like [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) to store the data remotely or you can use a local MongoDB instance.\n\u003e If you want to use a local MongoDB instance, your MongoDB URI would be `mongodb://localhost:27017/`.\n\n### 🚀 Starting the server\n\n```bash\ndocker-compose up\n```\n\n## Method 2 - Manual\n\n### 📋 Prerequisites\n\n- [MongoDB](https://www.mongodb.com/try/download/community) 🌿\n  - MongoDB is only required if you want to store the **data locally**. You can also use a cloud service like [MongoDB Atlas](https://www.mongodb.com/cloud/atlas) to store the data remotely.\n- [Python](https://www.python.org/downloads/) 🐍\n- [PIP](https://pip.pypa.io/en/stable/installing/) 📦\n- [Virtualenv](https://pypi.org/project/virtualenv/) (Optional) 🌐\n\n### 📂 Clone the repository\n\n```bash\ngit clone https://github.com/spoo-me/url-shortener.git\n```\n\n### Creating a virtual environment (Optional)\n\n```bash\npython3 -m venv venv\n```\n\n### Activate the virtual environment (Optional)\n\n```bash\nsource venv/bin/activate\n```\n\n### 📦 Install dependencies\n\n```bash\npip install -r requirements.txt\n```\n\n### Rename .env.example to .env\n\n```bash\nmv .env.example .env\n```\n\n### ➕ Adding environment variables to .env file\n\n```bash\nMONGODB_URI=\u003cyour_MONGODB_URI\u003e\nCONTACT_WEBHOOK=\u003cvalid_webhook_URI\u003e\nURL_REPORT_WEBHOOK=\u003cvalid_webhook_URI\u003e\n```\n\n\u003e [!NOTE]\n\u003e If you installed MongoDB locally, your MongoDB URI would be `mongodb://localhost:27017/` or if you are using MongoDB Atlas, you can find your MongoDB URI in the **Connect** tab of your cluster.\n\n### 🚀 Starting the server\n\n```bash\npython main.py\n```\n\n### 🌐 Access the server\n\nOpen your browser and go to `http://localhost:8000` to access the **spoo.me** URL shortener.\n\n\u003c/details\u003e\n\n# 🤝 Contributing\n\n**Contributions are always welcome!** 🎉 Here's how you can contribute:\n\n- Bugs are logged using the github issue system. To report a bug, simply [open a new issue](https://github.com/spoo-me/url-shortener/issues/new).\n- Follow the [contribution guidelines](contributing.md) to get started.\n- Make a [pull request](https://github.com/spoo-me/url-shortener/pull) for any feature or bug fix.\n\n\u003e [!IMPORTANT]\n\u003e For any type of support or queries, feel free to reach out to us at \u003ckbd\u003e[✉️ support@spoo.me](mailto:support@spoo.me)\u003c/kbd\u003e\n\n# 👀 Visual Previews\n\n**Main Page**\n\n[![spoo me main page](https://raw.githubusercontent.com/spoo-me/url-shortener/main/static/previews/main.png)](https://spoo.me)\n\n**Result Page**\n\n[![spoo me result page](https://raw.githubusercontent.com/spoo-me/url-shortener/main/static/previews/result.png)](https://spoo.me/result/ga)\n\n**Stats Page**\n\n[![image](https://raw.githubusercontent.com/spoo-me/url-shortener/main/static/previews/stats.png)](https://spoo.me/stats/ga)\n\n**API Page**\n\n[![image](https://raw.githubusercontent.com/spoo-me/url-shortener/main/static/previews/api.png)](https://spoo.me/api)\n\n# Repo Activity\n![Contribution Charts](https://repobeats.axiom.co/api/embed/48a40934896cbcaff2812e80478ebb701ee49dd4.svg)\n\n\u003cbr\u003e\u003cbr\u003e\n\n\u003cpicture\u003e\n  \u003csource media=\"(prefers-color-scheme: dark)\" srcset=\"https://api.star-history.com/svg?repos=spoo-me/url-shortener\u0026type=Date\u0026theme=dark\" /\u003e\n  \u003cimg alt=\"Star History Chart\" src=\"https://api.star-history.com/svg?repos=spoo-me/url-shortener\u0026type=Date\" /\u003e\n\u003c/picture\u003e\n\n---\n\n\u003ch6 align=\"center\"\u003e\n\u003cimg src=\"https://spoo.me/static/images/favicon.png\" height=30 title=\"Spoo.me Copyright\"\u003e\n\u003cbr\u003e\n© spoo.me . 2024\n\nAll Rights Reserved\u003c/h6\u003e\n\n\u003cp align=\"center\"\u003e\n\t\u003ca href=\"https://github.com/spoo-me/url-shortener/blob/master/LICENSE.txt\"\u003e\u003cimg src=\"https://img.shields.io/static/v1.svg?style=for-the-badge\u0026label=License\u0026message=APACHE-2.0\u0026logoColor=d9e0ee\u0026colorA=363a4f\u0026colorB=b7bdf8\"/\u003e\u003c/a\u003e\n\u003c/p\u003e","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoo-me%2Furl-shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fspoo-me%2Furl-shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fspoo-me%2Furl-shortener/lists"}