mosenioring/back001/README.md
2026-01-12 18:38:15 +01:00

1.8 KiB

Mosenioring Backend

Production-ready Kotlin/Spring Boot 3 modular monolith skeleton for patient-caregiver-doctor coordination.

Requirements

  • Java 21
  • Docker + Docker Compose

Local run

  1. Start dependencies:
docker compose up -d
  1. Run the API (local profile, local auth enabled):
SPRING_PROFILES_ACTIVE=local \
ALLOW_LOCAL_AUTH=true \
./gradlew :app:bootRun
SPRING_PROFILES_ACTIVE=dev \
ALLOW_LOCAL_AUTH=false \
./gradlew :app:bootRun
  1. (Optional) Run the worker:
./gradlew :workers:notification-worker:bootRun

Required env flags (local/dev):

  • SPRING_PROFILES_ACTIVE=local
  • ALLOW_LOCAL_AUTH=true (enables local auth headers)
  • KEYCLOAK_ISSUER_URI=http://localhost:8081/realms/mosenioring (if using Keycloak)
  • Frontend should set USE_LOCAL_AUTH=true when using local auth headers.

Auth

  • The backend is a JWT resource server and does not handle user passwords.
  • Local auth shortcut is available only when SPRING_PROFILES_ACTIVE=local and ALLOW_LOCAL_AUTH=true.

Local headers (dev only):

  • X-Local-Email: user id/email
  • X-Local-Roles: comma-separated roles (ADMIN, DOCTOR, CAREGIVER)
  • X-Tenant-Id: tenant id

OpenAPI

Health

Key services

Notes

  • Tenant ID is enforced via TenantFilter using JWT claim tenant_id, or X-Tenant-Id header (local).
  • Medication plan creation publishes a MedicationPlanCreated outbox event.
  • Worker consumes and emits NotificationRequested events with idempotency via Redis.