Синхронизация контента и фронтенд
Что реализовано
🎯 Что реализовано
✅ Система синхронизации
- 📁 Автоматическая синхронизация
backend/content/
→frontend/content/
- 👀 Отслеживание изменений в режиме реального времени
- ⚡ Умная синхронизация - только измененные файлы
- 🗑️ Автоудаление файлов, которых нет в backend
✅ Современный фронтенд
- 🏠 Главная страница с кнопкой "Посты"
- 📋 Список постов с дизайном как в админке
- 🏷️ Фильтрация по тегам в сайдбаре
- 📄 Пагинация с сохранением фильтров
- 📖 Отдельные страницы постов с полным контентом
- 🎨 shadcn/ui дизайн для консистентности
🚀 Запуск системы
Автоматический запуск всего
npm run dev
Запускает:
- Backend API (port 3333)
- Admin Panel (port 5173)
- Frontend (port 3000)
- Синхронизацию контента в режиме watch
Ручная синхронизация
# Одноразовая синхронизация
npm run sync
# Синхронизация с отслеживанием изменений
npm run sync:watch
📁 Структура синхронизации
Backend (источник)
backend/content/
├── welcome.mdx # Демо пост
├── test-post.mdx # Тестовый пост
├── sonner-update.mdx # Пост об обновлении
└── tags-fix-test.mdx # Пост об исправлении тегов
Frontend (синхронизированная копия)
frontend/content/
├── welcome.mdx # ← Автосинхронизация
├── test-post.mdx # ← Автосинхронизация
├── sonner-update.mdx # ← Автосинхронизация
└── tags-fix-test.mdx # ← Автосинхронизация
Процесс синхронизации
- 📝 Создание поста в админке → сохранение в
backend/content/
- 👀 Отслеживание изменений скриптом
sync-content.js
- 🔄 Автокопирование файла в
frontend/content/
- ⚡ Горячая перезагрузка Next.js подхватывает изменения
- 🌐 Мгновенное отображение нового поста на сайте
🎨 Фронтенд возможности
🏠 Главная страница (/
)
// Простая лендинг с кнопкой "Посты"
- Hero секция с заголовком PXLR CMS
- 3 карточки с возможностями системы
- Большая кнопка "Посмотреть посты"
- Ссылка на админ-панель
📋 Страница постов (/posts
)
// Список всех постов с фильтрацией
- Заголовок с количеством постов
- Sidebar с фильтрацией по тегам
- Карточки постов (дизайн как в админке)
- Пагинация с сохранением фильтров
Возможности списка постов:
- ✅ Красивые карточки с названием, описанием, метаданными
- ✅ Информация о посте: дата, автор, количество тегов
- ✅ Теги как ссылки для быстрой фильтрации
- ✅ Hover эффекты и плавные переходы
Sidebar с тегами:
- ✅ Все теги с количеством
- ✅ Активный фильтр с кнопкой сброса
- ✅ Быстрая фильтрация по клику на тег
- ✅ Информация о способах использования
📖 Страница поста (/posts/[slug]
)
// Полное отображение поста
- Кнопка "Назад к постам"
- Заголовок и описание поста
- Метаинформация (дата, автор, теги)
- Содержимое с красивой типографикой
- Блок "Похожие посты" (по тегам)
Особенности страницы поста:
- ✅ Профессиональная типографика с @tailwindcss/typography
- ✅ Responsive дизайн для всех устройств
- ✅ Навигация по тегам для фильтрации
- ✅ Связанные посты на основе общих тегов
- ✅ SEO-дружественная структура
🔧 Техническая реализация
Скрипт синхронизации (scripts/sync-content.js
)
// Возможности:
✅ Создание папки frontend/content/ если нет
✅ Копирование только .mdx файлов
✅ Проверка времени изменения (только новые файлы)
✅ Удаление файлов, которых нет в backend
✅ Статистика синхронизации
✅ Режим watch для автосинхронизации
✅ Обработка ошибок
Утилиты MDX (frontend/lib/mdx.ts
)
// Функции для работы с постами:
✅ getAllPosts() - получить все посты
✅ getPosts() - посты с пагинацией и фильтрацией
✅ getPostBySlug() - конкретный пост
✅ getAllTags() - все уникальные теги
✅ getRelatedPosts() - похожие посты
✅ markdownToHtml() - конвертация в HTML
✅ getPostsStats() - статистика постов
Компоненты фронтенда
// Структура компонентов:
📁 components/posts/
├── PostsList.tsx # Список постов с карточками
├── PostsFilter.tsx # Sidebar с фильтрацией по тегам
└── PostsPagination.tsx # Пагинация с URL параметрами
📁 app/
├── page.tsx # Главная страница
├── posts/page.tsx # Список постов
└── posts/[slug]/page.tsx # Отдельный пост
📊 Результат
✅ Что работает
- 🔄 Автосинхронизация контента в реальном времени
- 📝 Создание постов в админке → мгновенное появление на сайте
- 🏷️ Фильтрация по тегам с сохранением в URL
- 📄 Пагинация с навигацией по страницам
- 🎨 Современный дизайн с shadcn/ui
- 📱 Responsive для всех устройств
- ⚡ Быстрая загрузка с оптимизацией Next.js
🎯 Пример использования
1. Создание поста в админке
1. Открываете http://localhost:5173
2. Нажимаете "Создать пост"
3. Заполняете форму с тегами
4. Сохраняете пост
2. Автоматическая синхронизация
✅ Пост сохраняется в backend/content/new-post.mdx
✅ Скрипт синхронизации автоматически копирует в frontend/content/
✅ Next.js перезагружает страницы
✅ Пост сразу доступен на http://localhost:3000/posts
3. Просмотр на фронтенде
✅ Заходите на http://localhost:3000
✅ Нажимаете "Посмотреть посты"
✅ Видите новый пост в списке
✅ Можете фильтровать по тегам
✅ Кликаете на пост для чтения
🌟 Следующие шаги
🔄 Уже реализовано
- ✅ Синхронизация контента backend ↔ frontend
- ✅ Полноценный фронтенд с современным UI
- ✅ Фильтрация и пагинация
- ✅ Красивые страницы постов
🚀 Готово к развитию
- 🔜 Поиск по постам (полнотекстовый)
- 🔜 RSS лента для подписчиков
- 🔜 Комментарии к постам
- 🔜 SEO метатеги для лучшей индексации
- 🔜 Темная тема для фронтенда
📖 Команды
Управление системой
npm run dev # Запуск всей системы
npm run sync # Синхронизация контента
npm run sync:watch # Автосинхронизация
npm run build # Сборка для продакшна
Разработка
cd admin && npm run dev # Только админка
cd frontend && npm run dev # Только фронтенд
cd backend && npm run dev # Только API
Проверка
curl http://localhost:3333/health # Статус API
curl http://localhost:3000/posts # Фронтенд постов
open http://localhost:5173 # Админка
🎉 Система полностью функциональна!
Создавайте посты в админке и сразу видите их на красивом фронтенде с фильтрацией и пагинацией.
Похожие посты
Expected string, received array
разработкаpxlr
Создание постов
разработкаpxlr
PXLR CMS теперь включает мощный блочный редактор, который позволяет создавать контент используя различные типы блоков вместо традиционного текстового редактора.
разработкаpxlr