← All projects

Linky

URL shortener built with Spring Boot and Vue — create short links with one click, redirects with a 301.

  • Java
  • Spring Boot
  • Vue 3
  • PostgreSQL
  • Docker Compose

· github.com/carloscardoso05/linky

Overview

Linky is a classic URL shortener: paste a long URL, get a short code, share it. Simple by design — but built with a production-style full stack: Spring Boot API, PostgreSQL storage, and a Vue 3 frontend, all orchestrated by Docker Compose.

Linky app

Swagger UI

Features

  • POST /links (text/plain body) — creates a short link, returns shortCode and shortLink.
  • GET /links/{shortCode}301 redirect to the original URL.
  • Frontend form with copy-to-clipboard UX, styled with Tailwind CSS.
  • PostgreSQL persistence with Flyway-style JPA setup (Spring Data JPA).

Tech stack

  • Backend: Java 25, Spring Boot 3.5, Spring Data JPA, springdoc-openapi (Swagger)
  • Frontend: Vue 3, TypeScript, Vite, Tailwind CSS, Pinia, Vue Router
  • Infra: Docker Compose (postgres:18 + backend + frontend behind nginx)

Running locally

docker compose up --build
# frontend at http://localhost, API + Swagger at http://localhost:8080/swagger-ui.html

Why this project?

The project pairs two ecosystems (Java and Vue) behind one compose file, and the API is small enough to be documented fully by Swagger — a clean example of full-stack delivery. It’s also being reworked as an architecture/load-testing challenge.