Один сайт, два режима:
- Админка (по умолчанию):
index.html - Личная страница девушки:
index.html?key=<уникальный_ключ>
index.html— разметка страниц и блоков.assets/css/main.css— стили (включая витрину-карусель).assets/js/app.js— логика приложения (админка, Supabase, карусель).archive/— старые концепты/черновики.
- Откройте
index.html - Код доступа по умолчанию:
M8 - После входа создавайте/редактируйте профили и копируйте персональные ссылки для QR.
Код меняется в
assets/js/app.jsв константеADMIN_CODE.
Сайт поддерживает 2 режима хранения:
localStorage(автоматически, если Supabase не настроен)Supabase(если заполненыSUPABASE_URLиSUPABASE_ANON_KEY)
Константы в assets/js/app.js:
SUPABASE_URLSUPABASE_ANON_KEYSUPABASE_TABLE(по умолчаниюmarch8_profiles)SUPABASE_BUCKET(по умолчаниюmedia)
- Создайте проект в Supabase.
- В SQL Editor выполните файл
supabase_schema.sql. - В
Project Settings -> APIскопируйте:Project URLanon public key
- Вставьте их в
assets/js/app.jsвSUPABASE_URLиSUPABASE_ANON_KEY.
- Запушьте репозиторий на GitHub.
- В
Settings -> Pagesвыберите sourceGitHub Actions. - Дождитесь публикации.
- Проверьте:
- главная ссылка открывает админку,
- ссылка
?key=...открывает персональную страницу.
Текущий вариант больше не frontend-only для админки.
- Вход в мастер-панель идет через
Supabase Auth. - Пароль админа не хранится во фронтенде.
- Запись в профили, глобальные настройки и
Storageразрешена толькоauthenticatedпользователям из таблицыadmin_users. - Публичный пользователь (
anon) может только читать данные, которые нужны для открытия персональной страницы.
Что все еще важно понимать:
- Персональные страницы по-прежнему открываются на клиенте по
?key=.... - Если нужна строгая модель доступа без риска чтения/перебора профилей на клиентской стороне, следующим шагом нужен backend-слой:
Edge Functionили API с server-side проверкой ключа.