Skip to content

About

Annotator tool for segmented gloms

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

RenalFusion

RenalFusion is a web application for annotating glomeruli in whole-slide kidney biopsy images. It's built on top of the Digital Slide Archive (DSA) / Girder platform for slide storage and tile serving, and provides an annotation workspace on top of it.

Status: active research prototype. Core pieces — auth, DSA/Girder wiring, the tile viewer, and annotation persistence — are still being built out. See NEXT_STEPS.md for the current punch list. This repo does not ship with any slide images, annotations, or patient data — you'll need your own DSA instance to use it against real slides.

Stack

  • Next.js (App Router) + TypeScript
  • SQLite (via better-sqlite3) for local app data
  • DSA/Girder as the slide/annotation backend (external dependency, not included)
  • Vitest for tests

Getting Started (local dev)

Requires Node 18+ (Node 24 recommended — matches the Docker image).

npm install --legacy-peer-deps
cp .env.example .env.local
# then edit .env.local — see "Configuration" below
npm run dev

Open http://localhost:3000.

Configuration

Copy .env.example to .env.local and fill in:

Variable Description
DSA_BASE_URL Base URL of a running Digital Slide Archive / Girder instance (no trailing slash). Required for any of the /api/dsa/* routes to work.
DATABASE_URL Path to the local SQLite file (defaults to /app/data/renalfusion.db in Docker).
NEXTAUTH_SECRET Secret used to sign session cookies. Generate with openssl rand -base64 32.
PORT / NODE_ENV Standard Next.js runtime settings.

RenalFusion doesn't include or stand up a DSA instance — you need access to one (self-hosted or otherwise) for the DSA-backed features to function.

Running with Docker / Podman

cp .env.example .env
docker compose up --build

This builds and runs the app on port 8210 (mapped to 3000 in the container), with ./data mounted in for the SQLite database.

There's also a one-off migrate profile for importing data from a legacy SQLite database:

docker compose --profile migrate run migrate

Testing

npm test              # run the test suite once
npm run test:coverage # with coverage

License

Copyright © 2026 University of Florida and the project contributors. Released under the MIT License.

About

Annotator tool for segmented gloms

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages