Skip to content

This project is a microblogging service for corporate use. Functionally, it allows users to write posts (you can use pictures), view other users' posts, subscribe to each other and put/remove likes on posts - as if your corporate network has its own Twitter.

Notifications You must be signed in to change notification settings

DmitriiViktorov/twitter

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

10 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Сервис микроблогов Twitter-clone

twitter-logo

Корпоративный сервис микроблогов, созданный для общения сотрудников.

Возможности сервиса

По своему функционалу сервис похож на широко известный сервис x.com, ранее известный как Твиттер. Сервис позволяет делиться своими постами (в том числе с прикрепленными изображениями), оценивать посты других пользователей, подписываться друг на друга и конечно читать посты всех пользователей данного сервиса.

Установка

Сервис микроблогов разворачивается с помощью запуска трех взаимосвязанных контейнеров:

  • app: само приложение с логикой работы, эндпоинтами и методами взаимодействия с базой данных.
  • postgres: СУБД PostgreSQL, где хранится вся информация о пользователях, твитах, медиафайлах в этих твитах, лайках, подписках пользователей друг на друга.
  • nginx: Nginx используется в основном для обслуживания статических ресурсов фронтенда, таких как HTML, CSS и JavaScript файлы. Конфигурация Nginx обеспечивает быструю доставку этих файлов клиентам и обеспечивает корректную маршрутизацию запросов.

Шаги установки:

  1. Клонирование репозитория:

    Для установки необходимо клонировать репозиторий с помощью следующей команды:

    git clone https://github.com/DmitriiViktorov/twitter.git
  2. Установка зависимостей

    python -m venv .venv
    source .venv/bin/activate  # Для Windows используйте venv\Scripts\activate
    cd twitter/
    pip install -r requirements.txt
  3. Создание .env файла

    После клонирования репозитория в корневой директории проекта необходимо создать .env файл и указать там следующие типы настроек:

    • POSTGRES_USER=< ваше имя пользователя >
    • POSTGRES_PASSWORD=< ваш пароль для этого пользователя >
    • POSTGRES_DB=< название базы данных >
    • POSTGRES_HOST=postgres
    • POSTGRES_PORT=5432
    • ECHO=<True или False> - включает/выключает логирование запросов к БД
  4. Запуск сервиса

    После перехода в корневую директорию проекта запустите сервис с помощью Docker Compose:

    docker-compose up
  5. Доступ к приложению

    После успешного запуска сервис будет доступен по адресу http://localhost.

Использование

После запуска сервиса им сразу можно пользоваться по прямому назначению. Одним из требований для работы с сервисом - наличие у пользователя ключа аутентификации, который корпоративная система должна предоставлять в виде http-header с названием "api-key". В случае если пользователь с таким "api-key" существует в базе данных - он сможет пользоваться сервисом.

Основные функции

  • Просмотр твитов: На главной странице пользователь видит информацию о всех твитах других пользователей, начиная с самых свежих твитов.

  • Публикация твитов: Основной функцией сервиса является возможность публиковать свои твиты, в том числе прикреплять к ним желаемые изображения.

  • Удаление твитов: Пользователь может удалить свой пост, если возникла такая необходимость.

  • Лайки: Пользователь может ставить лайки под твитами других пользователей или убирать их при необходимости.

  • Подписка и отписка: Пользователь может заходить на страницы других пользователей, нажимая на их аватары у постов. Пользователь может подписываться на других пользователей, нажимая на кнопку "Читать" на странице этого пользователя. Если пользователь хочет отписаться от кого-то - необходимо нажать на кнопку "Перестать читать" на странице этого пользователя.

Эти функции обеспечивают базовую функциональность сервиса микроблогов и позволяют пользователям взаимодействовать друг с другом.

Демонстрация функциональности

Для визуализации работы сервиса и наполнения стартовой страницы с реалистичными данными, предусмотрена функция, которая добавляет 10 случайных пользователей, генерирует случайные посты, расставляет случайные лайки и добавляет случайные подписки между пользователями. Если вам не нужно создавать начальные данные для демонстрации функциональности приложения, вы можете закомментировать строку, которая вызывает функцию create_db(SessionLocal()).

# В файле twitter/app.py
# При необходимости отключения создания начальных данных для демонстрации функциональности,
# закомментируйте следующую строку:
# await create_db(SessionLocal())

Описание API

API данного приложения документировано с использованием OpenAPI. Для ознакомления с документацией API, перейдя по следующей ссылке:

Тестирование

Приложение имеет полное покрытие тестами для всех функций и эндпоинтов. Вы можете запустить тесты, используя Docker Compose в директории tests/ с тестовой базой данных. Тесты также можно запустить из корневого каталога, так как там находится конфигурационный файл для тестов pytest.ini.

Запуск тестов

  1. Перейдите в директорию 'tests/':

    cd tests/
  2. Запустите Docker Compose для запуска тестовой среды с тестовой базой данных:

    docker-compose up -d
  3. Перейдите обратно в корневой каталог и запустите тесты:

    cd ..
    pytest 

Это обеспечит проверку корректной работы всех функций и эндпоинтов приложения перед развертыванием в производственной среде.

Контактная информация

В случае возникновения вопросов, комментариев, замечаний по работе приложения вы можете связаться со мной:

About

This project is a microblogging service for corporate use. Functionally, it allows users to write posts (you can use pictures), view other users' posts, subscribe to each other and put/remove likes on posts - as if your corporate network has its own Twitter.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published