(frontend_guide)= # Frontend Guide [NexusLIMS-CDCS](https://github.com/datasophos/NexusLIMS-CDCS) is the frontend for NexusLIMS. It is a heavily customized version of the [Configurable Data Curation System](https://cdcs.nist.gov/) 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](https://datasophos.co) and is **not affiliated with NIST**. For more information, see the [repository](https://github.com/datasophos/NexusLIMS-CDCS). ``` ## 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](user_guide.md) and [Developer Guide](dev_guide.md). --- ## 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: ```{mermaid} %%{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
Reverse Proxy
File Server] Django[Django App
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 ````{grid} 2 :gutter: 3 ```{grid-item-card} Screenshot Gallery :link: frontend_guide/gallery :link-type: doc Visual tour of the CDCS web interface and its features. ``` ```{grid-item-card} Development Setup :link: frontend_guide/development :link-type: doc Set up a local development environment with hot-reload and test data. ``` ```{grid-item-card} Production Deployment :link: frontend_guide/production :link-type: doc Deploy to production with HTTPS, backups, and security hardening. ``` ```{grid-item-card} Configuration :link: frontend_guide/configuration :link-type: doc Environment variables, XSLT URLs, file paths, and optional integrations. ``` ```{grid-item-card} Administration :link: frontend_guide/administration :link-type: doc Backups, XSLT updates, schema management, and monitoring. ``` ```` --- ## 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](https://github.com/datasophos/NexusLIMS): 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 ```{seealso} - {ref}`Configuration variables ` for connecting NexusLIMS to CDCS (`NX_CDCS_URL`, `NX_CDCS_TOKEN`) - The [CDCS Integration](reference/api.md) section in the API reference ``` --- ## Additional Resources ```{toctree} :maxdepth: 1 frontend_guide/gallery frontend_guide/overview frontend_guide/development frontend_guide/production frontend_guide/local-test-deployment frontend_guide/configuration frontend_guide/customization frontend_guide/administration frontend_guide/troubleshooting ``` --- ## Getting Help - **Repository**: [https://github.com/datasophos/NexusLIMS-CDCS](https://github.com/datasophos/NexusLIMS-CDCS) - **Issues**: [https://github.com/datasophos/NexusLIMS-CDCS/issues](https://github.com/datasophos/NexusLIMS-CDCS/issues) - **Professional Support**: [Datasophos](https://datasophos.co) offers deployment, customization, and training services