potyk.io
🔒

Админка (/admin/)

Главная

  • Пустая страница с h1 Админка сделать там кнопку Бекап

Бекап

  • Кнопка Бекап делает копирование instance/main.db в yandex object storage (s3 compat) с датой и названием компа

OLD SPEC

Раздел для залогиненного пользователя: главная с бекапом БД, создать пост с обложкой (картинка или видео), кино, рестораны и на локалке — закоммитить и запушить незакоммиченное. В меню сайта (секция «Проекты») — пункт «Админка» со 🔒 справа (как у «Личное»); перед ним — «Ишьюс» (ссылка на GitHub issues репозитория). Внутри админки сайдбар переключается на меню раздела (как у potyk-food).

Сценарии

Открыть админку

Залогиненный открывает /admin/ (или из меню, секция «Проекты») — попадает на главную админки. Без логина — как у других закрытых разделов (на логин).

В меню слева (сайдбар) пункты:

  • Создание поста
  • Кино — фильмы и коллекции potyk-cinema.
  • Рестораны — добавить место в список /food/rest.
  • Коммит и пуш — только на локалке; на проде пункта нет.
  • Яндекс Метрика — обзор счётчика сайта.
  • GitHub — репозиторий potyk-io.
  • potyk-io — возврат на главную сайта.

Главная и бекап БД

Зачем: быстро снять копию рабочей БД в облачное хранилище, чтобы не потерять данные с конкретного компа.

Что делает пользователь: открывает главную админки, нажимает «Бекап».

Ожидаемый результат:

  1. На главной — заголовок «Админка» и кнопка «Бекап».
  2. По нажатию копия БД уходит в объектное хранилище; в имени файла — дата/время и имя этого компьютера.
  3. При успехе — понятное сообщение об успехе; при ошибке сети/доступа/отсутствии файла — ошибка, без молчаливого «успеха».

Создание поста

Зачем: с телефона/прода быстро выложить пост в posts с одной обложкой, без ручного редактирования файлов.

Что делает пользователь: в меню выбирает «Создание поста», вводит название и выбирает файл обложки (картинка или видео), отправляет форму.

Ожидаемый результат:

  1. Файл обложки сохраняется на сайте (доступен по обычному статическому адресу).
  2. В разделе постов появляется новая markdown-страница: название как заголовок, в свойствах — дата и cover на сохранённый файл; в теле — то же медиа (картинка markdown’ом или видео-тегом), как у обычных постов.
  3. Пост открывается по своему URL и может попасть в ленту на главной (как другие md-заметки).
  4. Если название или файл пустые / файл не подходит — пост не создаётся, видно понятную ошибку.
  5. Если пост с таким адресом уже есть — не перезаписывается молча; ошибка или предложение другое имя (без потери уже лежащего поста).

Кино

Зачем: править фильмы и коллекции potyk-cinema из одной админки, без отдельной ссылки в разделе кино.

Что делает пользователь: в меню выбирает «Кино».

Ожидаемый результат: можно добавлять/править фильмы и коллекции, переносить фильмы между коллекциями (канбан), убирать фильм из коллекции. При добавлении фильма по ссылке Кинопоиска — превью обложки и автоскачивание при сохранении; коллекция обязательна (по умолчанию «Посмотреть позже»). На странице есть ссылка в публичный раздел кино (подборки), чтобы сразу посмотреть результат правок.

Рестораны

Зачем: добавить новое место в список /food/rest из админки.

Что делает пользователь: в меню выбирает «Рестораны», заполняет название, ссылку на карту, метро и теги.

Ожидаемый результат: ресторан появляется в публичном списке. Метро и теги — из уже использованных или новые. На странице есть ссылка к публичному списку ресторанов.

Коммит и пуш (только локалка)

Зачем: после появления на диске новых постов/медиа (с прода или локального создания) зафиксировать их в git и отправить в remote, чтобы репозиторий и синк деплоя не расходились.

Что делает пользователь: в меню выбирает «Коммит и пуш».

Ожидаемый результат:

  1. Виден список незакоммиченных изменений (новые и изменённые файлы; если нечего коммитить — так и сказано).
  2. По подтверждению: всё незакоммиченное уходит в один коммит и пушится в remote текущей ветки.
  3. После успеха список пустой (или страница показывает, что чисто); при ошибке git/сети — сообщение, рабочая копия не «ломается» молча.
  4. На проде этой страницы / действия нет.