Skip to content

peterDitrih/fulEx

Repository files navigation

Тестовое задание для Backend-разработчика

Это репозиторий тестового задания на позицию Backend-разработчика. Проект представляет из себя простой сервис сбора данных из GitHub API для последующего анализа изменений в популярности репозиториев. Сервис реализован не полностью и вам необходимо довести его до ума.

Задание

Сейчас перед вами стоят следующие задачи:

  1. Скопируйте этот репозиторий. Ссылку на свою копию необходимо будет предоставить рекрутеру.
  2. Изучите устройство сервиса.
  3. Реализуйте ежедневное сканирование репозиториев и добавление новых записей в базу данных. Сканирование следует выполнять только для добавленных в базу данных пользователей.
  4. Реализуйте эндпоинт /v1/users/{id}/stats. Пусть он возвращает данные за указанный период (date_from, date_to) в следующем формате:
{
  "user": {
    "id": 1428904,
    "login": "allien",
    "name": "Allien Delon"
  },
  "stats": [
    {
      "repo_id": 7329078,
      "date": "2022-06-10",
      "stargazers": 42,
      "forks": 9,
      "watchers": 14
    },
    {
      "repo_id": 7329078,
      "date": "2022-06-11",
      "stargazers": 56,
      "forks": 10,
      "watchers": 15
    }
  ]
}
  1. Подготовьте сервис для развертывания с помощью Docker Compose.
  2. Опубликуйте репозиторий с вашим доработанным вариантом и отправьте ссылку рекрутеру.

Дополнительная информация

  • Соблюдайте PEP8.
  • Используйте отдельные коммиты для разных задач.
  • При внесении изменений придерживайтесь семантического версионирования.
  • Используйте aiohttp или httpx для сбора данных с GitHub.
  • Если потребуется, внесите изменения в схему базы данных.
  • Используйте Alembic и миграции для работы с базой данных.
  • Если вы видите несколько вариантов решения одной и той же задачи, сделайте выбор самостоятельно.

Стек

  • Python 3.10
  • PostgreSQL
  • SQLAlchemy
  • Alembic
  • FastAPI
  • Uvicorn
  • httpx или aiohttp

Запуск

Используйте uvicorn src.api:app --host 0.0.0.0 --port 5000 для запуска API. Подробнее в документации FastAPI или Uvicorn.

Комментарий

собрать контейнер базы cd migrations && docker build --network host -t fulex_post . собрать контейнер api docker build --network host -t fulex_api . (в корне проекта) запустить docker-compose up -d (в корне проекта)

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published