Загрузка данных


ОБНОВЛЁННЫЙ ПРОМПТ ДЛЯ CLAUDE / AI-РАЗРАБОТЧИКА

Роль:
Ты — опытный full-stack разработчик, UI/UX-дизайнер, специалист по frontend-анимациям, безопасным админ-панелям, авторизации, базам данных и backend-интеграциям.

Мне нужно доработать сайт Delac.

Ссылка на сайт:
https://cheerful-douhua-305666.netlify.app/

Я прикрепил исходный код сайта. Сейчас сайт сделан как один HTML-файл со встроенными CSS и JavaScript. В коде уже есть лендинг, тарифы, Free-версия, вход, регистрация, личный кабинет, админ-панель, генерация ключей, загрузка файлов и скачивание. Но сейчас многое работает неправильно или небезопасно.

Текущие проблемы по исходному коду:
1. Пользователи, ключи и текущая сессия хранятся через localStorage:
   — delac_db;
   — delac_keys;
   — delac_user.

2. Админ-аккаунт захардкожен прямо в frontend-коде:
   — ADMIN_EMAIL;
   — ADMIN_PASS.
   Это небезопасно, потому что любой пользователь может открыть код сайта и увидеть эти данные.

3. Регистрация сейчас работает только локально в браузере пользователя.
   После регистрации данные не сохраняются в настоящей базе данных и не видны владельцу на другом устройстве.

4. Ключи тоже хранятся локально, поэтому нормальная система ключей невозможна без backend/базы данных.

5. Скачивания и счётчик downloads сейчас не являются надёжными, потому что пользователь может изменить localStorage вручную.

6. Сайт размещён на Netlify, поэтому для нормальной регистрации, ролей, ключей, файлов, скачиваний, отчётов и админ-панели нужен backend или BaaS-сервис.

7. В текущем коде уже есть дизайн, анимации, карточки, тарифы, личный кабинет, админ-панель и upload-зоны, но всё нужно сделать более красиво, плавно, современно и надёжно.

Главная задача:
Полностью доработай сайт Delac: улучшить дизайн, сделать сайт больше и живее, добавить плавные анимации, снежинки на фоне, рабочую регистрацию, роли, ключи, скачивания, админ-панель, отчёты, безопасную консоль и нормальное хранение данных.

Важно:
— не ломай текущую идею сайта;
— сохрани название Delac;
— сохрани тёмный технологичный стиль;
— сайт должен выглядеть как полноценный коммерческий продукт;
— все реальные данные должны храниться не в localStorage, а в нормальной базе данных;
— localStorage можно использовать только для UI-состояний, но не для пользователей, паролей, ключей, лицензий и админ-доступа;
— админ-пароль нельзя хранить в frontend-коде;
— пароли нельзя хранить открытым текстом;
— доступ к админ-функциям должен проверяться на серверной стороне или через Supabase RLS/Policies;
— обычный пользователь не должен видеть пользователей, ключи, отчёты и консоль;
— владелец должен иметь полный доступ;
— админы и модераторы должны иметь доступ только по разрешениям.

Технологическое решение:
Так как сайт находится на Netlify, предложи и реализуй самый удобный вариант для быстрого запуска.

Приоритетный вариант:
Supabase + текущий frontend.

Нужно использовать:
— Supabase Auth для регистрации и входа;
— Supabase Database для пользователей, ролей, ключей, лицензий, скачиваний и отчётов;
— Supabase Storage для файлов Free-версии и платной версии;
— Row Level Security / Policies для защиты данных;
— Netlify для размещения frontend;
— переменные окружения для ключей Supabase;
— при необходимости Netlify Functions для безопасных backend-действий.

Если текущий сайт остаётся обычным HTML/CSS/JS:
— раздели JavaScript на модули, если это возможно;
— вынеси auth, keys, downloads, admin, reports, UI-анимации в отдельные логические части;
— не оставляй весь код хаотично в одном script;
— если переписываешь на React/Vite, объясни почему и дай новую структуру проекта.

Что нужно сделать по дизайну:

1. Сделать сайт намного красивее:
   — современный тёмный UI;
   — технологичный стиль;
   — glow-эффекты;
   — плавные тени;
   — стеклянные карточки;
   — аккуратные градиенты;
   — улучшенные кнопки;
   — красивые формы;
   — адаптация под ПК, планшет и телефон;
   — более солидный hero-блок;
   — улучшенный footer;
   — больше воздуха между блоками.

2. Добавить плавные анимации:
   — плавное появление блоков при скролле;
   — fade-in;
   — slide-up;
   — scale;
   — hover-анимации;
   — анимация карточек тарифов;
   — плавные переходы между страницами/секциями;
   — анимация счётчиков;
   — плавная загрузка личного кабинета и админ-панели.

3. Добавить снежинки на заднем фоне:
   — снежинки должны плавно летать на фоне;
   — они не должны мешать чтению;
   — должны быть лёгкими по производительности;
   — можно сделать через canvas или CSS;
   — на слабых устройствах анимация должна быть оптимизирована;
   — предусмотреть prefers-reduced-motion.

4. Сделать сайт больше и информативнее:
   Добавить новые секции:
   — подробнее о Delac;
   — как работает античит;
   — возможности защиты;
   — преимущества;
   — почему стоит выбрать Delac;
   — Free vs Paid;
   — система лицензий;
   — как купить ключ;
   — как активировать ключ;
   — как скачать плагин;
   — блок FAQ;
   — этапы подключения;
   — системные требования;
   — возможности админ-панели;
   — отчёты;
   — AI-анализ;
   — безопасность;
   — поддержка.

5. Расширить тексты:
   — больше информации о продукте;
   — более продающие и понятные формулировки;
   — объяснить тарифы Start / Pro / Lifetime;
   — объяснить Free-версию;
   — объяснить систему ключей;
   — объяснить личный кабинет;
   — объяснить роль владельца и админ-панели.

Функционал регистрации и входа:

1. Убрать регистрацию через localStorage.
2. Подключить Supabase Auth или другой нормальный backend.
3. После регистрации пользователь должен сохраняться в базе.
4. После регистрации пользователь должен появляться в админ-панели.
5. Пользователь должен иметь роль User по умолчанию.
6. Владелец/Owner создаётся безопасно, не через frontend-пароль в коде.
7. Админ-аккаунт не должен быть виден в исходном коде.
8. Авторизация должна быть защищённой.
9. Нужно сделать logout.
10. Нужно сделать protected routes / protected pages.
11. Если пользователь не авторизован, он не должен попадать в личный кабинет.
12. Если пользователь не админ/владелец, он не должен попадать в админ-панель.

Система ролей:

Нужно сделать роли:

1. Owner:
   — полный доступ ко всему;
   — может создавать админов и модераторов;
   — может менять роли;
   — может выдавать и забирать permissions;
   — может видеть всех пользователей;
   — может видеть все ключи;
   — может видеть все скачивания;
   — может видеть все отчёты;
   — может загружать и заменять файлы;
   — может управлять безопасной консолью;
   — может выполнять kick, ban, tempban, callCheck;
   — может настраивать PowerShell-действия;
   — может открывать только разрешённые файлы отчётов.

2. Admin:
   — доступ только по выданным permissions;
   — может смотреть пользователей, если есть users.view;
   — может смотреть отчёты, если есть reports.view;
   — может управлять ключами, если есть keys.create / keys.delete;
   — может выполнять наказания, если есть нужные permissions.

3. Moderator:
   — ограниченный доступ;
   — может смотреть только разрешённые отчёты;
   — может выполнять только разрешённые действия.

4. User:
   — личный кабинет;
   — активация ключа;
   — скачивание Free-версии;
   — скачивание платной версии только при активной лицензии;
   — просмотр своего тарифа, лицензии и скачиваний.

Permissions:
— users.view;
— users.edit;
— users.block;
— keys.view;
— keys.create;
— keys.delete;
— keys.assign;
— reports.view;
— reports.export;
— files.upload;
— files.download;
— console.view;
— console.execute;
— punish.kick;
— punish.ban;
— punish.tempban;
— punish.check;
— roles.manage;
— admins.manage;
— settings.manage.

Система ключей:

Сейчас ключи работают неправильно, потому что хранятся локально. Нужно сделать полноценную систему ключей через базу данных.

Нужно:
1. Генерация ключей из админ-панели.
2. Выбор тарифа:
   — Start — 30 дней;
   — Pro — 90 дней;
   — Lifetime — навсегда.
3. Генерация одного или нескольких ключей.
4. Каждый ключ должен быть уникальным.
5. Каждый ключ должен быть одноразовым.
6. Ключ может иметь статус:
   — active;
   — used;
   — disabled;
   — expired.
7. После активации:
   — ключ получает статус used;
   — сохраняется used_by;
   — сохраняется activated_at;
   — пользователю выдаётся тариф;
   — рассчитывается дата окончания лицензии;
   — создаётся запись в reports;
   — пользователь получает доступ к платной версии.
8. В админ-панели нужно видеть:
   — key;
   — plan;
   — days;
   — status;
   — created_by;
   — created_at;
   — used_by;
   — activated_at;
   — expires_at.
9. Добавить поиск и фильтры:
   — все;
   — активные;
   — использованные;
   — отключённые;
   — по тарифу;
   — по пользователю.
10. Добавить экспорт ключей, если возможно.

Скачивание:

1. Free-версия:
   — доступна всем;
   — перед скачиванием показывать предупреждение, что Free-версия устаревшая;
   — после скачивания записывать событие в reports/downloads, если пользователь авторизован;
   — если пользователь не авторизован, можно записывать анонимное скачивание с IP, если backend это поддерживает.

2. Платная версия:
   — доступна только пользователю с активной лицензией;
   — файл должен храниться в Supabase Storage или другом безопасном хранилище;
   — ссылка на скачивание не должна быть постоянной публичной ссылкой;
   — желательно выдавать signed URL на короткое время;
   — после каждого скачивания нужно увеличивать downloads на +1;
   — downloads должен храниться в базе данных;
   — после скачивания нужно создать report:
     кто скачал, когда, какой файл, IP, user agent, тариф.

3. В личном кабинете:
   — отображать статус лицензии;
   — тариф;
   — дату окончания;
   — осталось дней;
   — количество скачиваний;
   — активный ключ;
   — кнопку скачивания;
   — кнопку активации ключа.

Админ-панель:

Нужно расширить админ-панель и сделать разделы:

1. Dashboard:
   — всего пользователей;
   — активных лицензий;
   — всего скачиваний;
   — создано ключей;
   — активировано ключей;
   — последние регистрации;
   — последние скачивания;
   — последние действия админов;
   — быстрые метрики.

2. Users:
   — таблица пользователей;
   — поиск по email/нику/IP;
   — фильтр по роли;
   — фильтр по тарифу;
   — просмотр профиля;
   — изменение роли;
   — выдача лицензии вручную;
   — сброс лицензии;
   — блокировка пользователя;
   — история действий пользователя;
   — количество скачиваний.

3. Keys:
   — генерация ключей;
   — список ключей;
   — фильтры;
   — поиск;
   — ручная выдача ключа;
   — деактивация ключа;
   — экспорт ключей.

4. Files:
   — загрузка платной версии плагина;
   — загрузка Free-версии;
   — отображение текущего файла;
   — версия файла;
   — дата загрузки;
   — размер файла;
   — кто загрузил;
   — замена файла;
   — история загрузок.

5. Reports:
   — список отчётов;
   — кто зарегистрировался;
   — кто вошёл;
   — кто активировал ключ;
   — кто скачал файл;
   — кто забанил;
   — кто кикнул;
   — кто выдал tempban;
   — кто вызвал на проверку;
   — кто изменил роль;
   — кто создал ключ;
   — IP;
   — дата/время;
   — результат действия;
   — ошибка, если была.
   Нужны фильтры по дате, типу действия, пользователю, IP, роли.

6. Console:
   Сделать безопасную консоль управления сервером.
   Важно: не делать выполнение любых системных команд.
   Нужен allowlist безопасных действий:
   — banPlayerByName;
   — banPlayerByIp;
   — kickPlayer;
   — tempBanPlayer;
   — callPlayerToCheck;
   — unbanPlayer;
   — viewPlayerHistory;
   — viewReports.
   Для каждого действия:
   — проверять роль;
   — проверять permission;
   — валидировать ввод;
   — логировать действие;
   — показывать результат;
   — делать подтверждение для опасных действий.

7. Roles:
   — владелец может создавать роли;
   — владелец может назначать permissions;
   — владелец может создавать логины/аккаунты для админов и модераторов;
   — владелец может менять пароли админам через безопасный механизм;
   — обычный пользователь не имеет доступа.

8. AI Reports:
   Если реального ИИ пока нет, сделать красивый интерфейс-заготовку:
   — AI status;
   — risk score;
   — suspicious events;
   — рекомендации;
   — история анализа;
   — дата последнего обучения;
   — описание, что AI-анализ помогает админам, но финальное решение принимает человек.
   Не выдумывать реальное ИИ-обучение, если backend/модель не реализованы.

PowerShell / управление сервером:

Мне нужно, чтобы сайт мог быть связан с PowerShell-командами для управления сервером, но это должно быть сделано безопасно.

Важно:
— не запускать произвольные команды из браузера;
— не давать пользователям вводить системные команды;
— не делать public endpoint, который выполняет любые команды;
— команды должны быть только из allowlist;
— PowerShell-команды должны быть настраиваемыми только владельцем;
— все действия логировать;
— запускать команды асинхронно;
— обрабатывать ошибки;
— ограничить timeout;
— валидировать ник, IP и причину;
— бан должен быть по нику и IP;
— поддержать kick, ban, tempban и вызов на проверку.

Пример разрешённых действий:
— kickPlayer(nickname, reason);
— banPlayerByName(nickname, reason);
— banPlayerByIp(ip, reason);
— tempBanPlayer(nickname, duration, reason);
— callPlayerToCheck(nickname, message);
— unbanPlayer(nicknameOrIp).

Если Netlify не подходит для прямого PowerShell:
— объясни, что нужен отдельный backend/agent на сервере владельца;
— сделай безопасную схему:
   1. сайт отправляет разрешённое действие в backend;
   2. backend проверяет токен, роль и permission;
   3. backend записывает report;
   4. backend передаёт команду локальному агенту;
   5. локальный агент выполняет только allowlist-команды PowerShell;
   6. результат возвращается в админ-панель.
— дай пример backend API и пример локального агента, если это нужно.

Отчёты и файлы:

Нужно сделать отчёты для админов:
— дата;
— время;
— действие;
— кто выполнил;
— над кем выполнено;
— причина;
— IP;
— роль исполнителя;
— результат;
— ошибка.

Нужно:
— смотреть отчёты в админ-панели;
— фильтровать отчёты;
— искать по нику/email/IP;
— экспортировать отчёты;
— открывать только разрешённые файлы отчётов из папки reports;
— защитить от path traversal;
— не давать доступ ко всем файлам сервера;
— не открывать .env, токены, приватные ключи, конфиги сервера и любые секреты.

Безопасность:

Обязательно исправить:
1. Убрать ADMIN_EMAIL и ADMIN_PASS из frontend.
2. Убрать хранение паролей в localStorage.
3. Убрать хранение лицензий и ключей в localStorage.
4. Проверять права на backend/Supabase RLS.
5. Использовать хеширование паролей, если не используется Supabase Auth.
6. Защитить админ-панель.
7. Защитить файлы платной версии.
8. Защитить скачивание signed URLs.
9. Логировать все опасные действия.
10. Не выполнять произвольные PowerShell-команды.
11. Защитить отчёты и открытие файлов.
12. Добавить валидацию форм.
13. Добавить rate limit для login/register/key activation, если используется backend.
14. Не хранить секреты в frontend-коде.

База данных Supabase:

Предложи SQL-схему для таблиц:
— profiles;
— roles;
— role_permissions;
— user_roles или role поле в profiles;
— license_keys;
— licenses;
— downloads;
— reports;
— files;
— admin_actions;
— console_actions;
— ai_events.

Для каждой таблицы укажи:
— поля;
— типы;
— связи;
— индексы;
— RLS policies;
— какие роли могут читать/изменять данные.

Нужно сделать seed/instruction для создания первого Owner:
— без публикации пароля в frontend;
— через Supabase dashboard или secure backend endpoint;
— объяснить, как безопасно создать владельца.

Что нужно выдать в ответе:

1. Краткий анализ текущего кода.
2. Что именно нужно убрать из текущего кода.
3. Что оставить и улучшить.
4. Новая структура проекта.
5. Подключение Supabase.
6. SQL-схема таблиц.
7. RLS/Policies.
8. Исправленная регистрация и вход.
9. Protected admin access.
10. Система ролей.
11. Система ключей.
12. Личный кабинет.
13. Рабочее скачивание Free и Paid.
14. Увеличение downloads на +1 после каждого скачивания.
15. Отчёты.
16. Админ-панель.
17. Безопасная консоль.
18. PowerShell-интеграция через allowlist и backend/agent.
19. Снежинки на фоне.
20. Плавные анимации.
21. Расширенные секции сайта.
22. Обновлённый дизайн.
23. Инструкция, куда вставлять код.
24. Инструкция, как развернуть на Netlify.
25. Инструкция, какие переменные окружения добавить.
26. Финальный чек-лист безопасности.

Формат результата:
Сначала дай план и архитектуру.
Потом дай код по частям.
Не пытайся сразу выдать 50 000 строк в одном ответе.
Если ответ слишком большой, раздели на части:
Часть 1 — архитектура, структура проекта, Supabase, безопасность.
Часть 2 — frontend-дизайн, анимации, снежинки, секции.
Часть 3 — auth, личный кабинет, роли.
Часть 4 — ключи, лицензии, скачивания.
Часть 5 — админ-панель, users, keys, files, reports.
Часть 6 — безопасная консоль и PowerShell-интеграция.
Часть 7 — финальная сборка и деплой.

Мои пожелания:
— сайт должен стать намного красивее;
— всё должно плавно появляться;
— на фоне должны летать снежинки;
— кнопка скачивания должна работать везде;
— после каждого скачивания должно добавляться +1 к скачиваниям;
— регистрация должна работать нормально;
— владелец должен видеть всех зарегистрированных пользователей;
— пользователей должен видеть только админ/владелец;
— ключи должны нормально создаваться и активироваться;
— не должно быть только принудительного создания ключей;
— должна быть система ролей;
— владелец должен создавать роли, ники и пароли для других людей;
— должна быть консоль управления сервером;
— консоль должна быть безопасной и доступной только по ролям;
— владелец должен контролировать всё;
— должны быть kick, ban, tempban, вызов на проверку;
— бан должен быть по нику и IP;
— должны быть отчёты: кто, когда, кого забанил/кикнул/вызвал на проверку;
— должна быть история скачиваний;
— должна быть папка/раздел с отчётами для админов;
— должен быть AI-раздел/AI reports;
— админ может открывать только разрешённые файлы отчётов, а не любые файлы сервера;
— сайт должен быть больше, информативнее и солиднее.

Дополнительное важное уточнение:
Если я прошу “полный контроль через консоль”, реализуй это не как опасное выполнение любых команд, а как безопасную панель управления с заранее разрешёнными действиями. Полный контроль владельца означает полный контроль над функциями сайта и разрешёнными серверными действиями, но не открытый доступ к произвольным системным командам и секретным файлам.