# 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 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