Guía de autohospedaje
Requisitos
- acoplador
- Nodo.js 20+
- mpn
- PostgreSQL 16+ a través de la configuración de Docker proporcionada
Inicio rápido
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
Luego ejecute los servicios en terminales separadas:
make auth-dev
make backend-dev
make web-dev
Esto comienza:
postgresen el puerto5432authen el puerto8081backenden el puerto8080weben el puerto3000
URL locales:
http://localhost:3000para la aplicación webhttp://localhost:8080/v1para la API de backendhttp://localhost:8081para el servicio de autenticación
Configuración
Copia .env.example a .env y ajusta:
DATABASE_URL— Cadena de conexión de PostgresAUTH_MODE—nonepara uso local,cognitopara autenticación OTP de correo electrónicoBACKEND_ALLOWED_ORIGINS— orígenes de navegador permitidos para solicitudes de API autenticadas por sesiónPUBLIC_API_BASE_URLyPUBLIC_AUTH_BASE_URL: anulaciones opcionales cuando desea que las respuestas de descubrimiento anuncien hosts públicos personalizados
Configuración local de iOS
La aplicación de iOS en el repositorio principal lee su API local y sus hosts de autenticación desde:
apps/ios/Flashcards/Config/Local.xcconfig
Copie el archivo de ejemplo si es necesario:
cp apps/ios/Flashcards/Config/Local.xcconfig.example apps/ios/Flashcards/Config/Local.xcconfig
Luego, apúntelo a sus dominios api y auth locales o autohospedados.
Actualizando
git pull
npm install --prefix api
npm install --prefix apps/auth
npm install --prefix apps/backend
npm install --prefix apps/web
Reinicie los servicios locales después de los cambios de dependencia.
Implementación de AWS
La forma de producción documentada es:
- CloudFront + S3 para
app.<domain> - API Gateway + Lambda para
api.<domain> - API Gateway + Lambda para
auth.<domain> - Postgres en AWS RDS
- Cognito para OTP de correo electrónico sin contraseña
- redirección de ápice opcional cuando el dominio raíz no se utiliza
Para obtener detalles sobre la implementación, consulte: