Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: Add links to similar technologies (#126) #390

Merged
merged 5 commits into from
Mar 1, 2024
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions components/Sidebar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -51,6 +51,7 @@ const SegmentSubtitle = ({ label }: { label: string }) => {
const getDocsPath = [
'/overview/what-is-jsonschema',
'/overview/sponsors',
'/overview/similar-technologies',
'/overview/code-of-conduct'
]
const getStartedPath = [
Expand Down Expand Up @@ -207,6 +208,7 @@ export const DocsNav = () => {
>
<DocLink uri='/overview/what-is-jsonschema' label='What is JSON Schema?' />
<DocLink uri='/overview/sponsors' label='Sponsors' />
<DocLink uri='/overview/similar-technologies' label='Similar Technologies Overview' />
<DocLink uri='/overview/code-of-conduct' label='Code of Conduct' />
</div>
</div>
Expand Down
20 changes: 20 additions & 0 deletions pages/overview/similar-technologies/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@

# Similar Technologies Overview
Michael-Obele marked this conversation as resolved.
Show resolved Hide resolved

[**JSON Schema**](https://json-schema.org/) is not the only game in town when it comes to data validation and description. Here are some other technologies that share similar goals:
Michael-Obele marked this conversation as resolved.
Show resolved Hide resolved

## Similar Technologies
Michael-Obele marked this conversation as resolved.
Show resolved Hide resolved

* **JSON Constraint Rules (JCR):** JCR aims to provide a more expressive way to define constraints on JSON data compared to JSON Schema. While still under development, you can learn more about it on GitHub: [http://codalogic.github.io/jcr/](http://codalogic.github.io/jcr/).

* **CBOR Constrained Data Description Language (CBL):** Similar to JCR, CBL focuses on describing constraints, but specifically for the CBOR data format. Dive deeper into CBL in the CBL IETF draft: [https://datatracker.ietf.org/doc/draft-cordell-jcr-co-constraints/](https://datatracker.ietf.org/doc/draft-cordell-jcr-co-constraints/).

* **CBOR Data Definition Language (Cddl):** While not strictly focused on constraints, Cddl allows defining the structure of CBOR data. Check out the Cddl IETF draft: [https://tools.ietf.org/html/draft-greevenbosch-appsawg-cbor-cddl-08](https://tools.ietf.org/html/draft-greevenbosch-appsawg-cbor-cddl-08) for more information.

* **AJV (Another JSON Schema Validator):** A high-performance JSON Schema validator with extensive support for various features. Explore it at AJV website: [https://ajv.js.org/](https://ajv.js.org/).

## Contributing to the Community

Do you know of any other relevant technologies that we should add to this list? We encourage contributions! Please submit a pull request to the relevant contributions page on the JSON Schema website.


32 changes: 32 additions & 0 deletions pages/overview/similar-technologies/index.page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import React from 'react'
Michael-Obele marked this conversation as resolved.
Show resolved Hide resolved
import { getLayout } from '~/components/Sidebar'
import fs from 'fs'
import Head from 'next/head'
import { Headline1 } from '~/components/Headlines'
import matter from 'gray-matter'
import StyledMarkdown from '~/components/StyledMarkdown'
import { SectionContext } from '~/context'

export async function getStaticProps() {
const block = fs.readFileSync('pages/overview/similar-technologies/_index.md', 'utf-8')
const { content: blockContent } = matter(block)
return {
props: {
blocks: [blockContent]
}
}
}

export default function Content ({ blocks }: { blocks: any[] }) {
const newTitle = 'Similar Technologies Overview'

return (
<SectionContext.Provider value='docs'>
<Head>
<title>{newTitle}</title>
</Head>
<StyledMarkdown markdown={blocks[0]} />
</SectionContext.Provider>
)
}
Content.getLayout = getLayout