python3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -r requirements-dev.txtcp .env.example .env.dev
python -m appпо умолчанию локальный запуск использует sqlite-файл task_tracker.db. при первом старте приложение само создает схему и добавляет демо-данные.
демо-пользователи:
ivan / ivan@example.com
anna / anna@example.com
swagger ui:
http://127.0.0.1:8000/docs
docker compose up --buildприменить миграции:
alembic upgrade headтекущая ревизия:
alembic currentустановить зависимости:
make installподнять приложение локально:
make run-localподнять через docker compose:
make runприменить миграции:
make migrateформатировать код:
make formatпроверить форматирование:
make format-checkзапустить flake8:
make lintзапустить тесты:
make testзапустить все проверки:
make checkостановить docker compose:
make downлогин выдает простой bearer-токен формата stub:<username>:
curl -X POST http://127.0.0.1:8000/auth/login -H 'Content-Type: application/json' -d '{"username": "ivan"}'для защищенных ручек можно использовать либо authorization: bearer stub:<username>, либо stub-заголовок x-auth-user: <username>.
создать задачу:
curl -X POST http://127.0.0.1:8000/tasks -H 'Content-Type: application/json' -H 'x-auth-user: ivan' -d '{
"title": "подготовить api note",
"description": "согласовать контракт",
"status": "todo"
}'получить список задач:
curl 'http://127.0.0.1:8000/tasks?status=todo&sort_by=updated_at&sort_order=desc' -H 'x-auth-user: ivan'обновить задачу:
curl -X PATCH http://127.0.0.1:8000/tasks/33333333-3333-4333-8333-333333333333 -H 'Content-Type: application/json' -H 'x-auth-user: ivan' -d '{
"title": "подготовить краткий api note",
"description": null
}'назначить исполнителя:
curl -X POST http://127.0.0.1:8000/tasks/33333333-3333-4333-8333-333333333333/assign -H 'Content-Type: application/json' -H 'x-auth-user: ivan' -d '{
"assignee_id": "11111111-1111-4111-8111-111111111111"
}'добавить комментарий:
curl -X POST http://127.0.0.1:8000/tasks/33333333-3333-4333-8333-333333333333/comments -H 'Content-Type: application/json' -H 'x-auth-user: ivan' -d '{
"text": "первый комментарий"
}'получить саммари:
curl http://127.0.0.1:8000/tasks/summary -H 'x-auth-user: ivan'выгрузить csv:
curl -OJ http://127.0.0.1:8000/tasks/export -H 'x-auth-user: ivan'