Простой "укорачиватель" ссылок с PostgreSQL и JWT-авторизацией.
- fastapi
- uvicorn
- sqlalchemy
- psycopg2-binary
- passlib[bcrypt]
- python-jose
- pydantic
DATABASE_URL(пример:postgresql+psycopg2://postgres:postgres@localhost:5432/url_short)JWT_SECRET_KEY(обязательно заменить на свой секрет)ACCESS_TOKEN_EXPIRE_MINUTES(по умолчанию 60)
app/main.py— FastAPI приложение и подключение роутовapp/api/routes/*— роуты (auth, links, admin)app/core/*— конфиг и безопасность (JWT)app/db/*— сессия БДapp/models.py— модели SQLAlchemyapp/schemas.py— Pydantic схемыapp/scripts/create_admin.py— CLI для создания admin
- Инициализация (уже в репозитории):
alembic/ - Создать миграцию:
alembic revision --autogenerate -m "init"- Применить миграции:
alembic upgrade head- Поднимите PostgreSQL и создайте базу
url_short - Установите зависимости
- Выполните миграции Alembic (см. выше)
- Запустите приложение:
uvicorn app.main:app --reloadСоздать admin пользователя:
python -m app.scripts.create_admin --email admin@mail.com --password admin123POST /auth/register— регистрацияPOST /auth/login— получение JWTPOST /shorten— создание ссылки (нужен Bearer токен)GET /link?key=...— редирект по короткой ссылкеGET /admin/users— список пользователей (роль admin)