Skip to content

wacko-io/drupal-backend

Repository files navigation

drupal-backend

Бэкенд для фронтенда drupal/.

Стек технологий

  • Node.js (без Express или других высокоуровневых фреймворков)
  • Кастомный микро-фреймворк:
    • единая точка входа (src/index.js)
    • кастомный роутер с поддержкой динамических параметров
    • поддержка middleware
    • простой шаблонизатор
  • MySQL 8
  • Docker / docker-compose

Что реализовано

  • REST API для данных формы:
    • POST /api/forms - создание нового профиля для неавторизованного пользователя
    • PUT /api/forms/:id - обновление ранее отправленных данных для авторизованного пользователя
    • GET /api/forms/:id - получение ранее отправленных данных для авторизованного пользователя
  • Типы контента:
    • входящий: JSON или XML
    • исходящий: JSON или XML (определяется заголовком Accept или XML-запросом)
  • Логика валидации является общей для API и HTML-фоллбэка (без дублирования кода).
  • Авторизация для API чтения/обновления: HTTP Basic (login:password).
  • Поддержка CORS для списка разрешенных источников фронтенда (FRONTEND_ORIGINS).
  • HTML-страница (фоллбэк) с динамическими JS-обработчиками формы:
    • JS включен: отправка через fetch без перезагрузки страницы
    • JS отключен: работает обычная отправка формы методом POST

Модель ответа (создание)

POST /api/forms (для неавторизованных) возвращает:

  • сгенерированный login
  • сгенерированный password
  • profileUrl (адрес профиля пользователя)

Локальный запуск

  1. Создайте файл окружения:
cp .env.example .env
  1. Запустите сервисы:
docker compose up -d --build
  1. Откройте в браузере:
  • статус бэкенда (health): http://localhost:18085/health
  • страницу-фоллбэк: http://localhost:18085/

Основные переменные окружения

  • APP_HOST_PORT=18085
  • PORT=3000
  • DB_HOST=mysql
  • DB_PORT=3306
  • DB_NAME=drupal_backend
  • DB_USER=drupal
  • DB_PASSWORD=drupal
  • DB_ROOT_PASSWORD=root
  • BASE_URL=http://localhost:18085
  • FRONTEND_ORIGINS=https://wacko-io.github.io,http://localhost:5173,http://127.0.0.1:5173

Интеграция с фронтендом (drupal/)

Фронтенд уже переведен с Formcarry на этот API бэкенда.

Задайте URL бэкенда для сборки/выполнения Vite:

VITE_BACKEND_URL=http://localhost:18085

Затем пересоберите фронтенд:

npm run build

About

A web project developed as part of the 3rd term coursework at KubSU. Dmitry Matveev(wacko-io) МО21/2

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors