Decision support, not a diagnosis. Correlate every finding with a licensed clinician and the full clinical picture.

MACH

Architecture

Athletic Insight is a modular monolith with service contracts. Diagrams below are the 2026-09-25 snapshot shipped with the app. The repo is private, so this page does not fetch GitHub raw files at runtime.

architecture.mdarchitecture.mmddaily log

Landing · Input · Processing · Output

Landing Input Processing Output

Decision-support engine

Cases and Workspace feed the vision engine, then the knowledge graph

Review this slice posts the current PNG through /api/v1/imaging/interpret. Vision extracts observations and an optional focus circle. The graph returns a ranked estimate — decision support, not a diagnosis.

MACH as-built

Athletic Insight MACH architecture

M

Microservices

Bounded contexts: identity, knowledge, imaging, dicom, cases. One deploy unit today; contracts are split so each can move to its own runtime.

A

API-first

Every capability is reachable as JSON over /api/v1. Production DICOM catalog is also published as ORDS /ords/aiv/v1. The SPA is a client, not the source of truth.

C

Cloud-native

Stateless handlers, env-based config, health endpoint, Postgres via Neon or embedded PGLite, Oracle ATP aivdb via ORDS when ORDS_BASE_URL is set.

H

Headless

UI never talks to SQL. Knowledge graph, DICOM catalog, cases, and vision interpretation are consumed over HTTP.

Services

  • Identity

    Better Auth sessions (Google / X). Cookie or preview bearer.

    /api/auth

    public
  • Knowledge graph

    Sports-injury graph catalog and match (imaging + clinical tests → grade → RTP).

    /api/v1/kg

    public
  • Imaging

    Vision interpretation of a Cases slice or uploaded JPEG/PNG, optional focus {cx,cy,r}, then graph match. Decision support, not a diagnosis.

    /api/v1/imaging

    auth
  • DICOM

    Patient / Study / Series / Instance catalog. Metadata on aivdb via ORDS. Pixels in private Object Storage aiv-dicom and the VM slice cache.

    /api/v1/studies

    public
  • Cases

    Per-user saved matches. Isolated by session user id.

    /api/v1/cases

    auth