Session Flow
Cadastre o cliente uma vez e a agenda do mês se monta sozinha, com o valor de cada sessão. Veja quem já pagou, quanto falta receber e cobre pelo WhatsApp.
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證製作者的介紹僅有上面的一句話。 更多詳情請閱讀儲存庫 README。 儲存庫 README ↗
正在載入完整 README。
檢視完整 README ↗Открыть: jakewhite-ui.github.io/kanal — работает сразу, ничего ставить не нужно.
Дашборд для тех, кто продаёт услуги и ведёт контент: воронка сделок с перетаскиванием, клиенты с логом активности, отчёты, публикации, подписчики, журнал работы. Тёмная тема по умолчанию и светлая по кнопке, русский и английский интерфейс, графики, всё настраивается.
Сделано Dark Fusion. Фирменный оранжевый — #FF752A, снят с логотипа.
Ничего не захардкожено. Название, валюта, цель, площадки и рубрики задаются в настройках. Не задал цель — блок прогресса просто не показывается. Это сделано намеренно, чтобы дашборд можно было отдать другому человеку без единой правки в коде.
Дашборд сам определяет, есть ли рядом сервер, и подстраивается.
С сервером — на своей машине. Источник правды data.json на диске, его можно держать в приватном репозитории и синкать между компьютерами через git.
cd ~/kanal && node server.js
Без сервера — на GitHub Pages или просто открытым файлом. Запроса к /api/data нет, поэтому данные живут в localStorage браузера и никуда не уходят. Это сделано специально: выложить можно код, а суммы и клиенты остаются на устройстве.
Перенос между устройствами — Настройки → Данные → Экспорт / Импорт, один JSON-файл. Импорт отбивает чужой или битый файл и не затирает то, что уже внесено.
⚠️ В режиме без сервера данные привязаны к конкретному браузеру. Чистка истории сайта их стирает — делай экспорт.
Зависимостей нет, нужен только Node. Графики тянут Chart.js с CDN, то есть для них нужен интернет; остальное работает офлайн.
| Обзор | Приветствие с датой, прогресс к цели, четыре показателя: получено, открытый пайплайн, открытых сделок, конверсия лид→оплата. Графики выручки по неделям и здоровья сделок. Ниже — сделки без движения больше 7 дней и сумма под угрозой |
| Воронка | Канбан по шести этапам. Карточку можно перетащить в другую колонку — статус, суммы колонок и показатели обзора пересчитываются сразу |
| Сделки | Клиент, услуга, стоимость, сколько уже получено, статус, дата, ссылка |
| Клиенты | Поиск, карточка клиента с суммами и сделками, лог активности с датами — записи добавляются прямо в карточке |
| Отчёты | Выручка всего, сделок оплачено, средний цикл, win rate, движений в неделю, средний чек, дней до срока, конверсия по этапам, поступления по месяцам, клиенты по выручке, лента движений сделок |
| Контент | Публикации карточками с площадкой, рубрикой, просмотрами и откликами. Снимки подписчиков, рост подписчиков и просмотры по рубрикам |
| Журнал | День, минуты в работе, что сделано, провал дня |
| Настройки | Имя, название, валюта, цель, срок, площадки, рубрики, профиль |
Тёмная тема по умолчанию: чёрный фон #0A0A0C, под контентом фиксированный слой размытых оранжевых пятен, поверх — полупрозрачные карточки с backdrop-filter. Акцент — градиент #FF752A → #FFB13D: им залиты кольца прогресса, полосы и главная цифра.
Карточки намеренно заданы в rgba, а не в hex: цвет им даёт слой пятен, просвечивающий сквозь размытие. Уберёшь .orbs — стекло станет грязно-серым.
В светлой теме стекла нет (--glass: none), а пятна приглушены до 12 %: по белому фону размытие даёт грязь, а не глубину.
Лид → КП отправлено → Счёт выставлен → Предоплата 50 % → В работе → Оплачено
Перетаскивание меняет не только колонку:
У сделки два числа: вся сумма и получено. Если работаешь по предоплате, не нужно заводить вторую строку на остаток — один клиент остаётся одной строкой, а в таблице видно дробью: 1 500 / 3 000.
AED, $, ₽ — что угодно, подставляется рядом с суммами)Перевод интерфейса лежит отдельно в i18n.js — чтобы добавить язык, достаточно дописать туда ещё один блок и кнопку в сайдбар, логику трогать не нужно.
В репозитории их нет и быть не должно. data.json лежит в .gitignore: репозиторий публичный, а суммы и имена клиентов — нет. Склонируешь к себе — получишь пустой дашборд и заполнишь своим.
С сервером источник правды — data.json на твоей машине. Сервер переписывает его целиком при каждом изменении, через временный файл и rename, так что обрыв не оставит битый JSON.
Без сервера данные лежат в localStorage того браузера, где открыт дашборд. Чистка истории сайта их стирает.
Перенос между устройствами — только через Настройки → Данные → Экспорт / Импорт. Один JSON-файл. Автоматического синка нет намеренно: любой автосинк означал бы, что цифры где-то лежат, а они не должны лежать нигде, кроме твоих устройств.
Старые версии файла подхватываются автоматически: при загрузке данные приводятся к текущей структуре, ничего не теряется. Записи, сделанные до появления частичной оплаты, читаются по-прежнему — статус «получено» у них значит, что пришла вся сумма.
server.js zero-dep сервер: статика + GET/PUT api/data
index.html сайдбар и восемь разделов, лого в SVG
app.css две темы на CSS-переменных
i18n.js словарь интерфейса: русский и английский
app.js без ES-модулей: ?v= на <script src> не бустит импорты внутри модуля
data.json твои данные, в репозиторий не попадает
Приложение само определяет, есть ли сервер: запрашивает api/data, и если ответа нет — переключается на localStorage. Поэтому одна и та же сборка работает и локально, и на Pages.
Кэш-бастер ?v=N в index.html поднимать при каждой правке css/js.