Skip to content
Draft
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
20 changes: 20 additions & 0 deletions site/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# Dependencies
/node_modules

# Production
/build

# Generated files
.docusaurus
.cache-loader

# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local

npm-debug.log*
yarn-debug.log*
yarn-error.log*
45 changes: 45 additions & 0 deletions site/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# CVE Record Format Site

This is the website for the CVE Record Format, which hosts documentation for
how to understand and use the format to create and interpret CVE Records.

The site is built using [Docusaurus], a static website generator.

## Installation

```bash
npm install
```

## Local Development

```bash
npx docusaurus start
```

This command starts a local development server and opens up a browser window.
Most changes are reflected live without having to restart the server.

## Build

```bash
npx docusaurus build
```

This command generates static content into the `build` directory.

## Deployment

Using SSH:

```bash
USE_SSH=true npx docusaurus deploy
```

Not using SSH:

```bash
GIT_USER=<Your GitHub username> npx docusaurus deploy
```

[Docusaurus]: https://docusaurus.io/
8 changes: 8 additions & 0 deletions site/blog/2025-08-15-cve-record-format-blog.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
---
slug: blog-announcement
title: The CVE Record Format Blog is Alive!
authors: [ccoffin]
tags: [meta]
---

Test.
5 changes: 5 additions & 0 deletions site/blog/authors.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ccoffin:
name: Chris Coffin
title: QWG Co-Chair (MITRE)
url: https://github.com/ccoffin
page: true
9 changes: 9 additions & 0 deletions site/blog/tags.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
release:
label: Release
permalink: /release
description: Announcements for new releases of the CVE Record Format

meta:
label: Meta
permalink: /meta
description: Posts about the blog itself
8 changes: 8 additions & 0 deletions site/docs/concepts/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
{
"label": "Concepts",
"position": 2,
"link": {
"type": "generated-index",
"description": "Key concepts important to understand for the CVE Schema."
}
}
Empty file added site/docs/concepts/versions.md
Empty file.
5 changes: 5 additions & 0 deletions site/docs/intro.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
sidebar_position: 1
---

# Introduction
123 changes: 123 additions & 0 deletions site/docusaurus.config.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,123 @@
import { themes as prismThemes } from "prism-react-renderer";
import type { Config } from "@docusaurus/types";
import type * as Preset from "@docusaurus/preset-classic";

// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)

const config: Config = {
title: "CVE Record Format",
tagline: "Documentation for creating and using CVE Records",
favicon: "img/favicon.ico",

// Future flags, see https://docusaurus.io/docs/api/docusaurus-config#future
future: {
v4: true, // Improve compatibility with the upcoming Docusaurus v4
},

// Set the production url of your site here
url: "https://cveproject.github.io",
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: "/cve-schema",

// GitHub pages deployment config.
// If you aren't using GitHub pages, you don't need these.
organizationName: "cveproject", // Usually your GitHub org/user name.
projectName: "cve-schema", // Usually your repo name.

onBrokenLinks: "throw",
onBrokenMarkdownLinks: "warn",

// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: "en",
locales: ["en"],
},

presets: [
[
"classic",
{
docs: {
sidebarPath: "./sidebars.ts",
// Please change this to your repo.
// Remove this to remove the "edit this page" links.
editUrl:
"https://github.com/cveproject/cve-schema/tree/main/site/docs/",
},
blog: {
showReadingTime: true,
feedOptions: {
type: ["rss", "atom"],
xslt: true,
},
// Useful options to enforce blogging best practices
onInlineTags: "warn",
onInlineAuthors: "warn",
onUntruncatedBlogPosts: "warn",
},
theme: {
customCss: "./src/css/custom.css",
},
} satisfies Preset.Options,
],
],

themeConfig: {
// Replace with your project's social card
image: "img/docusaurus-social-card.jpg",
navbar: {
title: "CVE Schema",
items: [
{
type: "docSidebar",
sidebarId: "tutorialSidebar",
position: "left",
label: "Tutorial",
},
{ to: "/blog", label: "Blog", position: "left" },
{
href: "https://github.com/cveproject/cve-schema",
label: "GitHub",
position: "right",
},
],
},
footer: {
style: "dark",
links: [
{
title: "Docs",
items: [
{
label: "Guides",
to: "/docs/intro",
},
],
},
{
title: "More",
items: [
{
label: "Blog",
to: "/blog",
},
{
label: "GitHub",
href: "https://github.com/cveproject/cve-schema",
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} CVE Project`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
} satisfies Preset.ThemeConfig,
};

export default config;
47 changes: 47 additions & 0 deletions site/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
{
"name": "site",
"version": "0.0.0",
"private": true,
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids",
"typecheck": "tsc"
},
"dependencies": {
"@docusaurus/core": "3.8.1",
"@docusaurus/preset-classic": "3.8.1",
"@mdx-js/react": "^3.0.0",
"clsx": "^2.0.0",
"prism-react-renderer": "^2.3.0",
"react": "^19.0.0",
"react-dom": "^19.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.8.1",
"@docusaurus/tsconfig": "3.8.1",
"@docusaurus/types": "3.8.1",
"typescript": "~5.6.2"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
},
"engines": {
"node": ">=18.0"
}
}
33 changes: 33 additions & 0 deletions site/sidebars.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
import type {SidebarsConfig} from '@docusaurus/plugin-content-docs';

// This runs in Node.js - Don't use client-side code here (browser APIs, JSX...)

/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation

The sidebars can be generated from the filesystem, or explicitly defined here.

Create as many sidebars as you want.
*/
const sidebars: SidebarsConfig = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],

// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};

export default sidebars;
64 changes: 64 additions & 0 deletions site/src/components/HomepageFeatures/index.tsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import type { ReactNode } from "react";
import clsx from "clsx";
import Heading from "@theme/Heading";
import styles from "./styles.module.css";

type FeatureItem = {
title: string;
description: ReactNode;
};

const FeatureList: FeatureItem[] = [
{
title: "Uses JSON Schema",
description: (
<>
The CVE Record Format is provided as a set of JSON Schema files, for
easy use and interopability with tools expecting JSON Schemas.
</>
),
},
{
title: "Collaboratively Maintained",
description: (
<>
The CVE Record Format is maintained by the CVE Quality Working Group,
under a consensus-based process, which <em>anyone</em> can join.
</>
),
},
{
title: "Powered by RFDs",
description: (
<>
The CVE Record Format evolves by a Request for Discussion (RFD) process,
where changes are proposed, discussed, and approved.
</>
),
},
];

function Feature({ title, description }: FeatureItem) {
return (
<div className={clsx("col col--4")}>
<div className="text--center padding-horiz--md">
<Heading as="h3">{title}</Heading>
<p>{description}</p>
</div>
</div>
);
}

export default function HomepageFeatures(): ReactNode {
return (
<section className={styles.features}>
<div className="container">
<div className="row">
{FeatureList.map((props, idx) => (
<Feature key={idx} {...props} />
))}
</div>
</div>
</section>
);
}
6 changes: 6 additions & 0 deletions site/src/components/HomepageFeatures/styles.module.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
Loading