4Links is a URL shortening service that allows users to create, manage, and track shortened URLs.
- Node.js
- Express
- MongoDB
- Clerk
-
Clone the repository:
git clone https://github.com/yourusername/4links-backend.git cd 4links-backend
-
Install dependencies:
npm install
-
Create a
.env
file based on the.env.example
:cp .env.example .env
-
Update the
.env
file with your MongoDB URI and other configuration settings.# MongoDB connection URI MONGODB_URI=your_mongodb_uri # Server port PORT=5000 # Clerk API keys for authentication and authorization CLERK_PUBLISHABLE_KEY=your_clerk_publishable_key CLERK_SECRET_KEY=your_clerk_secret_key
-
Start the server:
npm start
The server will be running on http://localhost:5000.
- Endpoint:
POST /api/shorten
- Description: Creates a shortened URL.
- Request Body:
{ "originalUrl": "https://example.com" }
- Response:
{ "shortUrl": "abc123" }
- Endpoint:
GET /api/all
- Description: Retrieves all URLs.
- Response:
[ { "originalUrl": "https://example.com", "shortUrl": "abc123" }, ... ]
- Endpoint:
GET /api/get-short-url
- Description: Retrieves a shortened URL for a given original URL.
- Request Query:
{ "originalUrl": "https://example.com" }
- Response:
{ "shortUrl": "abc123" }
- Endpoint:
GET /api/:shortUrl
- Description: Retrieves the original URL for a given shortened URL.
- Response:
{ "originalUrl": "https://example.com", "shortUrl": "abc123" }
- Endpoint:
PUT /api/:shortUrl
- Description: Updates the original URL for a given shortened URL.
- Request Body:
{ "originalUrl": "https://newexample.com" }
- Response:
{ "originalUrl": "https://newexample.com", "shortUrl": "abc123" }
- Endpoint:
DELETE /api/:shortUrl
- Description: Deletes a shortened URL.
- Response:
{ "message": "URL deleted" }
- Endpoint:
GET /api/r/:shortUrl
- Description: Redirects to the original URL associated with the shortened URL.
To use the 4Links backend package in your project, follow these steps:
npm install @khabzox/4links-backend
import express from "express";
import {
connectDB,
setupMiddleware,
createUrl,
readUrl,
updateUrl,
deleteUrl,
getAllUrls,
getShortenedUrl,
redirectUrl,
} from "@khabzox/4links-backend";
const app = express();
// Connect to MongoDB
connectDB();
// Setup middleware
setupMiddleware(app);
// Define routes
app.post("/shorten", createUrl);
app.get("/all", getAllUrls);
app.get("/get-short-url", getShortenedUrl);
app.get("/:shortUrl", readUrl);
app.put("/:shortUrl", updateUrl);
app.delete("/:shortUrl", deleteUrl);
app.get("/r/:shortUrl", redirectUrl);
const PORT = process.env.PORT || 5000;
app.listen(PORT, () => {
console.log(`Server running on port ${PORT}`);
});
- This project is licensed under the MIT License.