Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Lectern - Data Dictionary Management and Validation

Lectern is Overture's Data Dictionary Schema Manager, providing a system for defining Schemas that will validate the structured data collected by an application. The core of Lectern is a web-server application that handles storage and version management of data dictionaries. Lectern data dictionaries are collections of schemas that define the structure of tabular data files (like TSV). This application provides functionality to validate the structure of data dictionaries, maintain a list of dictionary versions, and to compute the difference between dictionary versions.


Lectern is part of Overture, a collection of open-source software microservices used to create platforms for researchers to organize and share genomics data.

Repository Structure

This repository is organized as a monorepo using pnpm-workspace and nx.

Note: You will need to use pnpm instead of npm to manage dependencies in this code base. PNPM will take care of linking all modules together correctly.

Workspace Modules

The repository is organized with the following directory structure:

.
├── apps/
│ └── server
└── packages/
├── client
├── common
├── dictionary
└── validation

The modules in the monorepo are organized into two categories:

  • apps/ - Standalone processes meant to be run. These are published to ghcr.io as container images.
  • packages/ - Reusable packages shared between applications and other packages. Packages are published to NPM.
  • scripts - Utility scripts for use within this repo.

Component Overview

ComponentPackage NamePathPublished LocationDescription
Lectern Server@overture-stack/lectern-serverapps/server/Lectern GHCR PackagesLectern Server web application.
Lectern Client@overture-stack/lectern-clientpackages/clientLectern Client NPM PackageTypeScript Client to interact with Lectern Server and Lectern data dictionaries.
Lectern Dictionary@overture-stack/lectern-dictionarypackages/dictionaryLectern Client NPM PackageDictionary meta-schema definition, includes TS types, and Zod schemas.
Lectern Validation@overture-stack/lectern-validationpackages/validation/Lectern Validation NPM PackageValidate data using Lectern Dictionaries.

Development Environment

Prerequisites

  • PNPM (instead of npm)
  • Node.js
  • Docker (for running containers)

Local Development

You can install all dependencies for the entire repo from the root (as defined in the pnpm-lock.yaml) with the command:

pnpm install

Common Commands

Run these from the root directory, or if you are in a sub directory then use pnpm -w:

Build Everything

pnpm build:all

Test Everything

pnpm test:all

Using nx will ensure all local dependencies are built, in the correct sequence. For example:

pnpm nx build @overture-stack/lectern-server
pnpm nx build @overture-stack/lectern-client

For convenience, use short aliases:

pnpm build:client

Documentation

Technical resources for those working with or contributing to the project are being updated to our official documentation site, this content can also be updated and read within the /docs folder of this repository.

Meta-Schema

Lectern provides a meta-schema definition that describes the structure of Lectern Dictionaries. The generated JSON Schema formatted copy of this schema can be found at ./generated/DictionaryMetaSchema.json.

Note

Don't manually update any files in the ./generated path. This content is programatically generated from the source code.

Support & Contributions

  • For support, feature requests, and bug reports, please see our Support Guide.

  • For detailed information on how to contribute to this project, please see our Contributing Guide.

Related Software

The Overture Platform includes the following Overture Components:


SoftwareDescription
ScoreTransfer data to and from any cloud-based storage system
SongCatalog and manage metadata associated to file data spread across cloud storage systems
MaestroOrganizing your distributed data into a centralized Elasticsearch index
ArrangerA search API with reusable search UI components
StageA React-based web portal scaffolding
LyricA model-agnostic, tabular data submission system
LecternSchema Manager, designed to validate, store, and manage collections of data dictionaries.

Funding Acknowledgement

Overture is supported by grant #U24CA253529 from the National Cancer Institute at the US National Institutes of Health, and additional funding from Genome Canada, the Canada Foundation for Innovation, the Canadian Institutes of Health Research, Canarie, and the Ontario Institute for Cancer Research.

About

Data Schema / Dictionary management system

Resources

Code of conduct

Contributing

Stars

2 stars

Watchers

14 watching

Forks

Releases

Packages

Used by

Contributors

Languages