Данный проект реализует бэкенд корпоративного сервиса микроблогов, похожего на Twitter. Сервис позволяет пользователям создавать и взаимодействовать с твитами, подписываться на других пользователей и просматривать персонализированные ленты. Разработка рассчитана на корпоративную среду, где аутентификация пользователей осуществляется внешней системой.
-
Управление твитами
- Создание новых твитов (с возможностью добавления медиафайлов).
- Удаление твитов (только собственных).
- Просмотр ленты твитов пользователей, на которых подписан пользователь.
-
Лайки
- Установка отметки «Нравится» на твит.
- Удаление отметки «Нравится».
-
Подписки
- Подписка на других пользователей.
- Отписка от пользователей.
-
Медиафайлы
- Загрузка изображений для твитов.
-
Информация о профиле
- Получение информации о собственном профиле.
- Получение информации о любом профиле по ID.
-
Создание нового профиля
- Создание пользователя
- Docker Compose: Простое развертывание сервиса с помощью одной команды.
- Сохранность данных: Данные пользователя сохраняются между запусками.
- Swagger-документация: Все API-эндпоинты задокументированы и доступны сразу после запуска.
- Тестирование: Приложение покрыто unit-тестами и проверено линтерами.
- Типизация: Код удовлетворяет требованиям статического анализатора типов (
mypy
).
- Язык программирования: Python
- Фреймворк: FastAPI
- База данных: PostgreSQL
- Контейнеризация: Docker, Docker Compose
- Документация API: Swagger (через библиотеку
flasgger
) - Тестирование: pytest
- Клонируйте репозиторий:
git clone https://gitlab.skillbox.ru/aleksandr_semionov_1/python_advanced_diploma.git
- Запустите приложение с помощью Docker Compose:
docker-compose up -d
- Откройте Swagger-документацию в браузере: Swagger доступен по адресу http://localhost:8000/docs
- client/ - статические файлы для отображения страницы
- server/ - бизнес логика приложения
- databases/ - настройка подключения базы данных, и описание моделей
- routers/ — реализация API-эндпоинтов
- auth.py - файл с проверкой авторизации
- Dockerfile - dockerfile для сборки endpoints для деплоя
- Dockerfile.dev - dockerfile для сборки endpoints для теста
- exceptions.py - файл с обработчиками исключений
- functions.py - файл с функциями для работы с БД
- main.py - файл запуска приложения
- schemas.py - файл со схемами Pydantic
- tests/ — unit-тесты
- docker-compose.yml — конфигурация Docker Compose.
- docker-compose.dev.yml — конфигурация Docker Compose для теста.
- requirements.txt — зависимости проекта.
- requirements_dev.txt — зависимости проекта для теста.
- .flake8 — Настройки конфигурации линтера flake8
- mypy.ini — Настройки конфигурации линтера mypy
- Создание твита: POST /api/tweets
- Удаление твита: DELETE /api/tweets/
- Получение ленты: GET /api/tweets
- Поставить лайк: POST /api/tweets//likes
- Убрать лайк: DELETE /api/tweets//likes
- Подписаться: POST /api/users//follow
- Отписаться: DELETE /api/users//follow
- Информация о себе: GET /api/users/me
- Информация о пользователе: GET /api/users/
- Загрузка файла: POST /api/medias
-
Для локальной разработки установите зависимости:
pip install -r requirements.txt
-
Для запуска сервера:
uvicorn server/main:app --reload
-
Убедитесь, что код удовлетворяет требованиям линтеров:
black --check --diff server
isort --check-only --diff --profile black server
-
Проверьте типизацию:
mypy server
- Для тестирования установите локально зависимости:
pip install -r requirements_dev.txt
- Соберите и запустите docker-compose для теста:
docker-compose -f docker-compose.dev up --build
- Запустите тесты локально
pytest tests