CoCryoVis is a full-stack platform for cryo-ET volume management, annotation workflows, model training/inference orchestration, and result visualization.
This repository is organized as a multi-package workspace:
server/: Node.js + TypeScript API, Prisma (SQLite), modules, and static client hosting.client/: React + Vite frontend.schemas/: Shared schema package consumed by server and client.dockerfiles/: Container build and deploy definitions.
- Node.js 22+
- npm
- Python environment for server-side scripts (
server/requirements.txt) - Git submodules
Optional but recommended for GPU modules:
- NVIDIA drivers + CUDA toolkit (tested with CUDA 12.4)
- CMake 3.24+ (required by Proximal CryoET build path)
git clone --recurse-submodules <repo-url>
cd vol-web-server-devnpm installFrom server/:
pip install -r requirements.txtCreate server/.env:
# SQLite database path (relative to server/prisma)
DATABASE_URL=file:./../database/db.sqlite
# Required for session signing
SESSION_SECRET=change-me
# Optional admin seed credentials
ADMIN_USERNAME=admin
ADMIN_PASSWORD=admin123Additional optional runtime variables:
PORT,HOSTHTTPS=truewithSSL_KEY_PATH/SSL_CRT_PATHor base64SSL_KEY_CONTENT/SSL_CRT_CONTENTSESSIONS_PATH(default:./database/sessions.db)ALLOW_INSECURE_COOKIES=true(only for non-production or controlled environments)
From server/:
npm run prisma:init
npm run prisma:seedTerminal 1, from server/:
npm run dev -- --host 0.0.0.0 --port 8080Terminal 2, from client/:
npm run devThe client defaults to http://localhost:8080 for API calls. Override with VITE_API_URL when needed.
Build from the workspace root, then run the unified production startup (Prisma deploy + seed + server start):
npm run build:prod
npm run start:prodModule installers and templates are managed from server/.
Detailed module architecture and conventions are provided in modules-system.md.
Install/download configured modules:
npm run modules:installSkip selected modules:
npm run modules:install -- --skip Ilastik --skip ProximalCryoETInstall only specific modules:
npm run modules:install -- --only MotionCor3Create a new module wrapper + config entry:
npm run modules:create -- <module-id-or-name>Container assets are in dockerfiles/.
Typical local run:
cd dockerfiles
docker compose -f compose.yml up --buildNotes:
- Compose setup assumes GPU-capable runtime (
gpus: all). - The container startup uses
npm run start:prod(runs Prisma deploy + seed, then starts server). - Configure credentials/secrets with environment variables (
SESSION_SECRET,ADMIN_USERNAME,ADMIN_PASSWORD).
From server/:
npm run dev: start API in development modenpm run build: build TypeScript outputnpm run start:prod: run production startup (Prisma deploy + seed +start)npm start: run compiled server (dist/index.js)npm run prisma:db: open Prisma Studio
From client/:
npm run dev: start Vite dev servernpm run build: build production bundle