Open Data Modelling
January 5, 2026 · View on GitHub
Open Data Modelling provides tools, standards, and best practices for creating, managing, and sharing data contracts and schemas. Our mission is to make data contracts accessible, standardized, and easy to implement.
Project Overview
This repository contains the documentation website for Open Data Modelling, built with Hugo and deployed via Cloudflare Pages. The site provides comprehensive documentation on:
- Data Contracts: Learn what data contracts are and why they matter
- ODCS Standard: Open Data Contract Standard documentation and resources
- Data Schemas: Understanding different schema types and their benefits
- Products: SDK, API, OSX App, and Web App documentation
- Usage Guides: Import, export, Crowsfeat notation, and Data Flows
Quick Start
Prerequisites
- Hugo Extended (latest stable, 0.100+)
- Node.js (LTS version, >=18.0.0)
- npm (>=9.0.0)
- GPG key configured for commit signing
Development Setup
-
Clone the repository:
git clone git@github.com:pixie79/open-data-modelling.git cd open-data-modelling -
Navigate to the Hugo site directory:
cd hugo-site -
Install dependencies:
npm install -
Start the development server:
npm run serve -
Open your browser to
http://localhost:1313
For detailed setup instructions, see quickstart.md.
Project Standards
This project follows strict quality standards defined in our Constitution. All contributors must comply with these standards.
Code Quality Standards
- Formatting: Code MUST be formatted per language standards (see constitution Principle I)
- Linting: All linting checks MUST pass (see constitution Principle II)
- Security: Dependency scanning + SAST + infrastructure security MUST pass (see constitution Principle III)
- Signing: All commits MUST be GPG signed (see constitution Principle VI)
- Cross-platform: Code MUST be cross-platform compatible (see constitution Principle IV)
- Accessibility: UI components MUST meet WCAG 2.1 Level AA (see constitution Principle V)
Language-Specific Standards
Markdown
- Use
.markdownlint.jsonconfiguration - Maximum line length: 100 characters (80 for prose)
- Use ATX-style headers (#)
- 2-space indentation
CSS/SCSS
- Use
.stylelintrc.jsonconfiguration - Follow stylelint-config-standard-scss
- 2-space indentation
- Double quotes for strings
JavaScript/TypeScript
- Use ESLint with standard configuration
- Prettier formatting
- 2-space indentation
- Semicolons required
YAML/TOML
- 2-space indentation
- Prettier formatting
Quality Enforcement
All code changes must pass:
- Pre-commit hooks: Automatic formatting and linting checks
- CI/CD gates: Automated quality checks in GitHub Actions
- Security scans: Dependency and code security scanning
- Accessibility checks: WCAG 2.1 Level AA compliance
Running Quality Checks
# Format code
npm run format
# Lint Markdown
npm run lint:markdown
# Lint CSS
npm run lint:css
# Lint JavaScript
npm run lint:js
# Run all linters
npm run lint
# Security audit
npm audit --audit-level=high
Contributing
We welcome contributions! Please follow these guidelines:
Getting Started
- Fork the repository and clone your fork
- Create a feature branch following the naming convention:
001-feature-name - Make your changes following our code quality standards
- Test your changes locally
- Commit with GPG signing (required)
- Push to your fork and create a pull request
Commit Guidelines
- All commits MUST be GPG signed (see constitution Principle VI)
- Use conventional commit messages:
feat:for new featuresfix:for bug fixesdocs:for documentation changesstyle:for formatting changesrefactor:for code refactoringtest:for test changeschore:for maintenance tasks
Example:
git commit -S -m "feat: Add new data contract example page"
Pull Request Process
-
Ensure all quality checks pass:
- Code formatting
- Linting (markdown, CSS, JavaScript)
- Security scans
- Accessibility checks
-
Update documentation if needed:
- README.md for user-facing changes
- CHANGELOG.md for notable changes
- CONTRIBUTORS.md if this is your first contribution
-
Write clear PR descriptions:
- What changes were made
- Why the changes were needed
- How to test the changes
- Any breaking changes
-
Request review from maintainers
Code Review Guidelines
- Be respectful and constructive
- Focus on code quality and standards compliance
- Check that all quality gates pass
- Verify accessibility and cross-platform compatibility
- Ensure documentation is updated
Reporting Issues
When reporting issues, please include:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Node.js version, Hugo version)
- Relevant error messages or logs
Project Structure
open-data-modelling/
├── .specify/ # Project specification and templates
├── checklists/ # Quality checklists
├── hugo-site/ # Hugo documentation website
│ ├── assets/ # Unprocessed assets (SCSS, JS, images)
│ ├── content/ # Markdown content pages
│ ├── data/ # Data files (YAML/JSON)
│ ├── layouts/ # Hugo templates
│ └── static/ # Static files
├── specs/ # Feature specifications
└── README.md # This file
Resources
- Constitution - Project quality standards
- Quickstart Guide - Detailed setup instructions
- Code Quality Checklist - Quality requirements checklist
Related Projects
- Data Modelling SDK - Software Development Kit
- Data Modelling API - RESTful API service (v2 - coming soon)
- Data Modelling Frontend - OSX App and Web App
Standards and Specifications
License
This project is licensed under the MIT License - see the LICENSE.md file for details.
Support
For questions, issues, or contributions, please:
- Open an issue on GitHub
- Check existing documentation
- Review the Constitution for quality standards
Acknowledgments
Thank you to all contributors who help make Open Data Modelling better. See CONTRIBUTORS.md for a list of contributors.