Задание
В репозитории хранится начатый проект «Recall» — персональная база знаний с интервальным повторениемТехника запоминания: материал показывают через растущие промежутки времени — перед тем, как вы успеете его забыть.. Backend на PHP, frontend на TypeScript, схема API описана в spec/api/openapi.yaml. Проект запускается, и даже что-то уже работает.
Что уже есть
- ЗаметкиЕдиница знаний: заголовок, текст, теги и ссылки на другие заметки.: создание, чтение, изменение, удаление, фильтрация по тегу.
- КарточкиВопрос и ответ (лицо и оборот). Создаётся из заметки и участвует в повторении.: создаются из заметок.
- Повторение: очередь на сегодняКарточки, срок показа которых наступил. и выставление оценки карточке.
- Статистика: сколько повторить сегодня, сколько за неделю, серия днейStreak — сколько дней подряд было хотя бы одно повторение..
Сущности
- Заметка — заголовок, текст, теги, ссылки на другие заметки.
- Карточка — лицевая и оборотная сторона, создаётся из заметки.
- Повторение — оценка карточкиШкала припоминания: again, hard, good, easy — от худшего к лучшему, как кнопки в Anki. Это одна ось, а не разные оценки. (
again/hard/good/easy) и дата следующего показа.
Про алгоритм повторения
Используется упрощённый интервальный алгоритм в духе SM-2Классический алгоритм интервального повторения, родом из SuperMemo. По вашей оценке и «лёгкости» карточки считает, когда показать её снова.: чем лучше вы помните карточку, тем дальше отодвигается следующий показ; чем хуже — тем ближе. Конкретные интервалы и правила подсчёта статистики намеренно не зафиксированы в задании — это часть того, что вам предстоит определить и реализовать. Приёмочные тестыПроверки готовности: по контракту (Hurl) и несколько UI-сценариев (Playwright). Намеренно нестрогие. проверяют поведение, а не конкретные числа.
Как определить готовность
just verify запускает приёмочные тесты. Они нарочно нестрогие.
Команда поднимает приложение, гоняет HTTP-проверки (HurlТекстовый формат HTTP-проверок: запрос плюс ассерты на статус, заголовки и тело. Дружит с git и CI.) по схеме из spec/api/ и несколько PlaywrightБраузерные end-to-end тесты: открывают страницу и проходят сценарий как живой пользователь.-сценариев.
Поднять руками для разработки:
just dev # запустить приложение в режиме разработки через docker compose
just test # запуск backend юнит-тестов
just lint # провести статанализ и проверку стиля кода (входит в verify)
just fmt # автоформат и безопасные автоправки
just guide # собрать сайт-инструкцию локальноСтруктура репозитория
www/— данная инструкция (Typst + Tola)app/backend/— PHP 8.5, Slim 4, Cycle ORM, SQLiteapp/frontend/— фронтенд на TypeScript + Vitespec/api/— схема OpenAPIspec/acceptance/— приёмочные проверки (*.hurl)e2e/— Playwright-сценарииcompose.yaml— конфигурация docker compose для запуска приложенияJustfile— командыjust verify,dev,guide,testи др.LOGBOOK.md— журнал решений (80строк)
Как сдавать работу
- Форкните публичный шаблон репозитория.
- Работайте в отдельной ветке, а не в
master: автопроверкаjust verifyв CI гоняется на ветках и в PR. - Доведите проект до успешного прохождения
just verify. - В процессе заполняйте
LOGBOOK.md. - Откройте Pull Request (PR) из своей ветки и убедитесь, что проверки прошли в CI.
- Пришлите нам ссылку на PR.
Удачи!