Перейти к основному содержимому
Все проекты

Внутренний инструмент · дизайн + разработка · закрытый доступ

CRM сайтов

CRM сайтов — снимок главной страницы
Next.jsTypeScriptSupabaseгоризонт 2 года

Задача

Каждый сайт, который я веду, тянет за собой вереницу мелких обязательств: домен у одного регистратора, хостинг у другого, почтовые ящики ещё где-то, доступы ко всему этому и своя дата платежа у каждого. Разбросанная по счетам, письмам регистраторов и собственной памяти, эта вереница становится заметной только тогда, когда что-то уже просрочено, — а тихо потерянный домен в этом деле самая дорогая из возможных ошибок.

Что было сделано

Одна панель над всеми собственными проектами. У каждого сайта перечислены его сервисы — домен, хостинг, почта — с поставщиком за каждым, нужными доступами, датой продления и стоимостью. Дашборд начинается с того, что действительно требует внимания: что просрочено, что истекает в ближайшие тридцать дней и какие суммы спишутся автоматически, без чьего-либо подтверждения. Ниже горизонт продлений разворачивает два года помесячно, так что скопление продлений в одном месяце видно задолго до самих счетов. У каждого сайта своя годовая сумма, а панель складывает их в общие расходы на то, чтобы всё оставалось онлайн.

Технические решения

Next.js с App Router и TypeScript: каждый сервис, поставщик и платёж — типизированная запись, а не строка таблицы, которая молча принимает что угодно. Данные и авторизация — оба на Supabase: Postgres для самих записей, Supabase Auth для доступа к ним. Основную работу делают даты: остаток времени, сроки и автосписания вычисляются из одной сохранённой даты продления каждого сервиса — именно это позволяет вообще показать горизонт на два года, не ведя рядом второй календарь вручную.

Сознательно не сделано одного — публичного адреса. Панель содержит имена клиентов, аккаунты поставщиков и реальные суммы платежей, поэтому она нигде не развёрнута так, чтобы до неё мог добраться посетитель: этот кейс показывает, что она умеет и как устроена, и на этом останавливается. По той же причине с этой страницы нет ссылки на живой сайт — здесь просто не на что безопасно сослаться.