Это репозиторий тестового задания на позицию Backend-разработчика. Проект представляет из себя простой сервис сбора данных из GitHub API для последующего анализа изменений в популярности репозиториев. Сервис реализован не полностью и вам необходимо довести его до ума.
Сейчас перед вами стоят следующие задачи:
- Скопируйте этот репозиторий. Ссылку на свою копию необходимо будет предоставить рекрутеру.
- Изучите устройство сервиса.
- Реализуйте ежедневное сканирование репозиториев и добавление новых записей в базу данных. Сканирование следует выполнять только для добавленных в базу данных пользователей.
- Реализуйте эндпоинт /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
}
]
}
- Подготовьте сервис для развертывания с помощью Docker Compose.
- Опубликуйте репозиторий с вашим доработанным вариантом и отправьте ссылку рекрутеру.
- Соблюдайте 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
(в корне проекта)