# URL Shortener API Production-ready URL Shortener built with FastAPI, PostgreSQL, Docker, and Alembic. ![Tests](https://img.shields.io/badge/tests-passing-brightgreen) ![Coverage](https://img.shields.io/badge/coverage-99%25-brightgreen) ![Python](https://img.shields.io/badge/python-3.12-blue) ## Techstack FastAPI, PostgreSQL, SQLAlchemy 2.0, Alembic, Docker, Pytest and Pydantic v2 ## Features Shorten URLs, Redirect, Click tracking, Stats endpoint, Collision handling, 99%+ test coverage, Dockerized and Alembic migrations ## Local Setup ```bash cd python3 -m venv venv source venv/bin/activate ``` Create .env, copy as this as template: ``` .env.example ``` Run: ```bash python -m uvicorn app.main:app --reload --host 0.0.0.0 --port 9995 ``` Then check:
http://localhost:9995
http://localhost:9995/docs Test Short URL Endpoint:
http://localhost:9995/shorten ## Running Alembic revision ```bash cd alembic revision --autogenerate -m "create urls table" ``` ## Running project in Docker container ```bash cd docker compose up --build ``` ## Running tests in Docker container ```bash cd docker compose up --build docker compose exec app pytest --cov=app --cov-report=term-missing ```