mosenioring/back001
2026-01-12 22:26:08 +01:00
..
app works 2026-01-12 22:26:08 +01:00
common works 2026-01-12 22:26:08 +01:00
docker/keycloak doesnt work 2026-01-12 18:38:15 +01:00
gradle/wrapper init backend 2026-01-09 18:35:06 +01:00
modules cloude review 2026-01-09 19:01:46 +01:00
workers/notification-worker init backend 2026-01-09 18:35:06 +01:00
.gitignore init backend 2026-01-09 18:35:06 +01:00
build.gradle.kts init backend 2026-01-09 18:35:06 +01:00
docker-compose.yml codex auto review 2026-01-09 18:40:59 +01:00
gradle.properties init backend 2026-01-09 18:35:06 +01:00
gradlew init backend 2026-01-09 18:35:06 +01:00
gradlew.bat init backend 2026-01-09 18:35:06 +01:00
README.md doesnt work 2026-01-12 18:38:15 +01:00
requests.http init backend 2026-01-09 18:35:06 +01:00
settings.gradle.kts init backend 2026-01-09 18:35:06 +01:00

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.