Frontend Guide#

NexusLIMS-CDCS is the frontend for NexusLIMS. It is a heavily customized version of the Configurable Data Curation System application developed by the Information Technology Lab at NIST. It provides a web-based platform for searching, visualizing, and managing the experimental records generated by the NexusLIMS backend.

Note

NexusLIMS-CDCS is maintained by Datasophos and is not affiliated with NIST. For more information, see the repository.

About This Guide#

This guide covers:

  • Deploying NexusLIMS-CDCS for development or production

  • Configuring environment variables and settings

  • Administering backups, XSLT stylesheets, and user management

  • Troubleshooting common issues

For backend documentation (record building, metadata extraction, harvesters), see the User Guide and Developer Guide.


Key Features#

NexusLIMS-CDCS provides:

  • Structured Data Capture - XML schema-based templates for consistent metadata

  • Powerful Search - Full-text and field-specific search across all records

  • Data Visualization - XSLT-based rendering of XML records to rich HTML

  • RESTful API - Programmatic access for automation and integration

  • User Authentication - Role-based access control and permissions

  • Instrument Data Integration - Links to raw experimental files via file server


Architecture#

NexusLIMS-CDCS uses a containerized architecture with four main services:

        %%{init: {'theme': 'base', 'themeVariables': { 'primaryColor': '#e3f2fd', 'primaryTextColor': '#000', 'primaryBorderColor': '#1976d2', 'lineColor': '#1976d2'}}}%%
flowchart LR
    subgraph External
        Browser([Browser])
        NexusLIMS([NexusLIMS Backend])
    end

    subgraph Docker["Docker Compose Stack"]
        Caddy[Caddy<br/>Reverse Proxy<br/>File Server]
        Django[Django App<br/>Gunicorn/Runserver]
        Postgres[(PostgreSQL)]
        Redis[(Redis)]
    end

    Browser -->|HTTPS :443| Caddy
    Caddy -->|Proxy :8000| Django
    Django -->|:5432| Postgres
    Django -->|:6379| Redis
    NexusLIMS -->|REST API| Django

    classDef external fill:#fff3e0,stroke:#f57c00,stroke-width:2px
    classDef service fill:#e1f5ff,stroke:#1976d2,stroke-width:2px

    class Browser,NexusLIMS external
    class Caddy,Django,Postgres,Redis service
    

Services:

Service

Purpose

Caddy

HTTPS reverse proxy with automatic certificates, serves instrument data and preview files

Django (CDCS)

Main application - handles search, record management, user auth

PostgreSQL

Primary database for records, users, templates, XSLT

Redis

Cache and session storage


Quick Start#

Screenshot Gallery

Visual tour of the CDCS web interface and its features.

Screenshot Gallery
Development Setup

Set up a local development environment with hot-reload and test data.

Development Setup
Production Deployment

Deploy to production with HTTPS, backups, and security hardening.

Production Deployment
Configuration

Environment variables, XSLT URLs, file paths, and optional integrations.

Configuration
Administration

Backups, XSLT updates, schema management, and monitoring.

Administration

Technical Stack#

  • Backend Framework: Django (Python)

  • Database: PostgreSQL

  • Cache: Redis

  • Web Server: Caddy (with automatic HTTPS via Let’s Encrypt)

  • Container Platform: Docker and Docker Compose

  • Package Management: UV (with pyproject.toml and lockfile for reproducible builds)

  • Base System: NIST MDCS (Materials Data Curation System)


Integration with NexusLIMS#

NexusLIMS-CDCS works alongside the NexusLIMS backend:

  1. NexusLIMS Backend harvests sessions from NEMO and extracts metadata from microscopy files

  2. NexusLIMS Backend builds XML records and uploads them to CDCS via REST API

  3. CDCS Web Interface stores, indexes, and displays the records

  4. Users search, browse, and export records through the CDCS web interface

See also


Additional Resources#


Getting Help#