Руководство по самостоятельному хостингу
Требования
- Docker
- Node.js 20+
- npm
- PostgreSQL 16+ через прилагаемую Docker-конфигурацию
Быстрый запуск
git clone https://github.com/kirill-markin/flashcards-open-source-app.git
cd flashcards-open-source-app
cp .env.example .env
make db-up
npm install --prefix api
npm install --prefix apps/auth
npm install --prefix apps/backend
npm install --prefix apps/web
Затем запустите сервисы в отдельных терминалах:
make auth-dev
make backend-dev
make web-dev
Будут запущены:
postgresна порту5432authна порту8081backendна порту8080webна порту3000
Локальные адреса:
http://localhost:3000для веб-приложенияhttp://localhost:8080/v1для API сервисаbackendhttp://localhost:8081для сервисаauth
Конфигурация
Скопируйте .env.example в .env и настройте:
DATABASE_URL— строка подключения к PostgresAUTH_MODE—noneдля локального запуска,cognitoдля входа по одноразовому коду из emailBACKEND_ALLOWED_ORIGINS— разрешённые источники (Origin) браузерных API-запросов с аутентификацией по сессииPUBLIC_API_BASE_URLиPUBLIC_AUTH_BASE_URL— необязательные переопределения, если вы хотите, чтобы ответы discovery указывали ваши собственные публичные хосты
Локальная настройка iOS
iOS-приложение из основного репозитория берёт локальные хосты API и auth из:
apps/ios/Flashcards/Config/Local.xcconfig
При необходимости скопируйте файл-пример:
cp apps/ios/Flashcards/Config/Local.xcconfig.example apps/ios/Flashcards/Config/Local.xcconfig
После этого укажите локальные или собственные домены api и auth.
Обновление
git pull
npm install --prefix api
npm install --prefix apps/auth
npm install --prefix apps/backend
npm install --prefix apps/web
После обновления зависимостей перезапустите локальные сервисы.
Развёртывание в AWS
Описанная в документации схема боевого развёртывания выглядит так:
- CloudFront + S3 для
app.<domain> - API Gateway + Lambda для
api.<domain> - API Gateway + Lambda для
auth.<domain> - Postgres в AWS RDS
- Cognito для входа по одноразовому коду из email без пароля
- необязательная переадресация корневого домена, если он больше нигде не используется
Подробности по развёртыванию: