Link Shortener — FAS @ UniTN

Self-hosted URL shortener with a production-grade observability stack

What is this project?

A self-hosted link shortener built as the group project for the System Administration Fundamentals course at UniTN. The Flask application exposes a REST API (documented with Swagger/OpenAPI) to create and resolve short links, persisting data in MySQL. The full stack runs on Docker Compose and can be deployed to a remote server via Ansible playbooks.

Observability Stack

The primary course focus was building and operating a production-grade observability stack alongside the application itself — not just shipping the app, but being able to see it run.

  • Prometheus scrapes custom application metrics: request rate, P50/P95/P99 latency, total links created, total redirects.
  • Loki + Promtail aggregate structured JSON application logs into a centralized, queryable log store.
  • Grafana dashboards are auto-provisioned at stack startup — no manual configuration required.
  • Sentry captures and groups application exceptions with full stack traces for rapid debugging.

Tech Stack

Python / Flask MySQL Prometheus Grafana Loki Promtail Docker Compose Ansible Sentry Swagger / OpenAPI

Deployment

The full stack — application, database, and observability pipeline — is defined in Docker Compose. A set of Ansible playbooks handles provisioning and deployment to a remote Linux server: a repeatable, infrastructure-as-code approach where the entire system state is described in version-controlled files.

Team

Group project developed with Ismaele De Giorgi.