Синергия PM — планнер задач
Веб-планнер задач, календаря и проектов. Задачи синхронизируются через Supabase,
добавлять их можно на сайте или через Telegram-бота.
Сайт: https://soul1n-max.github.io/
Демо без регистрации: https://soul1n-max.github.io/?demo
Возможности
- Задачи с типом (Проект, Контакт, Напомнить, Срочно, Личное), датой, временем, проектом и повтором
- Группы «Просрочено / Сегодня / Дальше», сортировка по дате и времени
- Календарь месяца с задачами в ячейках и панелью выбранного дня
- Проекты с цветными метками, общие для всех устройств
- Вход и регистрация через Supabase Auth, привязка Telegram по коду от бота
- Задачи из Telegram-бота появляются на сайте сами (Realtime)
- Светлая и тёмная тема, вёрстка под телефон
Как это устроено
| Часть | Где живёт |
|---|
| Сайт | этот репозиторий: index.html, style.css и скрипты в js/, без сборки, публикуется через GitHub Pages |
| База и вход | Supabase: таблицы tasks и projects (схема в supabase/projects.sql), Auth, Realtime |
| Telegram-бот | отдельный приватный репозиторий, запущен на Render |
Задача принадлежит тому, чей Telegram ID записан в её поле user_id. После входа на сайт
нужно привязать Telegram: отправить боту /link и ввести присланный код. Подробности
и SQL — в supabase/.
Обновление сайта
Измените нужный файл (index.html — разметка, style.css — оформление, js/ — логика)
и закоммитьте его в ветку main: GitHub Pages обновит сайт примерно за минуту. Локально достаточно открыть index.html в браузере.
Безопасность
- На сайте используется только публичный ключ Supabase (
sb_publishable_…): его можно
держать во фронтенде.
- Таблицы
tasks и projects защищены Row Level Security: пользователь видит и меняет только
записи со своим Telegram ID. Без входа задачи не читаются.
- Telegram ID аккаунта хранится в
app_metadata, который пользователь изменить не может:
его записывает только функция в базе по одноразовому коду от бота.
- Секретный ключ Supabase и токен бота хранятся только в переменных окружения Render
и никогда не попадают в код или в этот репозиторий.