Skip to content

Add updated information architecture changes #1411

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

Merged
merged 4 commits into from
Mar 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
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
384 changes: 246 additions & 138 deletions components/Sidebar.tsx

Large diffs are not rendered by default.

24 changes: 17 additions & 7 deletions pages/docs/index.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -17,41 +17,51 @@ export default function Welcome() {
<Headline1>{newTitle}</Headline1>
<p>
JSON Schema is a declarative language for annotating and validating JSON
documents' structure, constraints, and data types. It provides a way to
documents' structure, constraints, and data types. It helps you
standardize and define expectations for JSON data.
<br />
Our documentation will guide you through the basics and beyond of
defining and validating JSON data.
<br />
<span className='font-bold text-[1.3rem]'>Explore the docs</span>
</p>
<div className='w-full lg:w-full grid grid-cols-1 sm:grid-cols-2 gap-6 my-[10px] mx-auto mt-8'>
<Card
icon='/icons/eye.svg'
title='Overview'
body='Our Overview provides a high level view of the project, its benefits, the roadmap and other relevant details.'
title='Introduction'
body='Discover JSON Schema: its purpose and role in data validation.'
headerSize='medium'
bodyTextSize='small'
link='/overview/what-is-jsonschema'
/>
<Card
icon='/icons/compass.svg'
title='Getting Started'
body='Our Getting Started guide walks you through the basics of JSON Schema.'
title='Get started'
body='New to JSON Schema? Learn the basics of schema design.'
headerSize='medium'
bodyTextSize='small'
link='/learn'
/>
<Card
icon='/icons/grad-cap.svg'
title='Guides'
body='Master advanced skills such as validation with our hands-on guides.'
headerSize='medium'
bodyTextSize='small'
link='/learn/guides'
/>
<Card
icon='/icons/book.svg'
title='Reference'
body='Our Reference teaches JSON Schema deeply from a beginner to the advanced level.'
body='Dive deeper into JSON Schema keywords with our clear explanations and usage examples.'
headerSize='medium'
bodyTextSize='small'
link='/understanding-json-schema'
/>
<Card
icon='/icons/clipboard.svg'
title='Specification'
body='Our Specification section documents all versions of JSON Schema specification.'
body='Understand the evolution of JSON Schema through its different versions'
headerSize='medium'
bodyTextSize='small'
link='/specification'
Expand Down
5 changes: 3 additions & 2 deletions pages/implementers/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,8 @@ next:
url: /implementers/interfaces
---

For Implementers
Implement JSON Schema
=========================

Welcome to the **Implementers** section! The place for implementation maintainers' Docs.
Dive into the technical details of implementing JSON Schema.
This section is for developers building tools and libraries that work with JSON Schema.
14 changes: 7 additions & 7 deletions pages/implementers/index.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -33,27 +33,27 @@ export default function ContentExample({
<Card
key='common-interfaces'
icon='/icons/list.svg'
title='Common Interfaces'
body='Common Interfaces across JSON Schema Implementations'
title='Understand common interfaces'
body='Build interoperable JSON Schema tools using shared interfaces.'
headerSize='small'
bodyTextSize='small'
link='./implementers/interfaces'
/>
<Card
key='bowtie'
icon='/img/logos/bowtie.svg'
title='Bowtie'
body='The meta-validator for JSON Schema implementations'
title='Validate with Bowtie'
body='Validate your JSON Schema tools with the Bowtie meta-validator.'
headerSize='medium'
bodyTextSize='small'
link='https://docs.bowtie.report/en/stable/'
/>
</div>
</section>
<NextPrevButton
prevLabel='Structuring a complex schema'
prevURL='/understanding-json-schema/structuring'
nextLabel='Common Interfaces across Implementations'
prevLabel='Guides'
prevURL='/guides'
nextLabel='Understanding common interfaces'
nextURL='/implementers/interfaces'
/>
<DocsHelp fileRenderType={fileRenderType} />
Expand Down
8 changes: 4 additions & 4 deletions pages/implementers/interfaces.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
---
title: Common Interfaces across JSON Schema Implementations
title: Common interfaces across JSON Schema implementations
section: implementers
prev:
label: For Implementers
url: /implementers
next:
label: Specification
url: /specification
label: Reference
url: /understanding-json-schema/reference
---

JSON Schema is extremely widely used and nearly equally widely implemented.
Expand Down Expand Up @@ -234,4 +234,4 @@ An API which facilitates the creation of new JSON Schema dialects, typically reg

## Failure Details

An API which allows for programmatic introspection of the causes of a particular validation failure, at minimum containing the failing keyword(s), value(s) and individual message(s) which led to the failure.
An API which allows for programmatic introspection of the causes of a particular validation failure, at minimum containing the failing keyword(s), value(s) and individual message(s) which led to the failure.
44 changes: 44 additions & 0 deletions pages/learn/guides/index.page.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
import React from 'react';
import { getLayout } from '~/components/Sidebar';
import Head from 'next/head';
import { Headline1 } from '~/components/Headlines';
import { SectionContext } from '~/context';
import { DocsHelp } from '~/components/DocsHelp';
import NextPrevButton from '~/components/NavigationButtons';
import Card from '~/components/Card';

export default function Welcome() {
const fileRenderType = 'tsx';

const newTitle = 'Guides';
return (
<SectionContext.Provider value='learn'>
<Head>
<title>{newTitle}</title>
</Head>
<Headline1>{newTitle}</Headline1>
<p>
Welcome to our new Guides section!
<br />
</p>
<div className='w-full lg:w-full grid grid-cols-1 sm:grid-cols-2 gap-6 my-[10px] mx-auto mt-8'>
<Card
title='For Implementers'
body='Dive into the technical details of implementing JSON Schema'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/implementers'
/>
</div>
<NextPrevButton
prevLabel='Other examples'
prevURL='/learn/json-schema-examples'
nextLabel='For Implementers'
nextURL='/implementers'
/>
<DocsHelp fileRenderType={fileRenderType} />
</SectionContext.Provider>
);
}
Welcome.getLayout = getLayout;
45 changes: 39 additions & 6 deletions pages/learn/index.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,71 @@ import NextPrevButton from '~/components/NavigationButtons';
export default function Welcome() {
const fileRenderType = 'tsx';

const newTitle = 'Getting Started';
const newTitle = 'Get Started';
return (
<SectionContext.Provider value='learn'>
<Head>
<title>{newTitle}</title>
</Head>
<Headline1>{newTitle}</Headline1>
<p>
New to JSON Schema and don't know where to start?
New to JSON Schema and don't know where to start? Explore our learning
resources and get started with JSON Schema.
<br />
<br />
</p>
<div className='w-full lg:w-full grid grid-cols-1 sm:grid-cols-2 gap-6 my-[10px] mx-auto mt-8'>
<Card
title='Creating your first Schema'
body='Our Getting Started guide walks you through the basics of JSON Schema.'
title='What is a schema?'
body='Let us start by defining what is a Schema'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/understanding-json-schema/about'
/>
<Card
title='JSON Schema basics'
body='Learn what JSON Schema is, essential keywords, and the basics of data validation'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/understanding-json-schema/basics'
/>
<Card
title='Create your first schema'
body='Follow our step by step guide and create your first JSON Schema'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/learn/getting-started-step-by-step'
/>
<Card
title='Tour of JSON Schema'
body='An interactive introduction to JSON Schema. Each lesson concludes with an exercise, so you can practice what you have learned.'
body='Master JSON Schema through engaging lessons and hands-on exercises. Complete the course to earn your JSON Schema certification and prove your expertise.'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='https://tour.json-schema.org/'
/>
<Card
title='JSON Schema glossary'
body='Explore a curated glossary of common terms used in the JSON Schema ecosystem'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/learn/glossary'
/>
<Card
title='JSON Schema examples'
body='Browse real-world JSON Schema examples across different domains, with detailed annotations.'
headerSize='medium'
bodyTextSize='small'
extended={true}
link='/learn/miscellaneous-examples'
/>
</div>
<NextPrevButton
prevLabel='Code of Conduct'
prevLabel='Code of conduct'
prevURL='/overview/code-of-conduct'
nextLabel='Creating your first Schema'
nextURL='/learn/getting-started-step-by-step'
Expand Down
6 changes: 3 additions & 3 deletions pages/specification.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
title: Specification [#section]
section: docs
prev:
label: Common Interfaces across Implementations
url: /implementers/interfaces
label: JSON Schema reference
url: /understanding-json-schema/reference
next:
label: Specification Links
url: /specification-links
Expand Down Expand Up @@ -82,4 +82,4 @@ The release notes discuss the changes impacting users and implementers:
Older drafts
------------

Please see [Specification Links](../../specification-links) for older drafts and the latest unreleased version of the specification.
Please see [Specification Links](../../specification-links) for older drafts and the latest unreleased version of the specification.
6 changes: 3 additions & 3 deletions pages/understanding-json-schema/about.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
title: "What is a schema?"
section: "docs"
prev:
label: Conventions used
url: /understanding-json-schema/conventions
label: Get Started
url: /learn
next:
label: The basics
url: /understanding-json-schema/basics
Expand Down Expand Up @@ -160,4 +160,4 @@ the relationships between data elements that can\'t be expressed. Any
will likely have two phases of validation: one at the schema (or
structural) level, and one at the semantic level. The latter check will
likely need to be implemented using a more general-purpose programming
language.
language.
6 changes: 3 additions & 3 deletions pages/understanding-json-schema/basics.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ prev:
label: What is a Schema?
url: /understanding-json-schema/about
next:
label: JSON Schema reference
url: /understanding-json-schema/reference
label: Creating your first Schema
url: /learn/getting-started-step-by-step
---

In [What is a schema?](../understanding-json-schema/about), we described what a [schema](../learn/glossary#schema) is,
Expand Down Expand Up @@ -149,4 +149,4 @@ The details of `$id` become more apparent when you start [structuring a complex

<Infobox label="Draft-specific info">
In Draft 4, `$id` is just `id` (without the dollar-sign).
</Infobox>
</Infobox>
20 changes: 10 additions & 10 deletions pages/understanding-json-schema/keywords/index.page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -43,16 +43,16 @@ export default function StaticMarkdownPage({ datas }: { datas: DataObject[] }) {
return (
<SectionContext.Provider value={null}>
<Head>
<title>JSON Schema - Keywords</title>
<title>JSON Schema - keywords</title>
</Head>
<Headline1>JSON Schema Keywords</Headline1>
<Headline1>JSON Schema keywords</Headline1>
<p className='text-slate-600 block leading-7 dark:text-slate-300'>
JSON Schema keywords are the building blocks of JSON Schema and they are
used to define the structure of a JSON document.
Keywords are the building blocks of JSON Schema and they are used to
define the structure of a JSON document.
</p>
<p className='text-slate-600 block leading-7 dark:text-slate-300 pt-4'>
Find below the list of JSON Schema Keywords and their links to the JSON
Schema docs:
Below is a list of JSON Schema keywords with links to their respective
documentation.
</p>
<div className='mt-4'>
{datas
Expand Down Expand Up @@ -88,10 +88,10 @@ export default function StaticMarkdownPage({ datas }: { datas: DataObject[] }) {
)}
</div>
<NextPrevButton
prevLabel='JSON Schema Glossary'
prevURL='/learn/glossary'
nextLabel='Understanding JSON Schema'
nextURL='/understanding-json-schema'
prevLabel='JSON Schema reference'
prevURL='/understanding-json-schema/reference'
nextLabel='Type-specific Keywords'
nextURL='/understanding-json-schema/reference/type'
/>
<DocsHelp fileRenderType={fileRenderType} />
</SectionContext.Provider>
Expand Down
6 changes: 3 additions & 3 deletions pages/understanding-json-schema/reference/annotations.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
title: "Annotations"
section: docs
prev:
label: Generic keywords
url: /understanding-json-schema/reference/generic
label: Schema annotations and comments
url: /understanding-json-schema/reference/metadata
next:
label: Comments
url: /understanding-json-schema/reference/comments
Expand Down Expand Up @@ -67,4 +67,4 @@ the future.
"readOnly": true,
"writeOnly": false
}
```
```
6 changes: 3 additions & 3 deletions pages/understanding-json-schema/reference/array.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@
title: "array"
section: docs
prev:
label: Object
url: /understanding-json-schema/reference/object
label: Type-specific keywords
url: /understanding-json-schema/reference/type
next:
label: Boolean
url: /understanding-json-schema/reference/boolean
Expand Down Expand Up @@ -538,4 +538,4 @@ The empty array always passes:
```json
// props { "indent": true, "valid": true }
[]
```
```
Loading