Back to Projects

JavaScript

Link24 — Full-Stack URL Shortener

About this Project

A comprehensive full-stack URL shortening service designed for both anonymous and registered users. While anonymous users can quickly generate temporary short links, registered users unlock a personal dashboard with link history, custom slugs, expiration date control, and click tracking. The project is architected as a decoupled system: a Next.js frontend, a Node.js/Express REST API, and a MongoDB database, all containerised with Docker.

Screenshots

Key Features

  • User Authentication: Secure registration and login with JWT and bcrypt password hashing.
  • Public Link Shortening: Anonymous users can create short links with a random slug and a 30-day default expiration.
  • Authenticated Dashboard: Full history of all created links for logged-in users.
  • Custom Slugs & Expiration: Users define human-readable slugs and custom expiration periods.
  • CRUD Operations: Full create, read, update, and delete for personal links.
  • Click Tracking: Counts and displays click statistics per short link.

Technical Highlights

The backend is a RESTful API built with Node.js and Express.js, following a service-oriented architecture. Mongoose manages MongoDB data models; MongoDB's TTL index on expiresAt automates expired link deletion. The frontend is Next.js with Tailwind CSS and Cypress end-to-end tests. A GitLab CI pipeline runs backend (Jest/Supertest) and frontend tests on every push. The full stack is orchestrated with Docker Compose.

Outcome

A fully self-contained project demonstrating modern full-stack and DevOps practices — secure REST API design, containerised multi-service orchestration, and automated CI/CD. The most valuable takeaway was implementing the complete pipeline from code commit to verified build entirely through Docker and GitLab CI.