Session Flow
고객을 한 번 등록하면 월 일정이 자동으로 구성되고 세션별 금액이 표시됩니다. 결제 현황 확인 및 WhatsApp으로 청구
서비스 판매·콘텐츠 관리용 대시보드, 부분 결제·게시물·구독자·업무일지 제공, 의존성 없이 두 테마, 러/영 지원
Дашборд для тех, кто продаёт услуги и ведёт контент: сделки с частичной оплатой, публикации, подписчики, журнал работы. Без зависимостей, две темы, RU/EN.
비즈니스JavaScript · CSSGitHub @JakeWhite-ui온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
개인 계정의 공개 저장소 소유자는 GitHub로 로그인해 운영자를 확인하고 소개를 직접 관리할 수 있습니다. 관리자 승인은 필요하지 않습니다.
로그인한 뒤 확인 파일을 만들어 이 저장소의 기본 브랜치에 30분 안에 커밋해 주세요. 다른 브랜치나 포크의 파일은 인정하지 않습니다. 파일을 올린 뒤 아래에서 확인하면 관리자 승인 없이 관리할 수 있습니다. 자격을 유지하려면 파일을 남겨 두세요.
로그인이 필요하면 로그인 화면으로 이동합니다. 로그인 후 이곳으로 돌아와 원하는 확인 버튼을 다시 눌러 주세요.
프로젝트 폴더에서 /nomorevibe verify를 실행하면 소유권을 확인하고 소개를 직접 관리할 수 있습니다.
1분 만에 확인하기메이커가 쓴 소개는 위의 한 줄이 전부입니다. 더 자세한 내용은 저장소 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.