{"id":25612448,"url":"https://github.com/ashesbloom/url_shortener","last_synced_at":"2026-04-10T11:31:03.083Z","repository":{"id":232218814,"uuid":"783688143","full_name":"ashesbloom/URL_Shortener","owner":"ashesbloom","description":"Takes a url and return the shorten one, keep track of total visits and total clicks","archived":false,"fork":false,"pushed_at":"2024-08-19T12:07:30.000Z","size":4209,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-22T00:28:31.678Z","etag":null,"topics":["ejs-templates","express-js","jwt-authentication","mongodb","mvc-architecture","nodejs"],"latest_commit_sha":null,"homepage":"https://urlshortener-production-dfbc.up.railway.app/ashes/home","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/ashesbloom.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}},"created_at":"2024-04-08T11:34:42.000Z","updated_at":"2024-08-19T12:07:34.000Z","dependencies_parsed_at":"2024-04-16T19:42:29.779Z","dependency_job_id":"9ffcc933-1a7f-43b3-a617-a25705bd916a","html_url":"https://github.com/ashesbloom/URL_Shortener","commit_stats":null,"previous_names":["ashesbloom/url_shortener"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ashesbloom/URL_Shortener","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashesbloom%2FURL_Shortener","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashesbloom%2FURL_Shortener/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashesbloom%2FURL_Shortener/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashesbloom%2FURL_Shortener/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ashesbloom","download_url":"https://codeload.github.com/ashesbloom/URL_Shortener/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ashesbloom%2FURL_Shortener/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":284021192,"owners_count":26933845,"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-11-12T02:00:06.336Z","response_time":59,"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":["ejs-templates","express-js","jwt-authentication","mongodb","mvc-architecture","nodejs"],"created_at":"2025-02-22T00:27:10.251Z","updated_at":"2025-11-12T11:02:51.056Z","avatar_url":"https://github.com/ashesbloom.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# URL Shortener 🌐\n\nA web application that shortens long URLs into compact, easy-to-share links. This project includes user authentication, click tracking, and an admin portal for managing statistics and user roles.\n\n## ✨ Features\n\n- ✂️ URL shortening\n- 🛠️ Custom short URL creation\n- 📊 Click tracking for each shortened URL\n- 🔐 User authentication and role management\n- ⚙️ Admin portal for statistics and user management\n- 🕒 3-day history retention for URL clicks\n- 🗑️ Ability to clear history (for users and admins)\n- 🧹 Admin capability to delete any entry\n\n## 🛠️ Technologies Used\n\n- Node.js\n- Express.js\n- MongoDB Atlas\n- EJS (Embedded JavaScript templating)\n- JavaScript\n- CSS\n- JWT for authentication\n\n## 📦 Dependencies\n\n```json\n{\n  \"dependencies\": {\n    \"cookie-parser\": \"^1.4.6\",\n    \"dotenv\": \"^16.4.5\",\n    \"ejs\": \"^3.1.10\",\n    \"express\": \"^4.19.2\",\n    \"jsonwebtoken\": \"^9.0.2\",\n    \"mongoose\": \"^8.3.0\",\n    \"nodemon\": \"^3.1.0\",\n    \"shortid\": \"^2.2.16\",\n    \"sweetalert\": \"^2.1.2\"\n  }\n}\n```\n\n## 🚀 Installation\n\n1. Clone the repository.\n2. Run `npm install` to install dependencies.\n3. Set up your MongoDB Atlas cluster and add the connection string to your `.env` file.\n4. Run `npm start` to start the server.\n\n## 💡 Usage\n\n1. Navigate to the homepage.\n2. Enter a long URL in the input field.\n3. Click \"Shorten\" to generate a short URL.\n4. Copy and share the shortened URL.\n\n## 🔧 Admin Portal\n\nAccess the admin portal to:\n\n- View overall statistics.\n- Manage user roles.\n- View and delete individual URL entries.\n- Clear history for all users.\n\n## ⚠️ Disclaimer\n\nThe length of the shortened URL ID may vary depending on the domain being used. While we aim for 8-character IDs, the actual length might be different to ensure uniqueness across the system.\n\n## 🤝 Contributing\n\nPull requests are welcome. For major changes, please open an issue first to discuss what you would like to change.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashesbloom%2Furl_shortener","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fashesbloom%2Furl_shortener","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fashesbloom%2Furl_shortener/lists"}