59 lines
1.2 KiB
Markdown
59 lines
1.2 KiB
Markdown
# URL Shortener API
|
|
|
|
Production-ready URL Shortener built with FastAPI, PostgreSQL, Docker, and Alembic.
|
|
|
|

|
|

|
|

|
|
|
|
## 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 <your-repo-url>
|
|
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:<br>
|
|
http://localhost:9995<br>
|
|
http://localhost:9995/docs
|
|
|
|
Test Short URL Endpoint:<br>
|
|
http://localhost:9995/shorten
|
|
|
|
## Running Alembic revision
|
|
```bash
|
|
cd <your-repo-url>
|
|
alembic revision --autogenerate -m "create urls table"
|
|
```
|
|
|
|
## Running project in Docker container
|
|
```bash
|
|
cd <your-repo-url>
|
|
docker compose up --build
|
|
```
|
|
|
|
## Running tests in Docker container
|
|
```bash
|
|
cd <your-repo-url>
|
|
docker compose up --build
|
|
docker compose exec app pytest --cov=app --cov-report=term-missing
|
|
``` |