{"id":23207127,"url":"https://github.com/Edrisym/Blink","last_synced_at":"2025-08-19T02:33:33.503Z","repository":{"id":255537758,"uuid":"852367306","full_name":"Edrisym/Blink","owner":"Edrisym","description":"Shortener is a high-performance, easy-to-use, and free URL shortening service built with .NET Core, MongoDB, Redis, and YARP Reverse Proxy. It allows users to create and manage short URLs, track click statistics, and integrate seamlessly with other applications through a RESTful API. ","archived":false,"fork":false,"pushed_at":"2025-05-10T07:56:51.000Z","size":325,"stargazers_count":4,"open_issues_count":7,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-05-10T08:32:06.748Z","etag":null,"topics":["fluentvalidation","hashing-algorithm","md5","sha256","shortener","system-design"],"latest_commit_sha":null,"homepage":"","language":"C#","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/Edrisym.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,"zenodo":null}},"created_at":"2024-09-04T17:26:03.000Z","updated_at":"2025-05-10T07:56:54.000Z","dependencies_parsed_at":"2024-09-17T22:41:20.470Z","dependency_job_id":"48aa8f6a-c470-4efd-863b-a183318db4ef","html_url":"https://github.com/Edrisym/Blink","commit_stats":null,"previous_names":["edrisym/shortener","edrisym/blink"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/Edrisym/Blink","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edrisym%2FBlink","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edrisym%2FBlink/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edrisym%2FBlink/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edrisym%2FBlink/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Edrisym","download_url":"https://codeload.github.com/Edrisym/Blink/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Edrisym%2FBlink/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":271090175,"owners_count":24697529,"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-19T02:00:09.176Z","response_time":63,"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":["fluentvalidation","hashing-algorithm","md5","sha256","shortener","system-design"],"created_at":"2024-12-18T17:17:48.342Z","updated_at":"2025-08-19T02:33:33.485Z","avatar_url":"https://github.com/Edrisym.png","language":"C#","readme":"\n\u003ca name=\"readme-top\"\u003e\u003c/a\u003e\n\u003c!--\n*** Thanks for checking out the Best-README-Template. If you have a suggestion\n*** that would make this better, please fork the repo and create a pull request\n*** or simply open an issue with the tag \"enhancement\".\n*** Don't forget to give the project a star!\n*** Thanks again! Now go create something AMAZING! :D\n--\u003e\n\n\n\n\u003c!-- PROJECT SHIELDS --\u003e\n\u003c!--\n*** I'm using markdown \"reference style\" links for readability.\n*** Reference links are enclosed in brackets [ ] instead of parentheses ( ).\n*** See the bottom of this document for the declaration of the reference variables\n*** for contributors-url, forks-url, etc. This is an optional, concise syntax you may use.\n*** https://www.markdownguide.org/basic-syntax/#reference-style-links\n--\u003e\n\n\u003cdiv align=\"center\"\u003e\n  \u003ca href=\"https://github.com/Edrisym/Blink/graphs/contributors\"\u003e\u003cimg src=\"https://img.shields.io/github/contributors/Edrisym/Blink?style=for-the-badge\" alt=\"Contributors\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Edrisym/Blink/network/members\"\u003e\u003cimg src=\"https://img.shields.io/github/forks/Edrisym/Blink?style=for-the-badge\" alt=\"Forks\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Edrisym/Blink/stargazers\"\u003e\u003cimg src=\"https://img.shields.io/github/stars/Edrisym/Blink?style=for-the-badge\" alt=\"Stargazers\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Edrisym/Blink/issues\"\u003e\u003cimg src=\"https://img.shields.io/github/issues/Edrisym/Blink?style=for-the-badge\" alt=\"Issues\"\u003e\u003c/a\u003e\n  \u003ca href=\"https://github.com/Edrisym/Blink/blob/main/LICENSE\"\u003e\u003cimg src=\"https://img.shields.io/github/license/Edrisym/Blink?style=for-the-badge\" alt=\"MIT License\"\u003e\u003c/a\u003e\n\u003c/div\u003e\n\n\n# Blink\n\n## Overview\nBlink is a high-performance, easy-to-use, and free URL shortening service built with **.NET Core**, **MongoDB**, **Redis**, and **YARP Reverse Proxy**. It allows users to create and manage short URLs, track click statistics, and integrate seamlessly with other applications through a RESTful API. This solution is perfect for anyone needing a reliable, self-hosted URL shortener with advanced monitoring and logging.\n\n## Features\n✅ **Fast URL Shortening** – Uses Redis for quick access and caching.    \n✅ **YARP Reverse Proxy** – Efficient API gateway and load balancing.        \n✅ **Traditional Controllers \u0026 RESTful API** – Ensures better structure and maintainability.     \n✅ **Logging \u0026 Monitoring** – Integrated with **Serilog**, planned **APM, Kibana, Logstash, and ELK** for advanced tracking.      \n✅ **Unit Tests** – Ensures reliability and code quality.        \n✅ **User Authentication (Planned)** – Users will be able to manage their links.        \n✅ **Dashboard for URL Management (Planned)** – A web-based UI to manage links.  \n✅ **CI/CD Pipeline (Planned)** – Automate testing and deployment.   \n✅ **Docker Compose (Planned)** – Simplify deployment with containerized services.\n\n## Tech Stack\n- **Backend:** .NET Core with RESTful API\n- **Database:** MongoDB\n- **Caching:** Redis\n- **API Gateway:** YARP Reverse Proxy\n- **Logging:** Serilog, with planned integration for monitoring tools such as Kibana, Logstash, ELK, or APM.\n- **Testing:** Unit Tests\n- **CI/CD:** GitHub Actions (Planned)\n- **Deployment:** Docker Compose (Planned)\n\n## Installation \u0026 Setup\n\n### Prerequisites\n- .NET SDK (Latest version)\n- Redis Server (Locally or via Docker)\n- MongoDB (Locally or via Cloud)\n- YARP Reverse Proxy configured\n\n### Clone the Repository\n```sh\n git clone https://github.com/Edrisym/Blink.git\n cd Blink\n```\n\n### Configure Redis\nEnsure Redis is running on the expected port (default: `6379`). If using Docker:\n```sh\ndocker run --name redis -d -p 6379:6379 redis:latest\n```\n\n### Configure MongoDB\nEnsure MongoDB is running locally or on a cloud service (like MongoDB Atlas).\n\n### Run the Project\n```sh\ndotnet run\n```\n\n## API Endpoints\n\n### Shorten a URL\n```http\nPOST /{longUrl}\n{\n    \"url\": \"https://example.com\"\n}\n```\n**Response:**\n```json\n{\n    \"shortUrl\": \"http://yourdomain.com/abc123\"\n}\n```\n\n### Retrieve a Shortened URL\n```http\nGET /{shortCode}\n```\n\n### List All Shortened URLs\n```http\nGET /\n```\n\n## Planned Improvements\n- **User Authentication** – Allow users to manage their shortened URLs.\n- **Admin Dashboard** – A UI for managing and monitoring short links.\n- **Rate Limiting** – Prevent API abuse using Redis.\n- **Health Check Endpoints** – Monitor Redis, MongoDB, and API status.\n- **Enhanced Logging \u0026 Monitoring** – Integrate **Serilog, APM, Kibana, Logstash, and ELK**.\n- **CI/CD Pipeline** – Automate builds and deployments.\n- **Docker Compose** – Simplify containerized deployment.\n\n## Contribution\nAny contributions are welcome! Feel free to submit **issues** and **merge requests** to improve the project. Let's collaborate and make this an even better service!\n\n## License\nMIT License. See `LICENSE` for details.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEdrisym%2FBlink","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FEdrisym%2FBlink","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FEdrisym%2FBlink/lists"}