Skip to content

Commit

Permalink
[GSoC'24]: Build Data Driven JSON Schema Tooling Web Release (#915)
Browse files Browse the repository at this point in the history
* [data]: Data Preparation for Improved Data Model (#738)

* add validators to updated tooling data

* migrate hardcoded tooling data to updated model

* refine structure

* fix, clean, and add environment field

* add dependsOnValidators field

* remove empty fields

* conform to ecosystem tooling identification schema

* remove incorrect draft

* fix apache 2.0 license to spdx identifier

* [pages][tools]: Redesign UI/UX for Tooling Page (#808)

* initial redesign migration

* remove environments groupby

* add trigger update landscape tooling workflow (#838)

* [pages][tools]: Implement Tooling Analytics and Integrate Bowtie Report (#858)

* [pages][tools]: Prepare Tooling Page for Release

Closes: #780

* improve dropdownmenu and sidebar with svgr logo

better sidebar

better tooling table

* add ToolingTable

* fix sidebar and query params

* improve tooling data table

fix

* fix mobile responsive

* use css columns in modal

* use modal svgr icon

remove margins in tooling modal

* add initial analytics

* add sort by bowtie

* add analytics schema and fix sidebar bug

* fix CORS error

redirect follow is critical. Also, setting content-type header to
text/plain is critical, even if sending JSON, as "text/plain" does not
trigger the browser's preflight requests (which are unsupported by
Google here)

* update schema to remove source and homepage

* update yarn lock

* update call to action and issue template

* Pushed changes to improve style

* update dependencies

* fix json path types build error

* remove unused file

* update redirects

* update internal links

* fix linting errors

* add backend api

* fix bowtie api integration and add skeleton placeholder

* fix bowtie served over https

* sort toolingData drafts

* fix bowtie skeleton width style

* fix bowtie skeleton width

* add native title based tooltip

---------

Co-authored-by: Benjamin Granados <[email protected]>

* [data]: Sync and finalise tooling data (#899)

* sync tooling data

* add tooling data validation workflow and fix JSONSchemaTool interface

* fix undefined error

* use corepack and yarn in workflow

* fix tooling data

* fix tooling data draft

* Added 2 last tools

---------

Co-authored-by: Benjamin Granados <[email protected]>

* [web-release-tooling]: Minor fixes web tooling page (#913)

* add /implementations to /tools redirects

* fix /tools sidebar dropdown scrollbar

* fix nav link does not reset filters

* fix redirect typo

* update yarn lock

* fix redirects

* move wild card redirect to last

* fix dependencies problem

---------

Co-authored-by: Benjamin Granados <[email protected]>

* Removing old data files

* update the implementers workflow

---------

Co-authored-by: Benjamin Granados <[email protected]>
  • Loading branch information
DarhkVoyd and benjagm authored Sep 4, 2024
1 parent f83ccfe commit 33dbd28
Show file tree
Hide file tree
Showing 52 changed files with 5,645 additions and 1,187 deletions.
175 changes: 175 additions & 0 deletions .github/ISSUE_TEMPLATE/adding-your-tooling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,175 @@
name: Add or Modify JSON Schema Tool
description: Submit your tool to be added or updated in the JSON Schema ecosystem.
title: "Add or Modify [Tool Name] in JSON Schema Ecosystem"
labels: ["Status: Triage"]
body:
- type: input
id: name
attributes:
label: "Tool Name"
description: "Please provide the name of your tool."
placeholder: "Enter the tool name"
validations:
required: true

- type: textarea
id: description
attributes:
label: "Tool Description"
description: "Provide a brief description of your tool."
placeholder: "Enter a brief description of the tool"
validations:
required: true

- type: checkboxes
id: actionType
attributes:
label: "Action Type"
description: "Select whether you want to add a new tool or modify an existing one."
options:
- label: "Add Tool"
- label: "Modify Tool"
validations:
required: true

- type: checkboxes
id: toolingTypes
attributes:
label: "Tooling Types"
description: "Select the categories of tooling that best describe your project."
options:
- label: "validator"
- label: "hyper-schema"
- label: "benchmarks"
- label: "documentation"
- label: "LDO-utility"
- label: "code-to-schema"
- label: "data-to-schema"
- label: "model-to-schema"
- label: "schema-to-types"
- label: "schema-to-code"
- label: "schema-to-web-UI"
- label: "schema-to-data"
- label: "util-general-processing"
- label: "util-schema-to-schema"
- label: "util-draft-migration"
- label: "util-format-conversion"
- label: "util-testing"
- label: "editor"
- label: "editor-plugins"
- label: "schema-repository"
- label: "linter"
- label: "linter-plugins"
validations:
required: true

- type: textarea
id: languages
attributes:
label: "Languages"
description: "List the languages your tool is built in or supports."
placeholder: "Enter the languages"

- type: textarea
id: environments
attributes:
label: "Environments"
description: "List the platforms or environments in which your tool operates."
placeholder: "Enter the environments"

- type: textarea
id: dependsOnValidators
attributes:
label: "Dependencies on Validators"
description: "If your tool depends on other validators, please provide their URLs."
placeholder: "Enter URLs of dependent validators"

- type: textarea
id: creators
attributes:
label: "Creators"
description: "Provide information about the creators or authors of the project."
placeholder: "Provide information about the creators or authors of the project. Include their username and platform."

- type: textarea
id: maintainers
attributes:
label: "Maintainers"
description: "Provide information about the maintainers or authors of the project."
placeholder: "Provide information about the maintainers or authors of the project. Include their username and platform."

- type: input
id: license
attributes:
label: "License"
description: "Specify the license under which your project is distributed."
placeholder: "Enter the license"
validations:
required: true

- type: input
id: source
attributes:
label: "Source Repository URL"
description: "Provide the URL of your project's repository."
placeholder: "Enter the source URL"
validations:
required: true

- type: input
id: homepage
attributes:
label: "Homepage URL"
description: "Provide the URL of your project's homepage."
placeholder: "Enter the homepage URL"

- type: checkboxes
id: supportedDialects
attributes:
label: "Supported Dialects"
description: "List the supported JSON Schema dialects. Use the draft version identifiers from the list below."
options:
- label: "1"
- label: "2"
- label: "3"
- label: "4"
- label: "5"
- label: "6"
- label: "7"
- label: "2019-09"
- label: "2020-12"

- type: textarea
id: additionalDialects
attributes:
label: "Additional Dialects"
description: "If there are additional dialects supported, provide their name and source URL."
placeholder: "Enter the additional dialects."

- type: input
id: bowtieIdentifier
attributes:
label: "Bowtie Compliance Testing"
description: "If your tool is tested by Bowtie, provide the Bowtie identifier."
placeholder: "Enter the Bowtie identifier"

- type: textarea
id: toolingListingNotes
attributes:
label: "Tooling Listing Notes"
description: "Add any notes about the tooling which will appear in the tooling listing on the website."
placeholder: "Enter the tooling listing notes."

- type: textarea
id: compliance
attributes:
label: "Compliance"
description: "Provide details on what must be done to make the implementation the most compliant that it can be."
placeholder: "Enter the compliance details."

- type: textarea
id: landscape
attributes:
label: "Landscape Information"
description: "Provide additional information for the JSON Schema landscape diagram, such as your logo or a link to your logo. Indicate if you want to opt-out of the landscape."
placeholder: "Enter the landscape information and preferences."
3 changes: 1 addition & 2 deletions .github/workflows/new-implementation.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,7 @@ on:
branches:
- main
paths:
- data/*.yml
- pages/implementations/main.md
- data/tooling-data.yaml

jobs:
comment:
Expand Down
33 changes: 33 additions & 0 deletions .github/workflows/trigger-update-landscape-tooling.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
name: Trigger Update Landscape Tooling Workflow

on:
push:
paths:
- data/tooling-data.yaml
branches:
- main
workflow_dispatch:


jobs:
trigger-workflow:
runs-on: ubuntu-latest

steps:
- name: Create workflow token
id: app-token
uses: actions/create-github-app-token@v1
with:
app-id: ${{ vars.APP_ID }}
private-key: ${{ secrets.PRIVATE_KEY }}

- name: Trigger update landscape repository workflow
env:
AUTH_TOKEN: ${{ steps.app-token.output.token }}
run: |
curl -L \
-X POST \
-H "Accept: application/vnd.github.v3+json" \
-H "Authorization: Bearer $AUTH_TOKEN" \
https://api.github.com/repos/json-schema-org/landscape/actions/workflows/update-landscape-tooling.yml/dispatches \
-d '{"ref":"main"}'
61 changes: 61 additions & 0 deletions .github/workflows/validate-tooling-data.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
name: Validate Tooling Data

on:
push:
paths:
- data/tooling-data.yaml
branches:
- main
pull_request:
paths:
- data/tooling-data.yaml
workflow_dispatch:

jobs:
validate-tooling-data:
runs-on: ubuntu-latest

steps:
- name: Checkout Repository
uses: actions/checkout@v4

- name: Corepack enable
run: corepack enable

- name: Set up Node
uses: actions/setup-node@v4
with:
node-version: '20'

- name: Install dependencies
run: yarn add ajv ajv-formats js-yaml

- name: Validate tooling-data.yaml
run: |
node -e "
const Ajv = require('ajv/dist/2020');
const addFormats = require('ajv-formats');
const path = require('path');
const fs = require('fs');
const yaml = require('js-yaml');
const dataDir = path.join(process.env.GITHUB_WORKSPACE, 'data');
const schemaPath = path.join(dataDir, 'tooling-data.schema.json');
const dataPath = path.join(dataDir, 'tooling-data.yaml');
try {
const schema = JSON.parse(fs.readFileSync(schemaPath, 'utf-8'));
const data = yaml.load(fs.readFileSync(dataPath, 'utf-8'));
const ajv = new Ajv({ allErrors: true });
addFormats(ajv);
const validate = ajv.compile(schema);
const valid = validate(data);
if (!valid) {
console.error('Validation failed:', validate.errors);
process.exit(1);
} else {
console.log('tooling-data.yaml is valid.');
}
} catch (error) {
console.error('Error validating tooling-data.yaml:', error);
process.exit(1);
}"
8 changes: 2 additions & 6 deletions components/Layout.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -205,7 +205,7 @@ const MainNavigation = () => {

<MainNavLink
className='hidden lg:block hover:underline'
uri='/implementations'
uri='/tools'
label='Tools'
isActive={section === 'tools'}
/>
Expand Down Expand Up @@ -294,11 +294,7 @@ const MobileNav = () => {
isActive={section === 'docs'}
/>

<MainNavLink
uri='/implementations'
label='Tools'
isActive={section === 'tools'}
/>
<MainNavLink uri='/tools' label='Tools' isActive={section === 'tools'} />
<MainNavLink uri='/blog' label='Blog' isActive={section === 'blog'} />
<MainNavLink
uri='/community'
Expand Down
8 changes: 0 additions & 8 deletions data/hyper-libraries-modern.yml

This file was deleted.

Loading

0 comments on commit 33dbd28

Please sign in to comment.