ArtPulse/
├── backend/ ← Node.js сервер
│ ├── db/
│ │ └── database.js ← SQLite инициализация
│ ├── middleware/
│ │ └── auth.js ← JWT middleware
│ ├── routes/
│ │ ├── auth.js ← /api/auth/*
│ │ ├── favorites.js ← /api/favorites/*
│ │ └── contact.js ← /api/contact
│ ├── data/ ← создаётся автоматически (БД SQLite)
│ ├── server.js ← точка входа
│ ├── package.json
│ └── .env.example ← скопируйте в .env
│
└── frontend/ ← статический фронтенд
├── css/
│ └── style.css
├── js/
│ ├── api.js ← общий fetch-помощник
│ ├── main.js ← карточки артворков
│ └── components/
│ ├── auth.js ← вход/регистрация/выход
│ ├── favorites.js ← избранное
│ ├── contact-form.js ← форма обратной связи
│ ├── navbar.js ← мобильное меню
│ └── carousel.js ← слайдер выставки
├── assets/
│ ├── images/
│ │ ├── artworks/ ← ваши изображения
│ │ ├── about/
│ │ ├── heroes/
│ │ ├── visit/
│ │ └── developer.jpg
│ └── videos/
│ ├── echoes-of-tomorrow.mp4
│ ├── neural-networks.mp4
│ └── celestial-bodies.mp4
├── index.html
├── artist.html
└── visit.html
| Метод | Путь | Описание |
|---|---|---|
| POST | /api/auth/register |
Регистрация |
| POST | /api/auth/login |
Вход |
| POST | /api/auth/logout |
Выход |
| GET | /api/auth/me |
Текущий пользователь |
Тело запроса для регистрации:
{ "name": "Иван", "email": "ivan@mail.ru", "password": "123456" }Тело запроса для входа:
{ "email": "ivan@mail.ru", "password": "123456" }| Метод | Путь | Описание |
|---|---|---|
| GET | /api/favorites |
Получить список избранного |
| POST | /api/favorites |
Добавить в избранное |
| DELETE | /api/favorites/:artworkId |
Удалить из избранного |
| POST | /api/favorites/sync |
Синхронизировать из localStorage |
Тело POST /api/favorites:
{ "artworkId": "tsifrovoy-son" }| Метод | Путь | Описание |
|---|---|---|
| POST | /api/contact |
Отправить сообщение |
| GET | /api/contact?adminKey=... |
Просмотр всех заявок (только для админа) |
Тело POST:
{ "name": "Иван", "email": "ivan@mail.ru", "message": "Хочу посетить выставку..." }| Метод | Путь | Описание |
|---|---|---|
| GET | /api/health |
Проверка работоспособности сервера |
По умолчанию в режиме разработки используется Ethereal — тестовый SMTP. Письма не доставляются, но ссылку для просмотра видно в консоли сервера.
Для реальной отправки добавьте в .env:
SMTP_HOST=smtp.yandex.ru
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your@yandex.ru
SMTP_PASS=пароль_приложения
SMTP_FROM=noreply@artpulse.gallery
GALLERY_EMAIL=info@artpulse.galleryОткройте в браузере:
http://localhost:3000/api/contact?adminKey=ваш_ADMIN_KEY_из_.env
- Express — HTTP сервер
- better-sqlite3 — встроенная SQLite БД (файл
backend/data/artpulse.db) - bcryptjs — хеширование паролей
- jsonwebtoken — JWT в httpOnly-куке
- nodemailer — отправка email
- express-rate-limit — защита от брутфорса
- cookie-parser — работа с куками
- cors — CORS политики