{"id":24830014,"url":"https://github.com/khabzox/4links-backend","last_synced_at":"2025-04-12T07:35:41.903Z","repository":{"id":274300417,"uuid":"922502974","full_name":"khabzox/4links-backend","owner":"khabzox","description":"4Links is a robust URL shortening service designed for creating, managing, and tracking shortened URLs. Whether you're looking to generate simple shortened links or need advanced functionality like tracking and URL management, 4Links offers a comprehensive backend to meet those needs.","archived":false,"fork":false,"pushed_at":"2025-01-27T15:34:23.000Z","size":124,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-03-26T02:43:07.515Z","etag":null,"topics":["backend","shorten-urls","shortener-service"],"latest_commit_sha":null,"homepage":"https://4links-backend.vercel.app/","language":"TypeScript","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/khabzox.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":"2025-01-26T11:50:15.000Z","updated_at":"2025-01-27T15:34:26.000Z","dependencies_parsed_at":null,"dependency_job_id":"0e1c23bc-4c7a-49bd-a0a3-53b75a9b98a1","html_url":"https://github.com/khabzox/4links-backend","commit_stats":null,"previous_names":["khabzox/4links-backend"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khabzox%2F4links-backend","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khabzox%2F4links-backend/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khabzox%2F4links-backend/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/khabzox%2F4links-backend/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/khabzox","download_url":"https://codeload.github.com/khabzox/4links-backend/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248535243,"owners_count":21120514,"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":["backend","shorten-urls","shortener-service"],"created_at":"2025-01-30T23:48:37.396Z","updated_at":"2025-04-12T07:35:41.888Z","avatar_url":"https://github.com/khabzox.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 4Links Backend\n\n4Links is a URL shortening service that allows users to create, manage, and track shortened URLs.\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n  - [Prerequisites](#prerequisites)\n  - [Installation](#installation)\n  - [Configuration](#configuration)\n  - [Running the Server](#running-the-server)\n- [API Documentation](#api-documentation)\n  - [Create a Shortened URL](#create-a-shortened-url)\n  - [Get All URLs](#get-all-urls)\n  - [Get a Shortened URL](#get-a-shortened-url)\n  - [Read a URL](#read-a-url)\n  - [Update a URL](#update-a-url)\n  - [Delete a URL](#delete-a-url)\n  - [Redirect to the Original URL](#redirect-to-the-original-url)\n- [License](#license)\n\n## Getting Started\n\n### Prerequisites\n\n- Node.js\n- Express\n- MongoDB\n- Clerk\n\n### Installation\n\n1. Clone the repository:\n\n   ```sh\n   git clone https://github.com/yourusername/4links-backend.git\n   cd 4links-backend\n   ```\n\n2. Install dependencies:\n\n   ```sh\n   npm install\n   ```\n\n### Configuration\n\n1. Create a `.env` file based on the `.env.example`:\n\n   ```sh\n   cp .env.example .env\n   ```\n\n2. Update the `.env` file with your MongoDB URI and other configuration settings.\n\n   ```sh\n   # MongoDB connection URI\n   MONGODB_URI=your_mongodb_uri\n\n   # Server port\n   PORT=5000\n\n   # Clerk API keys for authentication and authorization\n   CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key\n   CLERK_SECRET_KEY=your_clerk_secret_key\n   ```\n\n### Running the Server\n\n1. Start the server:\n\n   ```sh\n   npm start\n   ```\n\nThe server will be running on [http://localhost:5000](http://localhost:5000).\n\n## API Documentation\n\n### Create a Shortened URL\n\n- **Endpoint:** `POST /api/shorten`\n- **Description:** Creates a shortened URL.\n- **Request Body:**\n  ```json\n  {\n    \"originalUrl\": \"https://example.com\"\n  }\n  ```\n- **Response:**\n  ```json\n  {\n    \"shortUrl\": \"abc123\"\n  }\n  ```\n\n### Get All URLs\n\n- **Endpoint:** `GET /api/all`\n- **Description:** Retrieves all URLs.\n- **Response:**\n  ```json\n  [\n    {\n      \"originalUrl\": \"https://example.com\",\n      \"shortUrl\": \"abc123\"\n    },\n    ...\n  ]\n  ```\n\n### Get a Shortened URL\n\n- **Endpoint:** `GET /api/get-short-url`\n- **Description:** Retrieves a shortened URL for a given original URL.\n- **Request Query:**\n  ```json\n  {\n    \"originalUrl\": \"https://example.com\"\n  }\n  ```\n- **Response:**\n  ```json\n  {\n    \"shortUrl\": \"abc123\"\n  }\n  ```\n\n### Read a URL\n\n- **Endpoint:** `GET /api/:shortUrl`\n- **Description:** Retrieves the original URL for a given shortened URL.\n- **Response:**\n  ```json\n  {\n    \"originalUrl\": \"https://example.com\",\n    \"shortUrl\": \"abc123\"\n  }\n  ```\n\n### Update a URL\n\n- **Endpoint:** `PUT /api/:shortUrl`\n- **Description:** Updates the original URL for a given shortened URL.\n- **Request Body:**\n  ```json\n  {\n    \"originalUrl\": \"https://newexample.com\"\n  }\n  ```\n- **Response:**\n  ```json\n  {\n    \"originalUrl\": \"https://newexample.com\",\n    \"shortUrl\": \"abc123\"\n  }\n  ```\n\n### Delete a URL\n\n- **Endpoint:** `DELETE /api/:shortUrl`\n- **Description:** Deletes a shortened URL.\n- **Response:**\n  ```json\n  {\n    \"message\": \"URL deleted\"\n  }\n  ```\n\n### Redirect to the Original URL\n\n- **Endpoint:** `GET /api/r/:shortUrl`\n- **Description:** Redirects to the original URL associated with the shortened URL.\n\n## Example Usage\n\nTo use the 4Links backend package in your project, follow these steps:\n\n### Install the package:\n\n```sh\nnpm install @khabzox/4links-backend\n```\n\n### Import and use the functions in your project:\n\n```javascript\nimport express from \"express\";\nimport {\n  connectDB,\n  setupMiddleware,\n  createUrl,\n  readUrl,\n  updateUrl,\n  deleteUrl,\n  getAllUrls,\n  getShortenedUrl,\n  redirectUrl,\n} from \"@khabzox/4links-backend\";\n\nconst app = express();\n\n// Connect to MongoDB\nconnectDB();\n\n// Setup middleware\nsetupMiddleware(app);\n\n// Define routes\napp.post(\"/shorten\", createUrl);\napp.get(\"/all\", getAllUrls);\napp.get(\"/get-short-url\", getShortenedUrl);\napp.get(\"/:shortUrl\", readUrl);\napp.put(\"/:shortUrl\", updateUrl);\napp.delete(\"/:shortUrl\", deleteUrl);\napp.get(\"/r/:shortUrl\", redirectUrl);\n\nconst PORT = process.env.PORT || 5000;\napp.listen(PORT, () =\u003e {\n  console.log(`Server running on port ${PORT}`);\n});\n```\n\n### License\n\n- This project is licensed under the MIT License.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhabzox%2F4links-backend","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkhabzox%2F4links-backend","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkhabzox%2F4links-backend/lists"}