В рамках данного проекта была поставлена задача реализовать полноценную систему микроблогов для корпоративного использования, аналогичную Twitter. Основная цель — создание удобного сервиса, где сотрудники компании могут делиться короткими сообщениями, следить за обновлениями коллег и участвовать в обсуждениях.
-
Архитектура бэкенда: Разработана на основе FastAPI, что позволило обеспечить высокую скорость разработки и масштабируемость. Проект использует PostgreSQL в качестве базы данных для хранения информации о пользователях, постах, лайках и подписках.
-
API: Взаимодействие с фронтендом происходит через заранее согласованный REST API. Все эндпоинты соответствуют предоставленной спецификации и поддерживают базовые CRUD-операции для пользователей, постов и подписок. Включены также функции аутентификации.
-
Реализация бизнес-логики:
- Посты: Пользователи могут создавать и удалять сообщения. Данные посты будут видны всем, кто зарегестрирован в системе.
- Подписки: Реализован механизм подписок на пользователей, что позволяет получать обновления от интересующих коллег.
- Лента новостей: Посты подписанных пользователей отображаются в ленте, которая сортируется по количеству лайков и дате публикации.
- Лайки: Поддерживается базовый функционал взаимодействия с постами в виде лайков.
-
Тестирование: Написаны автоматические тесты для критически важных частей приложения с использованием Pytest. Покрытие тестами включало бизнес-логику постов, подписок и систему аутентификации.
-
Технологический стек:
- FastAPI — для создания API.
- PostgreSQL — для хранения данных.
- SQLAlchemy и Alembic — для работы с базой данных и управления миграциями.
- Docker — для контейнеризации и удобного развёртывания.
- Nginx — для управления запросами к серверу.
- Клонируйте репозиторий с помощью
git clone git@github.com:mswesson/fastapi-network.git
- Теперь необходимо создать 2 .env файла. Один будет находиться в директории проекта, а второй по пути app/.env. Их нужно запонить полагаясь на файлы .env.example по тем же путям.
- Необходимо установить docker и docker-compose, если у вас их нет.
- Docker: https://docs.docker.com/get-docker/
- Docker Compose: https://docs.docker.com/compose/install/
- Находясь в директории проекта введите
docker-compouse up --build
после этого соберется образ приложения и запустится. - Далее необходимо заполнить нашу БД данными, для дальнейшего взаимодействия. Для этого сделаем GET запрос по адресу http://localhost/api/content/create
- Теперь можно перейти на наш сайт по пути http://localhost/.
- Так же можно очистить все данные в БД сделая GET запрос по адресу http://localhost/api/content/delete. ВАЖНО: после отчистки данных потребуется перезапустить контейнер, чтобы Alembic создал табоицы заново.