mirror of
https://github.com/StandartSoftPlus-MindMentor/mindmentor-api.git
synced 2026-06-30 12:15:32 +03:00
API modules for MindMentor App
- JavaScript 93.5%
- HTML 6.4%
| .vscode | ||
| app | ||
| config | ||
| database | ||
| public | ||
| responses | ||
| start | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| 3-D-secure.README | ||
| ace | ||
| Dockerfile | ||
| file-upload-endpoints.json | ||
| generate-app-key.js | ||
| package-lock.json | ||
| package.json | ||
| README.md | ||
| run-single-migration.js | ||
| server.js | ||
MindMentor API
Backend для мобильного приложения MindMentor: медитации, звуки, статьи, курсы, ритуалы, чат поддержки, подписки и аналитика. Построен на AdonisJS 4.1 (Node.js).
Что внутри
- REST API (JWT) + WebSocket (чат в реальном времени)
- Управление контентом (медитации, звуки, статьи, курсы, ритуалы, послания дня)
- Подписки и платежи (CloudPayments), возвраты
- Push-уведомления (OneSignal), SMS (SMS Aero)
- Админ-панель с ролями (super_admin, admin, manager)
- Swagger-документация (
/api-docs,/api-panel-docs,/api-panel-users-docs)
Требования
- Node.js 20+ (см.
Dockerfile, базовый образnode:20) - npm 9+
- PostgreSQL 12+
Установка и запуск
git clone <repo>
cd mindmentor-api
npm install
# Сгенерировать APP_KEY
node generate-app-key.js # вставьте вывод в .env
# Создать .env (см. пример ниже)
# Миграции и (опционально) сидеры
node ace migration:run
node ace seed # опционально, заполнить стартовыми данными
# Dev-режим c hot reload
npm run dev
# Продакшн-режим
npm start
# Тесты (если есть)
npm test
Docker (restart project)
# Остановите только adonis
docker-compose stop adonis
# Удалите контейнер adonis
docker rm mindmentor_adonis
# Удалите образ adonis
docker rmi mindmentor_adonis
# Пересоберите образ с нуля (без кэша)
docker-compose build --no-cache adonis
# Запустите adonis заново
docker-compose up -d adonis
mindmentor-api
Переменные окружения (.env)
Обязательные:
APP_NAME=MindMentor
APP_KEY=xxx # сгенерируйте через generate-app-key.js
NODE_ENV=development
PORT=3333
HOST=0.0.0.0
# База данных (PostgreSQL)
DB_CONNECTION=pg
DB_HOST=localhost
DB_PORT=5432
DB_USER=postgres
DB_PASSWORD=postgres
DB_DATABASE=mindmentor
# CloudPayments
CLOUDPAYMENTS_PUBLIC_ID=...
CLOUDPAYMENTS_SECRET_KEY=...
# SMS Aero
SMS_AERO_LOGIN=...
SMS_AERO_API_KEY=...
SMS_PROVIDER=smsaero
# OneSignal
ONESIGNAL_APP_ID=...
ONESIGNAL_REST_API_KEY=...
# AWS S3 (опционально)
AWS_ACCESS_KEY_ID=...
AWS_SECRET_ACCESS_KEY=...
AWS_BUCKET=...
AWS_REGION=...
Дополнительно: SMS_TEST_MODE, TEST_PHONES, TEST_SMS_CODE, настройки CORS/Socket при необходимости.
Скрипты npm
npm run dev— локальная разработка (adonis serve --dev)npm start— продакшн старт (node server.js)npm test— запуск тестов (если добавлены)
Структура проекта
app/
Controllers/Http # публичные API
Controllers/Panel # админ-панель
Controllers/Ws # WebSocket
Models # Lucid модели (User, AdminUser, Meditation, Sound, Article, Course, Ritual, DailyMessage, Chat, Message, SubscriptionPlan, Payment и др.)
Middleware # Auth/AdminAuth/Role checks, WebhookSignature, SaveRawBody, PremiumAuth
Services # PaymentService, PaymentWebhookService, SubscriptionService, SmsService, OneSignalService, AnalyticsService
Repositories # AnalyticsRepository, ContentAnalyticsRepository, SubscriptionRepository
Helpers # SearchHelper, TimeHelper
Swagger # OpenAPI спецификации
config/ # app, auth (JWT), database, cors, sms, swagger, socket и др.
database/migrations # миграции PostgreSQL
database/seeds # стартовые данные (админы, контент, планы)
start/routes.js # маршруты REST + Swagger endpoints
start/kernel.js # глобальные/именованные middleware
server.js # точка входа
Dockerfile
Основные возможности API (вкратце)
- Аутентификация по телефону + SMS код (
/api/auth/*), JWT в заголовкеAuthorization: Bearer <token> - Профиль пользователя (
/api/user/*), загрузка фото - Медитации, звуки, статьи, курсы, ритуалы, послания дня — публичные списки + сохранения пользователя
- История прослушивания и статистика по контенту
- Подписки и планы (
/api/admin/subscription-plans,/api/subscriptions/me), платежные webhook-и (/api/payments/webhook/*) - Чат с WebSocket:
ws://<host>:3333/adonis-ws(топикиchat:<id>) - Админ-панель (
/api/admin/*): управление пользователями, ролями, контентом, файлами, настройками, аналитикой
Полные спеки доступны через Swagger (см. ниже).
Swagger и документация
- Swagger JSON:
/api-docs.json,/api-panel-docs.json,/api-panel-users-docs.json - Swagger UI:
/api-docs,/api-panel-docs,/api-panel-users-docs - Отдельные файлы:
CHAT_API_DOCUMENTATION.md,README_FOR_FLUTTER_DEV.md,cloudpayments_endpoints_webhook.md(если есть вdocs/),file-upload-endpoints.json
Команды администрирования
- Миграции:
node ace migration:run/node ace migration:rollback - Ресет c сидерами:
node ace migration:refresh --seed - Сидеры отдельно:
node ace seed - Генерация ключа:
node generate-app-key.js
Ключевые зависимости
@adonisjs/framework,@adonisjs/auth,@adonisjs/lucid,@adonisjs/bodyparser,@adonisjs/cors,@adonisjs/validator,@adonisjs/websocketpg— PostgreSQL драйверcloudpayments— платежиaxios— HTTP клиентonesignal-node— push-уведомленияmulter— загрузка файловaws-sdk— S3 (опционально)
Полезные заметки
- JWT секрет берётся из
APP_KEY(см.config/auth.js) - Webhook-и CloudPayments используют middleware
saveRawBody+webhookSignature(см.start/routes.js) - Для статичных файлов и Swagger UI используется порт
3333 - Не коммитьте
.envи сгенерированныйAPP_KEY