first commit

This commit is contained in:
2026-03-19 14:35:04 +07:00
parent ead769e9d1
commit 6d7d86befd

296
README.md Normal file
View 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