Многоязычный блог Svelte Markdown

Многоязычный блог Svelte Markdown

  • #github
  • #opensource
  • #code

16.04.2023

Особенности

  • Многоязычный блог в формате Markdown
  • Не требуется база данных
  • Удобная организация с помощью структуры папок /static
  • Frontmatter для указания названия поста, даты создания, тегов, видимости и отображения на главной странице
  • Автоматическое определение иллюстраций постов на основе названия папки
  • Удобный для мобильных устройств отзывчивый дизайн с меню бургера
  • Посты сортируются по дате на главной странице и внутри блога
  • Поддержка тегов для постов
  • Простой автопостинг для планирования постов на определенные даты
  • SEO оптимизация с помощью Server Site Generation (SSG)
  • Поддержка смены темных и светлых тем
  • Простое управление контентом через github с любого устройства (при использовании Vercel или аналогичного CD/CI)
  • Два типа i18n: 1) на основе домена: site.com & site.kg, 2) на основе пути: site.org/en & site.org/kg

Расширенные возможности (требуется БД)

  • Голосование за и против поста (для этой функции вам действительно нужна БД, мы используем, например, Deta)
  • Комменты к постам

Супер продвинутые функции с ИИ (интеграция с chatGPT)

  • Очень быстрая базовая автоматическая модерация через chatGPT (в среднем 1-5 сек.). Позволяет отсечь грубое нарушение этики.
  • Длительное Расширенное обнаружение СПАМа (в среднем занимает 20-60 сек., для длительных фоновых задач нужен аккаунт Vercel Pro или аналогичный)

Todo

  1. Оптимизируйте загрузку изображений
  2. Различные размеры изображений для предварительного просмотра и для полной статьи
  3. Перевести страницу проекта
  4. Перенести переводы в отдельный файл t.js для более удобного запуска.
  5. (сделано) Добавить возможность изменения языка через локальное хранилище или через домен (/en).
  6. Добавить возможность полной статической прегенерации (только для i18n на основе домена, потому что нужно изменить маршрутизацию на /[lang]/)
  7. Добавить поддержку пользовательских тем
  8. (сделано) Теперь у нас есть i18n на основе домена, добавьте git-ветку для альтернативного i18n с путем (/[lang]/).
  9. Добавьте мета-тег на все страницы (не только на блог).
  10. Установить ограничения: по ip, времени, размеру.
  11. Помечать пост как СПАМ не только после перезагрузки страницы
  12. Если длительное обнаружение СПАМа не удается из-за таймаута - пометьте эти сообщения как подозрительные

Ссылки

Рабочая демонстрация: https://lazarevsky.com

Github: https://github.com/gressus/blogflow