Skip to content

alexhet/artpulse

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 

Repository files navigation

ArtPulse

Структура проекта

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

API эндпоинты

Авторизация (/api/auth)

Метод Путь Описание
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" }

Избранное (/api/favorites) — требует авторизации

Метод Путь Описание
GET /api/favorites Получить список избранного
POST /api/favorites Добавить в избранное
DELETE /api/favorites/:artworkId Удалить из избранного
POST /api/favorites/sync Синхронизировать из localStorage

Тело POST /api/favorites:

{ "artworkId": "tsifrovoy-son" }

Контактная форма (/api/contact)

Метод Путь Описание
POST /api/contact Отправить сообщение
GET /api/contact?adminKey=... Просмотр всех заявок (только для админа)

Тело POST:

{ "name": "Иван", "email": "ivan@mail.ru", "message": "Хочу посетить выставку..." }

Прочее

Метод Путь Описание
GET /api/health Проверка работоспособности сервера

Настройка email (SMTP)

По умолчанию в режиме разработки используется 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 политики

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors