TreeMap
A free, open-source disk-space visualizer. Squarified treemap, duplicate hunting, disk-full forecasting, and cleanup that only ever moves files to the Trash.
Дашборд с трекером привычек
Translation pending
ProductivityJavaScript · HTMLGitHub @1337David1337OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Код страницы публичный, данных в нём нет. Привычки и отметки лежат в data.json приватного репозитория, который указывается в разделе «Подключение» на самой странице. Страница читает и пишет этот файл через GitHub API. Каждое сохранение — отдельный коммит.Read the full README ↗
Статичный сайт на GitHub Pages: https://1337david1337.github.io/keel/ (адрес остался от прежнего имени Keel — чтобы не сломался ярлык на экране «Домой»).
Код страницы публичный, данных в нём нет. Привычки и отметки лежат в data.json
приватного репозитория, который указывается в разделе «Подключение» на самой странице.
Страница читает и пишет этот файл через GitHub API. Каждое сохранение — отдельный коммит.
Старые адреса #morning и #goals открывают «Сон» и «План».
sky.js (в <head>) считает солнце над Минском: днём страница — светлая «морская карта», после заката —
тёмный HUD, с 22:00 до 5:00 — красный свет (выключается в «Настройках → Тема» или на ночь кнопкой под компасом).
Тема «Светлая» и «Тёмная» закрепляет вид.compass.js рисует компас: дуги — сферы с ритмом (заполнение — дни из нормы за 7 дней, пунктир — перебор),
стрелка — на фокус (первая сфера из рекомендаций), тап по сфере — показать её. Пунктир внутри — журнал курса:
куда смотрела стрелка в каждый из прошлых дней. Солнце стоит на своём настоящем азимуте.Шаг для свободного слота выбирается только из открытых подзадач Google Задач: задача с подзадачами —
это проект, подзадачи — его шаги (списки «не предлагать» не участвуют). По «Готово» подзадача закрывается
и в Google Задачах, а время слота записывается на проект — его видно в «Итогах → Время на цели».
В sessions.<дата HH:MM> хранятся taskId, listId и project.
Push-уведомления: утренняя молитва, вечерние 5 минут, обзор недели (воскресенье), свободный слот.
Устройство подписывается в «Настройках → Напоминания» (на iPhone — только когда Стезя открыта с экрана «Домой»),
подписка хранится в push.subs файла data.json, время — в settings.reminders.
Отправляет GitHub Actions в репозитории с данными (.github/workflows/remind.yml, .github/remind.mjs)
по расписанию утром 5:00–9:00 и вечером 19:00–23:30 по Москве. Сделанное не напоминается:
молитва записана, ритуал пройден, обзор проведён. Отправленное за день — в push-state.json.
Открытый VAPID-ключ — в app.js, секретный — в секретах репозитория с данными.
Смоук-тесты на Playwright открывают страницу с вымышленными данными, GitHub API и мост Google Задач подменены. Нужны Node.js и установленный Google Chrome:
npm install
npm test
https://1337david1337.github.io/keel/?demo — вымышленная семья, чтобы показать Стезю другим.
Хранилище в памяти вкладки, запросы к GitHub и Google Задачам подменены внутри страницы (demo-data.js):
ничего не сохраняется, настоящий вход и данные на устройстве не затрагиваются.
владелец/репозиторий и вставь токен.Токен хранится только в localStorage этого браузера.
Задачи приходят через веб-приложение Apps Script из google-tasks.gs: оно разворачивается
в своём Google-аккаунте и отдаёт задачи по ключу. Инструкция — в коде файла и в разделе
«Настройки дашборда» на странице. Адрес и ключ сохраняются в settings файла data.json.
{
"version": 1,
"settings": {
"cycleStart": "2026-09-14",
"cycleWeeks": 12,
"busyDays": [0, 1, 3],
"busyLabel": "занято",
"spheres": ["работа", "здоровье"]
},
"habits": [
{ "id": "sleep", "name": "Лечь до 23:30", "sphere": "здоровье",
"target": 5, "order": 0, "archived": false, "created": "2026-09-14" }
],
"log": { "2026-09-26": { "sleep": true } },
"kid": { "2026-09-28": { "wake": "06:26", "bed": "20:40", "nights": ["23:40"] } },
"me": { "2026-09-28": { "wake": "05:52" } },
"together": { "2026-09-26": { "note": "прогулка" } },
"reviews": { "2026-W39": "2026-09-27" },
"goals": [
{ "id": "g1", "title": "Накопить на машину", "kind": "number", "start": 0, "target": 600000,
"unit": "₽", "startDate": "2026-09-01", "deadline": "2027-05-31",
"history": [{ "d": "2026-09-15", "v": 95000 }] }
]
}
target — сколько раз в неделю, busyDays и slots[].dow — дни недели с 0 = понедельник.
kid.<дата>.bed и nights относятся к ночи, которая начинается в этот день.
У каждой сферы есть норма — сколько дней в неделю ей нужно время (settings.sphereNorms,
по умолчанию: жена 5, ребёнок 6, церковь/работа/деньги/здоровье 3, дом 1). Карточка «Фокус на завтра»
на вкладке «Сегодня» предлагает по одному делу для сфер, которым по норме уже пора (↻ — другое дело).
Заряд сферы — дни с вниманием за 7 дней от нормы (2 из 5 = 40%), шкалы всех сфер видны на «Сегодня».
Повторное нажатие на выбранное предложение убирает его из главного и возвращает задаче прежнюю дату.
Задачи из списков «Когда-нибудь» и «Ожидание» не предлагаются, пока их не перенесут в другие списки.
Подробный баланс, нормы, ручные отметки, сферы списков и задач — во вкладке «План».
Сами считаются отметки привычек, выполненные задачи Google и «главное на день», шаги в слотах,
время вдвоём, молитва и вечера busyDays. В «Вечерних 5 минутах» есть шаг «Чему уделил время».
care.<дата> — сферы, которым вручную отмечено внимание в этот день: ["ребёнок", "жена"];settings.listSpheres.<название списка> — сфера списка Google, "" — угадывать по словам,
"__parked" — не предлагать (по умолчанию так для «Когда-нибудь» и «Ожидание»);tags.<id задачи> — сфера задачи Google, выбранная вручную ("" — без сферы).
Без неё сфера угадывается по словам названия задачи; подзадачи берут сферу родителя.