This repository contains the sources of JSON Schema website:
- It's powered by Next.js,
- It uses Tailwind CSS framework,
- It's build and deployed with Netlify.
Use the following tools to set up the project:
Node.js v20.9.0+
This project uses git submodules, so you will need to run the following commands to fully clone the repo.
git submodule init
git submodule update
- Create a new
.env
file by copying the contents of the.env.example
into.env
file. Use this command:
cp .env.example .env
-
Open .env and fill in your actual values for each variable.
-
Save the file.
-
Ensure .env is in your .gitignore.
Install dependencies
yarn
Run the development server on http://localhost:3000
yarn dev
Build static files on /out folder
yarn build
Formatting
you can check code formatting using the following command:
yarn run format:check
you can format the code using the following command:
yarn run format:fix
Linting
you can check linting issues using the following command:
yarn run lint
you can fix linting issues using the following command:
yarn run lint:fix
Husky for git hooks
This project uses Husky to run checks for the formatting, linting, typecheck and build commands before committing the code.
pre-commit hook will run the following commands:
yarn run lint
yarn run typecheck
yarn run build
If you are a Docker lover, you have the option to use it following these instructions.
After cloning repository to your local, perform the following steps from the root of the repository.
-
Build the Docker image:
make install
-
Start the container:
make run
Now you're running JSON Schema website in a development mode. Container is mapped with your local copy of the website. Whenever you make changes to the code, the website will refresh and changes visible in localhost:3000.
This repository has the following structure:
├── .github # Definitions of GitHub workflows, pull request and issue templates
├── components # Various generic components such as "Button", "Figure", etc.
├── data # JSON Schema Implementations.
├── styles # Various CSS files
├── lib # Various JS code for preparing static data to render in pages
├── pages # Website's pages source. It includes raw markdown files and React page templates.
│ ├── overview # JSON Schema initiative docs
│ ├── blog # Blog posts
│ ├── learn # JSON Schema docs
│ └── implementations # Various pages to describe tools
├── public # Data for site metadata and static blog such as images
├── next.config.js # Next.js configuration file
Here are some areas where you can contribute to the website:
- Blogs posts
- Case Studies
- Design
- Documentation
- Website enhancements
- Add a new JSON Schema Implementation
- JSON Schema Landscape
To figure out a good first issue to work on, join our Slack workspace and visit the #contribute
channel. This channel is specifically designed for onboarding and supporting new contributors.
You should also check out our Contributing guidelines.
Thanks goes to these wonderful people who contributed to this website:
Made with contributors-img.
This document has been inspired by AsyncAPI website README.md.
The contents of this repository are licensed under either the BSD 3-clause license or the Academic Free License v3.0.