Что такое Goals Planning?
Goals Planning отсекает лишний шум современных приложений для продуктивности. В то время как большинство трекеров привычек перегружены функциями, Goals Planning беспощадно фокусируется на одном представлении - ежемесячной матрице прогресса, что позволяет сразу понять, чего вы достигли и на что стоит обратить внимание.
Ежемесячная матрица
Основной интерфейс представляет собой календарную сетку, где дни являются столбцами, а привычки - строками. Каждая ячейка содержит простой переключатель: выполнили ли вы эту привычку сегодня или нет? Никакого сложного логирования, никаких многоэтапных рабочих процессов - просто нажмите и двигайтесь дальше.
Закрепленные оси гарантируют, что матрица останется читаемой по мере накопления привычек. Названия привычек остаются видимыми слева, а даты - сверху. Быстрое переключение состояний позволяет пользователям обновлять несколько привычек за считанные секунды, благодаря чему ежедневные отметки (check-ins) кажутся легкими, а не очередной задачей в списке дел.
Гибкая структура целей
В отличие от жестких трекеров привычек, требующих ежедневного выполнения, Goals Planning поддерживает любой ритм. Хотите тренироваться 3 раза в неделю? Установите это в качестве цели. Предпочитаете читать по 15 минут ежедневно? Это тоже работает. Система рассчитывает темп: если вы отстаете, вы видите, сколько сессий осталось, чтобы вернуться в график; если опережаете - видите свой запас.
Конфигурация целей поддерживает любое количество повторений в месяц, что делает систему адаптивной ко всему: от ежедневной медитации до квартальных обзоров.
UX, ориентированный на скорость
Каждое взаимодействие в Goals Planning приоритизирует скорость. Добавление новой привычки занимает менее 5 секунд. Редактирование существующих - менее 3 секунд. Удаление завершенных привычек - менее 2 секунд. Интерфейс устраняет любые препятствия между намерением и действием.
Режим быстрого добавления позволяет оперативно вводить привычки с минимальным количеством нажатий клавиш. Массовые операции позволяют пользователям обновлять несколько привычек одновременно. Горячие клавиши позволяют опытным пользователям перемещаться по приложению полностью с помощью клавиатуры.
Ежемесячная статистика
В конце месяца платформа генерирует четкую статистику: общее количество выполнений, процент выполнения, самую длинную серию, текущую серию и сравнение с предыдущими месяцами. Режим сравнения подсвечивает области для улучшения и отмечает победы.
Представление статистики делает акцент на прогрессе, а не на совершенстве. Пропуск дня не вызывает чувства вины - он вызывает анализ. Какие условия способствовали успеху? Какие препятствия возникли в трудные периоды? Платформа помогает пользователям понять свои паттерны, а не осуждает их.
Язык и тема
Интерфейс поддерживает русский и английский языки с плавным переключением. Темный режим предоставляет вариант с низким уровнем освещенности для вечерних сессий, снижая нагрузку на глаза при сохранении четкости. Минималистичная эстетика избавляет от визуального шума, удерживая внимание на главном - самих привычках.
Реализация на SvelteKit
Goals Planning работает на платформе webs как tenant-приложение, разделяя инфраструктуру базы данных, но сохраняя индивидуальный визуальный стиль. Минималистичный дизайн, ориентированный на прогресс, отражает философию продукта: никакого беспорядка, никаких отвлекающих факторов, только ясность в том, что действительно важно.
Детали реализации
Реализация ежемесячной матрицы приоритизирует целостность данных. Каждое изменение состояния переключателя вызывает немедленное сохранение в базе данных, предотвращая потерю данных при неожиданном закрытии браузера. Оффлайн-поддержка с помощью service workers ставит изменения в очередь при потере связи и синхронизирует их при восстановлении соединения.
Алгоритм расчета темпа корректно обрабатывает месяцы разной длины. Февраль учитывается так же (28-29 дней), как и любой другой месяц. Обработка високосных лет гарантирует, что пользователи 29 февраля получат соответствующее масштабирование целей.
Вопросы производительности
Для рендеринга матрицы используется виртуальный скроллинг для пользователей, у которых более 20 привычек. Только видимые строки рендерятся с полной точностью, а строки-заполнители поддерживают структуру сетки. Такой подход позволяет пользователям отслеживать более 50 привычек без снижения производительности.
Запросы к базе данных оптимизированы для извлечения данных за месяц, а не для загрузки всей истории. Для каждого месяца загружаются только записи за этот месяц, а исторические данные подгружаются лениво (lazy-loading) по запросу. Такая архитектура поддерживает долгосрочное использование без потерь производительности, характерных для приложений с накопительным отслеживанием.