Skip to content

Latest commit

 

History

History
168 lines (118 loc) · 8.06 KB

README.md

File metadata and controls

168 lines (118 loc) · 8.06 KB

Спринт №1: MVP объявлений

image

Продукт "Şañıraq.kz" - перспективный маркетплейс жилых помещений Казахстана.

На данном спринте мы начнем разрабатывать наш первый MVP (Minimum Valuable Product) данного сервиса. Мы сфокусируемся на двух аспектах нашего маркетплейса - пользователи и объявления:

  • Пользователи должны иметь возможность указывать свои персональные данные, чтобы клиенты могли связаться с ними.
  • Объявления - это главная ценность продукта. Пользователи должны иметь возможность создавать, изменять, удалять и получать свои объявления.

После завершения данного спринта разверните разработку на railway.

✅ Таск №1: Изменение данных пользователя

Нужно иметь возможность авторизованному пользователю изменить свои персональные данные.

Ниже приведен пример запроса на API. Должен выполняться HTTP метод PATCH на роут /auth/users/me, в который передается JSON структура. Переданные данные должны сохраняться пользователю, который делает запрос.

Чтобы узнать какой пользователь, нужно извлечь id пользователя из токена.

PATCH /auth/users/me HTTP/1.1
Authorization: Bearer {token}

{
    "phone": "+7 700 698 5025",
    "name": "Далида Е.",
    "city": "Алматы"
}

При успешном сохранении, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №2: Получение данных пользователя

Нужно предоставить возможность авторизованному пользователю получать свои персональные данные.

Пример запроса на API: должен выполняться HTTP метод GET на роут /auth/users/me.

Аутентификация происходит через заголовок Authorization, где {token} - токен авторизованного пользователя.

GET /auth/users/me HTTP/1.1
Authorization: Bearer {token}

При успешном выполнении запроса, API должен возвращать HTTP код 200, а в теле ответа JSON структура с данными пользователя.

HTTP/1.1 200 OK

{
    "_id": "{user_id}",
    "email": "{почта текущего пользователя}",
    "phone": "+7 700 698 5025",
    "name": "Далида Е.",
    "city": "Алматы"
}

✅ Таск №3: Создание объявления

Пользователи должны иметь возможность создавать новые объявления.

Пример запроса на API: должен выполняться HTTP метод POST на роут /shanyraks/, в который передается JSON структура с данными объявления.

POST /shanyraks/ HTTP/1.1
Authorization: Bearer {token}

{
    "type": "rent",
    "price": 150000,
    "address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь",
    "area": 46.5,
    "rooms_count": 2,
    "description": "Продается 1.5 комнатная квартира. ЖК расположен на правом берегу, не далеко от левого берега.\nДом расположен в хорошей локации. Рядом находятся мечеть Хазрет Султан, Пирамида, аллея тысячелетия, и многое другое.\nдвор закрытый, садик во дворе дома, школы в пешей доступности"
}

При успешном создании объявления, API должен возвращать HTTP код 200 и JSON структура с id нового объявления.

HTTP/1.1 200 OK

{
    "_id": "507f191e810c19729de860ea"
}

✅ Таск №4: Получение объявления

Пользователи должны иметь возможность просматривать детали своих объявлений.

Пример запроса на API: должен выполняться HTTP метод GET на роут /shanyraks/{id}, где {id} - идентификатор объявления.

GET /shanyraks/{id} HTTP/1.1

При успешном выполнении запроса, API должен возвращать HTTP код 200 и JSON структура с данными объявления.

HTTP/1.1 200 OK

{
    "_id": "507f191e810c19729de860ea",
    "type": "rent",
    "price": 150000,
    "address": "Астана, Алматы р-н, ул. Нажимеденова, 16 – Сарыколь",
    "area": 46.5,
    "rooms_count": 2,
    "description": "Продается 1.5 комнатная квартира. ЖК расположен на правом берегу, не далеко от левого берега.\nДом расположен в хорошей локации. Рядом находятся мечеть Хазрет Султан, Пирамида, аллея тысячелетия, и многое другое.\nдвор закрытый, садик во дворе дома, школы в пешей доступности",
    "user_id": "{user_id пользователя создавшего объявление}"
}

✅ Таск №5: Изменение объявления

Пользователи должны иметь возможность изменять данные своих объявлений.

Пример запроса на API: должен выполняться HTTP метод PATCH на роут /shanyraks/{id}, в который передается JSON структура с новыми данными объявления.

{id} - идентификатор объявления.

PATCH /shanyraks/{id} HTTP/1.1
Authorization: Bearer {token}

{
    "type": "rent",
    "price": 250000,
    "address": "Астана, Алматы р-н, ул. Нажимеденова, 17",
    "area": 38.5,
    "rooms_count": 2,
    "description": "СРОЧНО!!!\nПродается 1.5 комнатная квартира. ЖК расположен на правом берегу, не далеко от левого берега.\nДом расположен в хорошей локации. Рядом находятся мечеть Хазрет Султан, Пирамида, аллея тысячелетия, и многое другое.\nдвор закрытый, садик во дворе дома, школы в пешей доступности"
}

При успешном изменении данных объявления, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK

✅ Таск №6: Удаление объявления

Пользователи должны иметь возможность удалять свои объявления.

Пример запроса на API: должен выполняться HTTP метод DELETE на роут /shanyraks/{id}, где {id} - идентификатор объявления.

DELETE /shanyraks/{id} HTTP/1.1
Authorization: Bearer {token}

При успешном удалении объявления, API должен возвращать HTTP код 200.

HTTP/1.1 200 OK