Case study backend PHP

URL Shortener

Kontekst: małe REST API do skracania linków. Problemem jest to, że nawet prosty endpoint potrzebuje walidacji URL, własnych aliasów, powtarzalnego shorten flow i statystyk kliknięć.

Case study

Zakres techniczny

Część repozytoriów jest prywatna do czasu zamknięcia prac. Zakres projektu, decyzje techniczne i scenariusze działania są opisane na stronie. Kod mogę omówić na rozmowie technicznej.

01

Problem

  • Skracacz linków musi generować stabilne krótkie kody, walidować wejście i nie tworzyć duplikatów dla tego samego adresu.
  • Ryzyka projektu to niepoprawne URL-e, kolizje aliasów, rozbieżna logika między web i CLI oraz brak widoczności w kliknięciach.
02

Decyzja techniczna

  • Service layer, reverse lookup dla ponownego skracania, walidacja aliasów, osobny ClickTracker i granica persystencji możliwa do wymiany.
  • UrlShortenerService koordynuje walidację, reverse lookup, zapis i generowanie kodu, dzięki czemu entrypointy pozostają cienkie.
  • Repozytoria plikowe ukrywają persystencję za interfejsami, a ClickTracker oddziela redirect od rejestrowania statystyk.
03

Efekt

  • Projekt pokazuje dyscyplinę w małym API: przewidywalny redirect, brak duplikatów dla tego samego adresu, statystyki kliknięć i proste miejsce na zmianę storage.
  • Generowanie kodów Base62, walidacja URL i obsługa custom aliasów.
  • Wspólna logika web/CLI dla skracania, odczytu i statystyk.
  • Click tracking oraz prosty endpoint statystyk dla skróconych linków.
04

Stack

  • PHP / REST API / Base62 / Stats
  • composer install
  • composer serve
  • composer demo-idempotency