API modules for MindMentor App
  • JavaScript 93.5%
  • HTML 6.4%
Find a file
emilrustamov 6659e76efa 3
2026-02-28 12:38:30 +05:00
.vscode 3 2026-02-28 12:38:30 +05:00
app 3 2026-02-28 12:38:30 +05:00
config 3 2026-02-28 12:38:30 +05:00
database 3 2026-02-28 12:38:30 +05:00
public 3 2026-02-28 12:38:30 +05:00
responses 3 2026-02-28 12:38:30 +05:00
start 3 2026-02-28 12:38:30 +05:00
.editorconfig 3 2026-02-28 12:38:30 +05:00
.env.example 3 2026-02-28 12:38:30 +05:00
.gitignore 3 2026-02-28 12:38:30 +05:00
3-D-secure.README 3 2026-02-28 12:38:30 +05:00
ace 3 2026-02-28 12:38:30 +05:00
Dockerfile 3 2026-02-28 12:38:30 +05:00
file-upload-endpoints.json 3 2026-02-28 12:38:30 +05:00
generate-app-key.js 3 2026-02-28 12:38:30 +05:00
package-lock.json 3 2026-02-28 12:38:30 +05:00
package.json 3 2026-02-28 12:38:30 +05:00
README.md 3 2026-02-28 12:38:30 +05:00
run-single-migration.js 3 2026-02-28 12:38:30 +05:00
server.js 3 2026-02-28 12:38:30 +05:00

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/websocket
  • pg — 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