first commit
This commit is contained in:
296
README.md
Normal file
296
README.md
Normal file
@@ -0,0 +1,296 @@
|
|||||||
|
# PostgreSQL Admin Panel (PG-Admin)
|
||||||
|
|
||||||
|
## 🎯 Описание
|
||||||
|
|
||||||
|
Современная, production-ready панель администратора для управления PostgreSQL базами данных с модульной архитектурой, поддержкой темной/светлой темы, адаптивным дизайном и полной функциональностью для администраторов.
|
||||||
|
|
||||||
|
## ✨ Особенности
|
||||||
|
|
||||||
|
### 🏗️ Архитектура
|
||||||
|
- **Модульная структура** - разделение на отдельные модули (auth, dashboard, admin)
|
||||||
|
- **Frontend и Backend разделены** - чистая архитектура
|
||||||
|
- **SPA (Single Page Application)** - быстрая навигация без перезагрузок
|
||||||
|
- **RESTful API** - стандартные API endpoints
|
||||||
|
|
||||||
|
### 🎨 Дизайн & UX
|
||||||
|
- **Темная/Светлая тема** - автоматическое определение системной темы
|
||||||
|
- **Адаптивный дизайн** - полная поддержка мобильных устройств
|
||||||
|
- **Современный UI** - использование Tailwind CSS и Lucide Icons
|
||||||
|
- **Плавные анимации** - интерактивные переходы и эффекты
|
||||||
|
- **Доступность** - поддержка клавиатурной навигации
|
||||||
|
|
||||||
|
### 👥 Управление пользователями
|
||||||
|
- **Разные роли** - superadmin, admin, moderator, viewer
|
||||||
|
- **Управление правами доступа** - контроль доступа к функциям
|
||||||
|
- **Активация/Деактивация** - управление состоянием пользователей
|
||||||
|
- **Логирование** - отслеживание всех действий в системе
|
||||||
|
|
||||||
|
### 💾 Работа с базой данных
|
||||||
|
- **Просмотр таблиц** - список всех таблиц в БД
|
||||||
|
- **Просмотр данных** - пагинация, поиск, фильтрация
|
||||||
|
- **SQL запросы** - выполнение произвольных SQL запросов
|
||||||
|
- **Статистика** - информация о размере и состоянии БД
|
||||||
|
|
||||||
|
### 🔒 Безопасность
|
||||||
|
- **Хеширование паролей** - bcryptjs для безопасного хранения
|
||||||
|
- **Session-based auth** - безопасное управление сеансами
|
||||||
|
- **CSRF защита** - встроенная в Express session
|
||||||
|
- **SQL injection protection** - параметризованные запросы
|
||||||
|
|
||||||
|
### 📱 Мобильная поддержка
|
||||||
|
- **Responsive Layout** - адаптащия для всех размеров экранов
|
||||||
|
- **Touch-friendly** - оптимизированные кнопки и элементы
|
||||||
|
- **Боковое меню** - сворачиваемое на мобильных устройствах
|
||||||
|
- **Компактная навигация** - эффективное использование пространства
|
||||||
|
|
||||||
|
## 🚀 Быстрый старт
|
||||||
|
|
||||||
|
### Требования
|
||||||
|
- Node.js 14+
|
||||||
|
- PostgreSQL 12+
|
||||||
|
- Docker & Docker Compose (опционально)
|
||||||
|
|
||||||
|
### Установка
|
||||||
|
|
||||||
|
1. **Клонируйте репозиторий**
|
||||||
|
```bash
|
||||||
|
git clone <repository-url>
|
||||||
|
cd pg-admin
|
||||||
|
```
|
||||||
|
|
||||||
|
2. **Установите зависимости**
|
||||||
|
```bash
|
||||||
|
npm install
|
||||||
|
```
|
||||||
|
|
||||||
|
3. **Создайте файл .env**
|
||||||
|
```bash
|
||||||
|
cp .env.example .env
|
||||||
|
```
|
||||||
|
|
||||||
|
4. **Отредактируйте .env с вашими данными**
|
||||||
|
```env
|
||||||
|
NODE_ENV=development
|
||||||
|
PORT=3000
|
||||||
|
SESSION_SECRET=your-secret-key-change-this
|
||||||
|
|
||||||
|
DB_HOST=localhost
|
||||||
|
DB_PORT=5432
|
||||||
|
DB_NAME=postgres
|
||||||
|
DB_USER=postgres
|
||||||
|
DB_PASSWORD=postgres
|
||||||
|
```
|
||||||
|
|
||||||
|
5. **Запустите приложение**
|
||||||
|
```bash
|
||||||
|
npm start
|
||||||
|
```
|
||||||
|
|
||||||
|
или для разработки с автоперезагрузкой:
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
6. **Откройте браузер**
|
||||||
|
```
|
||||||
|
http://localhost:3000
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐳 Docker запуск
|
||||||
|
|
||||||
|
```bash
|
||||||
|
docker-compose up --build
|
||||||
|
```
|
||||||
|
|
||||||
|
Приложение станет доступно на `http://localhost:3000`
|
||||||
|
|
||||||
|
## 📁 Структура проекта
|
||||||
|
|
||||||
|
```
|
||||||
|
pg-admin/
|
||||||
|
├── public/ # Frontend код
|
||||||
|
│ ├── index.html # Главная страница
|
||||||
|
│ ├── modules/ # UI модули
|
||||||
|
│ │ ├── auth/ # Аутентификация
|
||||||
|
│ │ ├── dashboard/ # Основная панель
|
||||||
|
│ │ └── admin/ # Админ панель
|
||||||
|
│ ├── styles/ # CSS файлы
|
||||||
|
│ │ ├── main.css # Основные стили
|
||||||
|
│ │ ├── theme.css # Темы (свет/темнота)
|
||||||
|
│ │ ├── responsive.css # Адаптивность
|
||||||
|
│ │ └── animations.css # Анимации
|
||||||
|
│ └── js/ # JavaScript
|
||||||
|
│ ├── theme.js # Управление темой
|
||||||
|
│ ├── api.js # API запросы
|
||||||
|
│ ├── auth.js # Аутентификация
|
||||||
|
│ ├── router.js # SPA роутер
|
||||||
|
│ └── app.js # Главное приложение
|
||||||
|
│
|
||||||
|
├── src/ # Backend код
|
||||||
|
│ ├── routes/ # API маршруты
|
||||||
|
│ │ ├── auth.js # Аутентификация
|
||||||
|
│ │ ├── users.js # Управление пользователями
|
||||||
|
│ │ ├── db-tables.js # Работа с БД
|
||||||
|
│ │ └── admin.js # Админ функции
|
||||||
|
│ ├── middleware/ # Express middleware
|
||||||
|
│ ├── config/ # Конфиг файлы
|
||||||
|
│ └── database/ # Database helpers
|
||||||
|
│
|
||||||
|
├── server.js # Главный файл приложения
|
||||||
|
├── Dockerfile # Docker конфиг
|
||||||
|
├── docker-compose.yml # Docker Compose конфиг
|
||||||
|
├── package.json # NPM зависимости
|
||||||
|
├── .env.example # Пример .env файла
|
||||||
|
└── README.md # Этот файл
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🔐 Учетные данные по умолчанию
|
||||||
|
|
||||||
|
При первом запуске создается администратор:
|
||||||
|
- **Email:** admin@example.com
|
||||||
|
- **Пароль:** admin123
|
||||||
|
|
||||||
|
⚠️ **Обязательно смените пароль после первого входа!**
|
||||||
|
|
||||||
|
## 🛣️ API Endpoints
|
||||||
|
|
||||||
|
### Аутентификация
|
||||||
|
- `POST /api/auth/register` - Регистрация
|
||||||
|
- `POST /api/auth/login` - Вход
|
||||||
|
- `POST /api/auth/logout` - Выход
|
||||||
|
- `GET /api/auth/me` - Текущий пользователь
|
||||||
|
|
||||||
|
### Пользователи
|
||||||
|
- `GET /api/users` - Список пользователей (админ)
|
||||||
|
- `POST /api/users` - Создать пользователя (админ)
|
||||||
|
- `PATCH /api/users/:userId` - Обновить пользователя
|
||||||
|
- `DELETE /api/users/:userId` - Удалить пользователя (админ)
|
||||||
|
|
||||||
|
### База данных
|
||||||
|
- `GET /api/db/tables` - Список таблиц
|
||||||
|
- `GET /api/db/tables/:tableName/data` - Данные таблицы
|
||||||
|
- `POST /api/db/query` - Выполнить SQL запрос
|
||||||
|
- `GET /api/db/stats` - Статистика БД
|
||||||
|
|
||||||
|
### Администрирование
|
||||||
|
- `GET /api/admin/stats` - Системная статистика
|
||||||
|
- `GET /api/admin/logs` - Логи активности
|
||||||
|
- `GET /api/admin/backups` - Список резервных копий
|
||||||
|
- `POST /api/admin/backups` - Создать резервную копию
|
||||||
|
|
||||||
|
## 🎨 Настройки темы
|
||||||
|
|
||||||
|
Приложение автоматически определяет предпочтение темы системы:
|
||||||
|
- **Темная тема** - если система установила темный режим
|
||||||
|
- **Светлая тема** - если система установила светлый режим
|
||||||
|
|
||||||
|
Пользователь может переключать тему вручную с помощью кнопки (🌙/☀️) в заголовке.
|
||||||
|
|
||||||
|
Выбор сохраняется в localStorage.
|
||||||
|
|
||||||
|
## 📱 Адаптивность
|
||||||
|
|
||||||
|
Приложение полностью адаптивно:
|
||||||
|
- **Mobile** (< 640px) - оптимизированный интерфейс
|
||||||
|
- **Tablet** (640-1024px) - промежуточный размер
|
||||||
|
- **Desktop** (> 1024px) - полный функционал
|
||||||
|
|
||||||
|
## 🚦 Роли и права доступа
|
||||||
|
|
||||||
|
### Superadmin
|
||||||
|
- Полный доступ ко всем функциям
|
||||||
|
- Управление пользователями
|
||||||
|
- Администрирование системы
|
||||||
|
- Просмотр логов
|
||||||
|
|
||||||
|
### Admin
|
||||||
|
- Управление таблицами
|
||||||
|
- Просмотр и редактирование данных
|
||||||
|
- Управление пользователями
|
||||||
|
- Просмотр статистики
|
||||||
|
|
||||||
|
### Moderator
|
||||||
|
- Просмотр и редактирование данных
|
||||||
|
- Ограниченный доступ к таблицам
|
||||||
|
- Без прав на удаление
|
||||||
|
|
||||||
|
### Viewer
|
||||||
|
- Только просмотр данных
|
||||||
|
- Без прав на редактирование
|
||||||
|
|
||||||
|
## 🔧 Разработка
|
||||||
|
|
||||||
|
### Горячая перезагрузка
|
||||||
|
```bash
|
||||||
|
npm run dev
|
||||||
|
```
|
||||||
|
|
||||||
|
### Структура кода
|
||||||
|
|
||||||
|
**Frontend:**
|
||||||
|
- Modular: каждый компонент в своем модуле
|
||||||
|
- API layer: централизованные запросы в `api.js`
|
||||||
|
- Router: SPA маршрутизация в `router.js`
|
||||||
|
- Theme: система тем в `theme.js`
|
||||||
|
|
||||||
|
**Backend:**
|
||||||
|
- Express.js фреймворк
|
||||||
|
- PostgreSQL драйвер `pg`
|
||||||
|
- Bcryptjs для паролей
|
||||||
|
- Session-based аутентификация
|
||||||
|
|
||||||
|
### Тестирование
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Регистрация нового пользователя
|
||||||
|
curl -X POST http://localhost:3000/api/auth/register \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"name":"Test","email":"test@example.com","password":"test123"}'
|
||||||
|
|
||||||
|
# Вход
|
||||||
|
curl -X POST http://localhost:3000/api/auth/login \
|
||||||
|
-H "Content-Type: application/json" \
|
||||||
|
-d '{"email":"test@example.com","password":"test123"}'
|
||||||
|
|
||||||
|
# Список таблиц
|
||||||
|
curl http://localhost:3000/api/db/tables
|
||||||
|
```
|
||||||
|
|
||||||
|
## 🐛 Известные проблемы
|
||||||
|
|
||||||
|
- Функция дублирования таблиц требует реализации
|
||||||
|
- Экспорт данных в CSV/JSON планируется
|
||||||
|
- Мониторинг запросов к БД в разработке
|
||||||
|
|
||||||
|
## 🗺️ Дорожная карта
|
||||||
|
|
||||||
|
- [ ] Резервное копирование БД
|
||||||
|
- [ ] Экспорт/импорт данных
|
||||||
|
- [ ] Мониторинг производительности
|
||||||
|
- [ ] Интеграция с аналитикой
|
||||||
|
- [ ] WebSocket поддержка
|
||||||
|
- [ ] Offline режим
|
||||||
|
- [ ] PWA преобразование
|
||||||
|
|
||||||
|
## 📝 Лицензия
|
||||||
|
|
||||||
|
MIT License - смотрите LICENSE файл для деталей
|
||||||
|
|
||||||
|
## 👥 Поддержка
|
||||||
|
|
||||||
|
Обнаружили баг? Откройте issue на GitHub.
|
||||||
|
|
||||||
|
Есть идеи для улучшения? Создайте pull request.
|
||||||
|
|
||||||
|
## 📚 Дополнительные ресурсы
|
||||||
|
|
||||||
|
- [Express.js документация](https://expressjs.com/)
|
||||||
|
- [PostgreSQL документация](https://www.postgresql.org/docs/)
|
||||||
|
- [Tailwind CSS](https://tailwindcss.com/)
|
||||||
|
- [Lucide Icons](https://lucide.dev/)
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
**Версия:** 2.0.0
|
||||||
|
**Поддержка:** Node.js 14+
|
||||||
|
**Лицензия:** MIT
|
||||||
Reference in New Issue
Block a user