7.5 KiB
7.5 KiB
Настройка базы данных и системы управления новостями
Обзор системы
Система управления новостями для ckeproekt.ru включает:
- База данных: PostgreSQL с Prisma ORM
- API: REST API и GraphQL endpoints
- Админ-панель: Полнофункциональная панель управления
- Безопасность: JWT аутентификация и авторизация
- Функциональность: CRUD операции, пагинация, поиск, фильтрация
Требования
- Node.js 18+
- PostgreSQL 12+
- npm или yarn
Установка и настройка
1. Установка зависимостей
npm install
2. Настройка базы данных
- Создайте PostgreSQL базу данных:
CREATE DATABASE ckeproject;
- Обновите файл
.env
с вашими данными:
DATABASE_URL="postgresql://username:password@localhost:5432/ckeproject?schema=public"
NEXTAUTH_SECRET="your-secret-key-here"
NEXTAUTH_URL="http://localhost:3000"
3. Инициализация Prisma
# Генерация Prisma Client
npm run db:generate
# Применение схемы к базе данных
npm run db:push
# Заполнение базы данных начальными данными
npm run db:seed
4. Запуск приложения
npm run dev
Структура базы данных
Таблица users
id
- Уникальный идентификаторemail
- Email (уникальный)username
- Имя пользователя (уникальное)password
- Хешированный парольrole
- Роль (USER, ADMIN, EDITOR)name
- Полное имяavatar
- URL аватараcreatedAt
- Дата созданияupdatedAt
- Дата обновления
Таблица news
id
- Уникальный идентификаторtitle
- Заголовок новостиslug
- URL-слаг (уникальный)summary
- Краткое описаниеcontent
- Полное содержаниеcategory
- Категория новостиimageUrl
- URL изображенияfeatured
- Рекомендуемая новостьpublished
- Статус публикацииpublishedAt
- Дата публикацииauthorId
- ID автораviews
- Количество просмотровlikes
- Количество лайковtags
- Массив теговcreatedAt
- Дата созданияupdatedAt
- Дата обновления
Таблица categories
id
- Уникальный идентификаторname
- Название категорииslug
- URL-слаг (уникальный)description
- Описаниеcolor
- Цвет категорииcreatedAt
- Дата созданияupdatedAt
- Дата обновления
API Endpoints
REST API
Новости
GET /api/news
- Получить список новостейPOST /api/news
- Создать новостьGET /api/news/[id]
- Получить новость по IDPUT /api/news/[id]
- Обновить новостьDELETE /api/news/[id]
- Удалить новость
Категории
GET /api/categories
- Получить список категорийPOST /api/categories
- Создать категориюPUT /api/categories/[id]
- Обновить категориюDELETE /api/categories/[id]
- Удалить категорию
Аутентификация
POST /api/auth/login
- Вход в системуPOST /api/auth/register
- РегистрацияPOST /api/auth/logout
- Выход из системы
GraphQL API
GraphQL endpoint доступен по адресу /api/graphql
Примеры запросов
# Получить список новостей
query {
newsList(page: 1, limit: 10, category: "company") {
news {
id
title
summary
publishedAt
author {
name
}
}
total
totalPages
}
}
# Создать новость
mutation {
createNews(input: {
title: "Новая новость"
slug: "novaya-novost"
summary: "Краткое описание"
content: "Полное содержание"
category: "company"
featured: true
}) {
id
title
slug
}
}
Админ-панель
Админ-панель доступна по адресу /admin
Пользователи по умолчанию
После выполнения npm run db:seed
будут созданы:
-
Администратор
- Email:
admin@ckeproekt.ru
- Пароль:
admin123
- Роль: ADMIN
- Email:
-
Редактор
- Email:
editor@ckeproekt.ru
- Пароль:
editor123
- Роль: EDITOR
- Email:
Функциональность админ-панели
- ✅ Создание, редактирование и удаление новостей
- ✅ Управление категориями
- ✅ Загрузка изображений
- ✅ Визуальный редактор содержимого
- ✅ Система тегов
- ✅ Управление публикацией
- ✅ Поиск и фильтрация
- ✅ Пагинация
- ✅ Статистика
Безопасность
Аутентификация
- JWT токены для авторизации
- Хеширование паролей с bcrypt
- Защищенные API endpoints
Авторизация
- Роли пользователей (USER, ADMIN, EDITOR)
- Проверка прав доступа на уровне API
- Middleware для защиты маршрутов
Валидация
- Проверка входных данных
- Санитизация контента
- Защита от XSS и SQL инъекций
Развертывание в продакшн
1. Настройка переменных окружения
DATABASE_URL="postgresql://user:password@host:5432/database"
NEXTAUTH_SECRET="strong-secret-key"
NEXTAUTH_URL="https://your-domain.com"
2. Сборка приложения
npm run build
3. Миграция базы данных
npm run db:migrate
npm run db:seed
4. Запуск с PM2
npm run pm2:start
Мониторинг и обслуживание
Prisma Studio
Для просмотра и редактирования данных:
npm run db:studio
Логи
Логи доступны через PM2:
pm2 logs
Резервное копирование
Регулярно создавайте резервные копии базы данных:
pg_dump ckeproject > backup.sql
Миграция с существующей системы
Скрипт scripts/init-database.ts
автоматически мигрирует данные из lib/news-data.ts
в базу данных.
Поддержка
Для получения поддержки или сообщения об ошибках обращайтесь к разработчикам системы.
Лицензия
Система разработана специально для ckeproekt.ru и является собственностью компании.