Задание: Веб-программист. Миграция backend с PHP на Node.js+NestJS (с сохранением текущего фронтенда) небольшого приложения (Дистанционная работа)
1. AS IS:
Приложение состоит из:
- index.php - главная страница сайта, отсюда регистрируемся/логинимся и переходим в приложение
- app.php - страница приложения, здесь визуализация данных (DOM + SVG)
- app.js - здесь бизнес-логика на чистом JavaScript
Функционал:
На данный момент бекэнд очень минимальный, фронт и логика сосредоточены в app.php/app.js.
Открытие/сохранение локального JSON-файла через File System Access API.
Работа с данными только на клиенте.
База данных MariaDB (3 таблицы пользователей):
1) демо-пользователи 2) пользователи "в процессе регистрации" (не ввёл код из письма) 3)подтверждённые пользователи через мейл
TO BE:
2. Задачи первого этапа
Перевести backend с PHP на Node.js, сохранив существующий фронтенд и JavaScript-логику.
Возможно добавление изолированных модулей, но без Vue/React, остаёмся на чистом JavaScript.
Часть функций из app.js нужно будет перенести на сервер.
Допускается постепенный переход, сначала параллельный запуск PHP и Node.js.
Нужна модульная архитектура, чтобы можно было добавлять новые функции постепенно.
Перенести текущую регистрацию/авторизацию с PHP на Node.js:
- регистрация по мейлу и без мейла (демо-пользователь)
- перенести существующие таблицы пользователей в Node.js (можно сохранить структуру), ORM желательно.
- настроить безопасную работу с CORS, токенами, cookies; функция "запомнить меня", фиксировать, как часто пользователь использует приложение.
- сохранить полностью существующий фронт: index.php и app.php остаются как есть, app.js работает, но добавляются запросы к Node.js API
3. Задачи второго этапа (новый функционал)
3.1. Работа с файлами и облаком
Авторизация через Google (OAuth2) - для подключения облака и просто для тех, кому лень вводить почту.
Сохранение/открытие JSON-файла через Google Drive API.
Опционально добавить другие облака в будущем: Dropbox, OneDrive и т.д.
3.2. Совместный доступ + real-time
Разграничение доступа к файлам (владелец/участники), совместное редактирование JSON-файла в облаке, реализация real-time синхронизации (WebSocket / Socket.io).
3.3. Безопасность
Хранение e-mail в отдельной таблице/базе (privacy separation).
Реализация zero-knowledge архитектуры (ключи на клиенте, шифрование JSON на клиенте перед отправкой в облако).
Защита js-кода приложения.
3.4. Платежи
Подключение платёжной системы, подписки и биллинг.
3.5. ИИ-интеграция
Функция отправки JSON на AI backend (OpenAI/Gemini), получение анализа структуры данных, интеграция ответов AI в app.js.
Не обязательно оценивать всё сразу, посмотрите исходную php-версию, можем разбить на отдельные задачи, постепенно переходить с php на node.js, принимать и оплачивать также по отдельности.
Можем работать через безопасную сделку или напрямую