Этот проект представляет собой клона социальной сети Twitter. Возможности:
- Пользователь может добавить новый твит.
- Пользователь может удалить свой твит.
- Пользователь может зафоловить другого пользователя.
- Пользователь может отписаться от другого пользователя.
- Пользователь может отмечать твит как понравившийся.
- Пользователь может убрать отметку «Нравится».
- Пользователь может получить ленту из твитов.
- Твит может содержать картинку
Убедитесь, что у вас установлены Docker и docker-compose.
-
Клонируйте репозиторий:
git clone https://github.com/MikhalchenkoD/skillbox-twitter-clone.git cd skillbox-twitter-clone
-
Сборка и запуск контейнеров с приложением и базой данных:
docker-compose build docker-compose up
POST /api/tweets
HTTP-Params:
api-key: str
{
“tweet_data”: string
“tweet_media_ids”: Array[int] // Опциональный параметр. Загрузка
картинок будет происходить по endpoint /api/media. Фронтенд будет
подгружать картинки туда автоматически при отправке твита и подставлять
id оттуда в json.
}
Запросом на этот endpoint пользователь будет создавать новый твит. Бэкенд будет его валидировать и сохранять в базу. В ответ должен вернуться id созданного твита.
{
“result”: true,
“tweet_id”: int
}
отправку формы.
POST /api/medias
HTTP-Params:
api-key: str
form: file=”image.jpg”
{
“result”: true,
“media_id”: int
}
DELETE /api/tweets/<id>
HTTP-Params:
api-key: str
{
“result”: true
}
POST /api/tweets/<id>/likes
HTTP-Params:
api-key: str
{
“result”: true
}
DELETE /api/tweets/<id>/likes
HTTP-Params:
api-key: str
{
“result”: true
}
POST /api/users/<id>/follow
HTTP-Params:
api-key: str
{
“result”: true
}
DELETE /api/users/<id>/follow
HTTP-Params:
api-key: str
{
“result”: true
}
GET /api/tweets
HTTP-Params:
api-key: str
{
“result”: true,
"tweets": [
{
"id": int,
"content": string,
"attachments" [link_1, link_2,]
"author": {"id": int", "name": string}
“likes”: [{“user_id”: int, “name”: string}]
}]}
{
“result”: false,
“error_type”: str,
“error_message”: str
}
GET /api/users/me
HTTP-Params:
api-key: str
{
"result":"true",
"user":{
"id":"int",
"name":"str",
"followers":[{"id":"int", "name":"str"}],
"following":[{"id":"int", "name":"str"}]
}}
GET /api/users/<id>
{
"result":"true",
"user":{
"id":"int",
"name":"str",
"followers":[{"id":"int", "name":"str"}],
"following":[{"id":"int", "name":"str"}]
}}
Михальченко Дмитрий (https://t.me/DmitriyMikhalchenko)