• katariina-jarvenmaki released this 2026-03-05 20:07:25 +00:00 | 1 commits to main since this release

    Production-ready URL Shortener built with FastAPI, PostgreSQL, Docker, and Alembic.

    Tests
    Coverage
    Python

    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

    cd <your-repo-url>
    python3 -m venv venv
    source venv/bin/activate
    

    Create .env, copy as this as template:

    .env.example
    

    Run:

    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

    cd <your-repo-url>
    alembic revision --autogenerate -m "create urls table"
    

    Running project in Docker container

    cd <your-repo-url>
    docker compose up --build
    

    Running tests in Docker container

    cd <your-repo-url>
    docker compose up --build
    docker compose exec app pytest --cov=app --cov-report=term-missing
    
    Downloads