diff --git a/.eslintrc.js b/.eslintrc.js index d52824d5..f630ee60 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -32,6 +32,7 @@ module.exports = { 'prettier', ], rules: { + camelcase: 'error', 'react/prop-types': 'off', '@docusaurus/string-literal-i18n-messages': 'error', '@docusaurus/no-untranslated-text': 'warn', diff --git a/.gitignore b/.gitignore index 4e543d12..d267fcbc 100644 --- a/.gitignore +++ b/.gitignore @@ -30,3 +30,5 @@ versioned_docs/* versioned_sidebars/* !versioned_sidebars/.keep + +static/generated/*.json diff --git a/scripts/build-plugin-list.js b/scripts/build-plugin-list.js index 459c5d89..265a6e24 100644 --- a/scripts/build-plugin-list.js +++ b/scripts/build-plugin-list.js @@ -1,6 +1,52 @@ +'use strict' + const { promises: fs } = require('fs') +const path = require('path') + +const log = require('pino')({ + level: process.env.LOG_LEVEL || 'debug', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + }, + }, +}) + +const LATEST_ECOSYSTEM_FILE = path.join(__dirname, '../versioned_docs/version-latest/Guides/Ecosystem.md') +const OUTPUT_FILE = path.join(__dirname, '../static/generated/plugins.json') + +generateEcosystemJson({ + ecosystemFile: LATEST_ECOSYSTEM_FILE, + outputFile: OUTPUT_FILE, +}) + +async function generateEcosystemJson({ ecosystemFile, outputFile }) { + log.info('Generating ecosystem data file from source %s', ecosystemFile) + const plugins = await extractEcosystemFromFile(ecosystemFile) + log.debug('Read the ecosystem file') + + await fs.writeFile(outputFile, JSON.stringify(plugins, null, 2)) + log.info('Wrote the ecosystem plugin file to %s', outputFile) +} + +async function extractEcosystemFromFile(file) { + const content = await fs.readFile(file, 'utf8') -const extractPlugins = (pluginContent) => { + const [, pluginText] = content.split('#### [Core](#core)\n') + + const [ + corePluginsContent, // + communityPluginsContent, // + ] = pluginText.split('#### [Community](#community)') + + return { + corePlugins: extractPlugins(corePluginsContent), + communityPlugins: extractPlugins(communityPluginsContent), + } +} + +function extractPlugins(pluginContent) { const lines = pluginContent.split('\n').filter(Boolean) // remove empty lines // if a line doesn't start with "-" merge it back with the previous item @@ -12,6 +58,7 @@ const extractPlugins = (pluginContent) => { } return acc }, []) + const re = /\[`([-a-zA-Z\d./@]+)`\]\(([^)]+)\)(\s*(.+))?/ const plugins = mergedLines.map((line) => { const match = re.exec(line) @@ -23,40 +70,13 @@ const extractPlugins = (pluginContent) => { const name = match[1] const url = match[2] - const description = match[3] ? match[3].trim() : '' + const description = match[3] ? match[3].trim().replace(/ {2,}/g, '') : '' - return { name, url, description } + return { + name, + url, + description: description.charAt(0).toUpperCase() + description.slice(1), + } }) return plugins } - -async function extractEcosystemFromFile(file) { - let data - try { - data = await fs.readFile(file, 'utf8') - } catch (e) { - if (e.code === 'ENOENT') { - const legacyEcosystemFile = file.replace('Guides', '') - data = await fs.readFile(legacyEcosystemFile, 'utf8') - } - } - - const content = data.toString() - const corePluginsContent = content.split('#### [Core](#core)\n')[1].split('#### [Community](#community)')[0] - - const communityPluginsContent = content.split('#### [Core](#core)\n')[1].split('#### [Community](#community)')[1] - - const plugins = { - corePlugins: extractPlugins(corePluginsContent), - communityPlugins: extractPlugins(communityPluginsContent), - } - - return { plugins } -} - -async function process() { - const plugins = await extractEcosystemFromFile('Ecosystem.md') - console.log(JSON.stringify(plugins['plugins']['communityPlugins'])) -} - -process() diff --git a/scripts/build-static-data.js b/scripts/build-static-data.js new file mode 100644 index 00000000..7309870f --- /dev/null +++ b/scripts/build-static-data.js @@ -0,0 +1,73 @@ +'use strict' + +const { promises: fs } = require('fs') +const path = require('path') +const yaml = require('yaml') + +const log = require('pino')({ + level: process.env.LOG_LEVEL || 'debug', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + }, + }, +}) + +execute([ + // ##### Team + { + staticDataFile: path.join(__dirname, '../static/data/team.yml'), + outputFile: path.join(__dirname, '../static/generated/team.json'), + sideEffect: (data) => { + // Sort alphabetically by `sortname` + data.forEach((group) => { + group.people.sort((a, b) => { + return a.sortname.localeCompare(b.sortname) + }) + }) + }, + }, + + // ##### Organizations + { + staticDataFile: path.join(__dirname, '../static/data/organisations.yml'), + outputFile: path.join(__dirname, '../static/generated/organisations.json'), + sideEffect: (data) => { + // Sort alphabetically by `name` lowercase + data.sort((a, b) => { + return a.name.toLowerCase().localeCompare(b.name.toLowerCase()) + }) + }, + }, + + // ##### Acknowledgements + { + staticDataFile: path.join(__dirname, '../static/data/acknowledgements.yml'), + outputFile: path.join(__dirname, '../static/generated/acknowledgements.json'), + sideEffect: () => { + // As-is, no sorting + }, + }, +]) + +async function execute(filePipeline) { + for (const file of filePipeline) { + await processFile(file) + } +} + +async function processFile({ staticDataFile, outputFile, sideEffect }) { + const dataFile = await yamlToJSON(staticDataFile) + log.debug('Read the file: %s', staticDataFile) + + sideEffect(dataFile) + + await fs.writeFile(outputFile, JSON.stringify(dataFile, null, 2)) + log.info('Wrote the file to %s', outputFile) +} + +async function yamlToJSON(yamlFile) { + const content = await fs.readFile(yamlFile, 'utf8') + return yaml.parse(content) +} diff --git a/scripts/build-website.sh b/scripts/build-website.sh index 0202bdd2..1b124e3b 100755 --- a/scripts/build-website.sh +++ b/scripts/build-website.sh @@ -21,7 +21,9 @@ node ./scripts/process-releases.js ####### Data Generation Phase -# TODO node build-plugin-list.js +node ./scripts/build-plugin-list.js +node ./scripts/download-benchmarks.js +node ./scripts/build-static-data.js ####### Build Phase diff --git a/scripts/download-benchmarks.js b/scripts/download-benchmarks.js index 22d93f39..3cdab73a 100644 --- a/scripts/download-benchmarks.js +++ b/scripts/download-benchmarks.js @@ -1,27 +1,69 @@ 'use strict' -const { request } = require('undici') + +const path = require('node:path') const { writeFile } = require('node:fs/promises') -const path = require('path') + +const { request } = require('undici') + const arrayDefaultFrameworks = require('./frameworks.json') -const frameworkTags = arrayDefaultFrameworks.map((framework) => framework.tag) +const frameworkTags = arrayDefaultFrameworks.map(({ tag }) => tag) + +const log = require('pino')({ + level: process.env.LOG_LEVEL || 'debug', + transport: { + target: 'pino-pretty', + options: { + colorize: true, + }, + }, +}) const URL_BENCHMARK = 'https://raw.githubusercontent.com/fastify/benchmarks/master/benchmark-results.json' const GITHUB_BASE_URL = 'https://api.github.com/repos/fastify/benchmarks' -let bearerToken = '' -const checkData = (data) => { - return data.filter((item) => frameworkTags.includes(item.name)).every((currentValue) => !isNaN(currentValue.requests)) +const OUTPUT_FILE = path.join(__dirname, '../static/generated/benchmarks.json') + +execute({ + downloadUrl: URL_BENCHMARK, + outputFile: OUTPUT_FILE, +}) + +async function execute({ downloadUrl, outputFile }) { + const data = await downloadBenchmarks(downloadUrl) + if (data) { + log.debug('File is ok, saving to filesystem') + + await writeFile(outputFile, JSON.stringify(data, null, 2)) + log.info('Wrote the benchmarks file to %s', outputFile) + } else { + log.error('Cannot find suitable data - Please check the URL %s', URL_BENCHMARK) + process.exit(1) + } } -const getDataAsJSON = async (url) => { - const { body } = await request(url, { - headers: { - 'User-Agent': 'fastify-docusaurus-script', - Accept: 'application/vnd.github+json', - Authorization: `Bearer ${bearerToken}`, - }, - }) - return body.json() +async function downloadBenchmarks(githubUrl) { + const data = await getDataAsJSON(githubUrl) + if (isValidBenchmark(data)) { + return buildBenchmarksJSON(data) + } + + log.warn('Fetched file contains `N/A` data. Searching for previous revision') + + const commits = await getCommits() + for (let commit in commits) { + const commitSha = commits[commit] + log.debug(`Checking commit %s`, commitSha) + + const treeUrl = await getTree(commitSha) + const benchmarlUrl = await getUrlFromTree(treeUrl) + + const data = await getBlob(benchmarlUrl) + if (isValidBenchmark(data)) { + return buildBenchmarksJSON(data) + } + } + + throw new Error('Unable to find a valid benchmark result') } const getCommits = async () => { @@ -29,85 +71,54 @@ const getCommits = async () => { return commits.map((commit) => commit.sha) } -const getTree = async (commit_sha) => { - const commit = await getDataAsJSON(`${GITHUB_BASE_URL}/git/commits/${commit_sha}`) +const getTree = async (commitSha) => { + const commit = await getDataAsJSON(`${GITHUB_BASE_URL}/git/commits/${commitSha}`) return commit.tree.url } -const getUrlFromTree = async (tree_url) => { - const tree = await getDataAsJSON(tree_url) +const getUrlFromTree = async (treeUrl) => { + const tree = await getDataAsJSON(treeUrl) return tree.tree.find((item) => item.path == 'benchmark-results.json').url } -const getBlob = async (blob_url) => { - const blob = await getDataAsJSON(blob_url) - const decoded_content = Buffer.from(blob.content, 'base64') - return JSON.parse(decoded_content) +const getBlob = async (blobUrl) => { + const blob = await getDataAsJSON(blobUrl) + const decodedContent = Buffer.from(blob.content, 'base64') + return JSON.parse(decodedContent) } -const buildJSON = (data) => { +function buildBenchmarksJSON(data) { + const maxSpeed = data + .filter(({ requests }) => !isNaN(requests)) + .map(({ requests }) => parseInt(requests)) + .reduce((max, req) => (req > max ? req : max), 0) + const json = { - reference: 0, - frameworks: [], - } - for (const framework of arrayDefaultFrameworks) { - const item = data.find((item) => item.name == framework.tag) - json.frameworks.push({ - name: framework.name, - requests: item.requests, - test: framework.test, - repository: framework.repository, - }) + reference: maxSpeed, + frameworks: arrayDefaultFrameworks.map((framework) => { + const item = data.find(({ name }) => name == framework.tag) + return { + ...framework, + requests: item.requests, + } + }), } return json } -const downloadData = async () => { - const data = await getDataAsJSON(URL_BENCHMARK) - const isDataOk = await checkData(data) - if (isDataOk) { - return buildJSON(data) - } - console.log('Fetched file contains N/As. Searching for previous revision') - const commits = await getCommits() - - for (let commit in commits) { - const commit_sha = commits[commit] - console.log(`Checking commit ${commit_sha}`) - - const tree_url = await getTree(commit_sha) - const benchmarl_url = await getUrlFromTree(tree_url) - - const pdata = await getBlob(benchmarl_url) - const isPDataOk = await checkData(pdata) - if (isPDataOk) { - return buildJSON(pdata) - } - } - - throw new Error('Unable to find a valid benchmark result') +function isValidBenchmark(data) { + return data + .filter((item) => frameworkTags.includes(item.name)) // + .every((item) => !isNaN(item.requests)) } -const execute = async () => { - bearerToken = process.argv[2] - const reference = parseInt(process.argv[3]) - - const data = await downloadData() - if (data) { - console.log('File is ok, saving to filesystem') - - data.reference = reference - await writeFile(path.join(__dirname, '../src/pages/benchmarks.json'), JSON.stringify(data)) - } else { - console.log('Cannot find suitable data') - process.exit(1) - } +async function getDataAsJSON(url) { + const { body } = await request(url, { + headers: { + 'User-Agent': 'fastify-docusaurus-script', + Accept: 'application/vnd.github+json', + }, + }) + return body.json() } - -/** - * Run as follows (from scripts forlder) - * node download-benchmarks.js - * where is a valid Git API Key and is the reference for the bar visualization - */ -execute() diff --git a/scripts/package.json b/scripts/package.json index e6db9a69..4fc5d572 100644 --- a/scripts/package.json +++ b/scripts/package.json @@ -21,6 +21,7 @@ "prepend-file": "^2.0.1", "replace": "^1.2.2", "semver": "^7.3.8", - "undici": "^5.14.0" + "undici": "^5.14.0", + "yaml": "^2.2.1" } } diff --git a/scripts/process-releases.js b/scripts/process-releases.js index ec0ffeed..d279125b 100644 --- a/scripts/process-releases.js +++ b/scripts/process-releases.js @@ -62,7 +62,7 @@ async function processReleases(opts) { // ### Customization await addMetadataToFile(join(docDestination, 'index.md'), { title: 'Introduction', - displayed_sidebar: 'docsSidebar', + [`displayed_sidebar`]: 'docsSidebar', }) // todo convert links to relative diff --git a/src/components/Ecosystem/PluginsTable.jsx b/src/components/Ecosystem/PluginsTable.jsx index 025da369..828c846b 100644 --- a/src/components/Ecosystem/PluginsTable.jsx +++ b/src/components/Ecosystem/PluginsTable.jsx @@ -3,12 +3,12 @@ import ReactMarkdown from 'react-markdown' import Link from '@docusaurus/Link' const PluginsTable = (props) => { - const [name_filter, setNameFilter] = useState() - const [description_filter, setDescriptionFilter] = useState() + const [nameFilter, setNameFilter] = useState() + const [descriptionFilter, setDescriptionFilter] = useState() const filtered = props.plugins.filter((plugin) => { - const nameCondition = name_filter == undefined || plugin.name.includes(name_filter) - const descriptionCondition = description_filter == undefined || plugin.description.includes(description_filter) + const nameCondition = nameFilter == undefined || plugin.name.includes(nameFilter) + const descriptionCondition = descriptionFilter == undefined || plugin.description.includes(descriptionFilter) return nameCondition && descriptionCondition }) diff --git a/src/components/HeroBanner/index.jsx b/src/components/HeroBanner/index.jsx index 7febffe3..89e8937b 100644 --- a/src/components/HeroBanner/index.jsx +++ b/src/components/HeroBanner/index.jsx @@ -4,9 +4,9 @@ import React from 'react' function HeroBanner({ title }) { return ( -
-

{title}

-
+
+

{title}

+
) } diff --git a/src/pages/benchmarks.json b/src/pages/benchmarks.json deleted file mode 100644 index 51082b29..00000000 --- a/src/pages/benchmarks.json +++ /dev/null @@ -1,35 +0,0 @@ -{ - "reference": 71768, - "frameworks": [ - { - "name": "Fastify", - "requests": "48241.6", - "test": "https://github.com/fastify/benchmarks/blob/master/benchmarks/fastify.cjs", - "repository": "https://github.com/fastify/fastify" - }, - { - "name": "Koa", - "requests": "39428.2", - "test": "https://github.com/fastify/benchmarks/blob/master/benchmarks/koa.cjs", - "repository": "https://github.com/koajs/koa" - }, - { - "name": "Express", - "requests": "11386.2", - "test": "https://github.com/fastify/benchmarks/blob/master/benchmarks/express.cjs", - "repository": "https://github.com/expressjs/express" - }, - { - "name": "Restify", - "requests": "36459.4", - "test": "https://github.com/fastify/benchmarks/blob/master/benchmarks/restify.cjs", - "repository": "https://github.com/restify/node-restify" - }, - { - "name": "Hapi", - "requests": "33561.6", - "test": "https://github.com/fastify/benchmarks/blob/master/benchmarks/hapi.cjs", - "repository": "https://github.com/hapijs/hapi" - } - ] -} diff --git a/src/pages/benchmarks.mdx b/src/pages/benchmarks.mdx index e6069882..287cfad4 100644 --- a/src/pages/benchmarks.mdx +++ b/src/pages/benchmarks.mdx @@ -1,15 +1,15 @@ -import HeroBanner from '../components/HeroBanner' +import HeroBanner from '@site/src/components/HeroBanner' +import BenchmarkInfo from '@site/src/components/BenchmarkInfo' -import benchmarkData from './benchmarks.json' -import BenchmarkInfo from '../components/BenchmarkInfo' +import benchmarksData from '@site/static/generated/benchmarks.json' export function BenchmarkSection() { - return benchmarkData.frameworks.map((framework) => ( + return benchmarksData.frameworks.map((framework) => ( diff --git a/src/pages/ecosystem.mdx b/src/pages/ecosystem.mdx index c6cbb53e..b92dcd2f 100644 --- a/src/pages/ecosystem.mdx +++ b/src/pages/ecosystem.mdx @@ -1,28 +1,24 @@ -import PluginsTable from '@site/src/components/Ecosystem/PluginsTable' import Link from '@docusaurus/Link' -import plugins from './plugins.json' +import HeroBanner from '@site/src/components/HeroBanner' +import PluginsTable from '@site/src/components/Ecosystem/PluginsTable' + +import plugins from '@site/static/generated/plugins.json' export function PluginCount(props) { return {props.plugins.length} } -
- -## Ecosystem + - There are core plugins and community plugins -- A core plugin is a plugin maintained by the fastify team, and we do our best to maintain them according to the Fastify [Long Term Support](https://github.com/fastify/fastify/blob/main/docs/Reference/LTS.md) policy. -- We guarantee that every community plugin respects Fastify best practices (tests, etc) at the time they have been added to the list. We offer no guarantee on their maintenance. -- Can't find the plugin you're looking for? No problem, it's easy to write one! - -
+- A core plugin is a plugin maintained by the fastify team, and we do our best to maintain them according to the Fastify [Long Term Support](https://github.com/fastify/fastify/blob/main/docs/Reference/LTS.md) policy +- We guarantee that every community plugin respects Fastify best practices (tests, etc) at the time they have been added to the list. We offer no guarantee on their maintenance +- Can't find the plugin you're looking for? No problem, you can learn how to do it! -### Core Plugins +## Core Plugins -
- -### Community Plugins +## Community Plugins diff --git a/src/pages/markdown-page.md b/src/pages/markdown-page.md deleted file mode 100644 index 9756c5b6..00000000 --- a/src/pages/markdown-page.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: Markdown page example ---- - -# Markdown page example - -You don't need React to write simple standalone pages. diff --git a/src/pages/plugins.json b/src/pages/plugins.json deleted file mode 100644 index 514571e7..00000000 --- a/src/pages/plugins.json +++ /dev/null @@ -1,1271 +0,0 @@ -{ - "corePlugins": [ - { - "name": "@fastify/accepts", - "url": "https://github.com/fastify/fastify-accepts", - "description": "to have [accepts](https://www.npmjs.com/package/accepts) in your request object." - }, - { - "name": "@fastify/accepts-serializer", - "url": "https://github.com/fastify/fastify-accepts-serializer", - "description": "to serialize to output according to `Accept` header." - }, - { - "name": "@fastify/any-schema", - "url": "https://github.com/fastify/any-schema-you-like", - "description": "Save multiple schemas and decide which one to use to serialize the payload" - }, - { - "name": "@fastify/auth", - "url": "https://github.com/fastify/fastify-auth", - "description": "Run multiple auth functions in Fastify." - }, - { - "name": "@fastify/autoload", - "url": "https://github.com/fastify/fastify-autoload", - "description": "Require all plugins in a directory." - }, - { - "name": "@fastify/awilix", - "url": "https://github.com/fastify/fastify-awilix", - "description": "Dependency injection support for Fastify, based on [awilix](https://github.com/jeffijoe/awilix)." - }, - { - "name": "@fastify/aws-lambda", - "url": "https://github.com/fastify/aws-lambda-fastify", - "description": "allows you to easily build serverless web applications/services and RESTful APIs using Fastify on top of AWS Lambda and Amazon API Gateway." - }, - { - "name": "@fastify/basic-auth", - "url": "https://github.com/fastify/fastify-basic-auth", - "description": "Basic auth plugin for Fastify." - }, - { - "name": "@fastify/bearer-auth", - "url": "https://github.com/fastify/fastify-bearer-auth", - "description": "Bearer auth plugin for Fastify." - }, - { - "name": "@fastify/caching", - "url": "https://github.com/fastify/fastify-caching", - "description": "General server-side cache and ETag support." - }, - { - "name": "@fastify/circuit-breaker", - "url": "https://github.com/fastify/fastify-circuit-breaker", - "description": "A low overhead circuit breaker for your routes." - }, - { - "name": "@fastify/compress", - "url": "https://github.com/fastify/fastify-compress", - "description": "Fastify compression utils." - }, - { - "name": "@fastify/cookie", - "url": "https://github.com/fastify/fastify-cookie", - "description": "Parse and set cookie headers." - }, - { - "name": "@fastify/cors", - "url": "https://github.com/fastify/fastify-cors", - "description": "Enables the use of CORS in a Fastify application." - }, - { - "name": "@fastify/csrf-protection", - "url": "https://github.com/fastify/csrf-protection", - "description": "A plugin for adding [CSRF](https://en.wikipedia.org/wiki/Cross-site_request_forgery) protection to Fastify." - }, - { - "name": "@fastify/diagnostics-channel", - "url": "https://github.com/fastify/fastify-diagnostics-channel", - "description": "Plugin to deal with `diagnostics_channel` on Fastify" - }, - { - "name": "@fastify/elasticsearch", - "url": "https://github.com/fastify/fastify-elasticsearch", - "description": "Plugin to share the same ES client." - }, - { - "name": "@fastify/env", - "url": "https://github.com/fastify/fastify-env", - "description": "Load and check configuration." - }, - { - "name": "@fastify/etag", - "url": "https://github.com/fastify/fastify-etag", - "description": "Automatically generate ETags for HTTP responses." - }, - { - "name": "@fastify/flash", - "url": "https://github.com/fastify/fastify-flash", - "description": "Set and get flash messages using the session." - }, - { - "name": "@fastify/formbody", - "url": "https://github.com/fastify/fastify-formbody", - "description": "Plugin to parse x-www-form-urlencoded bodies." - }, - { - "name": "@fastify/funky", - "url": "https://github.com/fastify/fastify-funky", - "description": "Makes functional programming in Fastify more convenient. Adds support for Fastify routes returning functional structures, such as Either, Task or plain parameterless function." - }, - { - "name": "@fastify/helmet", - "url": "https://github.com/fastify/fastify-helmet", - "description": "Important security headers for Fastify." - }, - { - "name": "@fastify/hotwire", - "url": "https://github.com/fastify/fastify-hotwire", - "description": "Use the Hotwire pattern with Fastify." - }, - { - "name": "@fastify/http-proxy", - "url": "https://github.com/fastify/fastify-http-proxy", - "description": "Proxy your HTTP requests to another server, with hooks." - }, - { - "name": "@fastify/jwt", - "url": "https://github.com/fastify/fastify-jwt", - "description": "JWT utils for Fastify, internally uses [fast-jwt](https://github.com/nearform/fast-jwt)." - }, - { - "name": "@fastify/leveldb", - "url": "https://github.com/fastify/fastify-leveldb", - "description": "Plugin to share a common LevelDB connection across Fastify." - }, - { - "name": "@fastify/middie", - "url": "https://github.com/fastify/middie", - "description": "Middleware engine for Fastify." - }, - { - "name": "@fastify/mongodb", - "url": "https://github.com/fastify/fastify-mongodb", - "description": "Fastify MongoDB connection plugin, with which you can share the same MongoDB connection pool across every part of your server." - }, - { - "name": "@fastify/multipart", - "url": "https://github.com/fastify/fastify-multipart", - "description": "Multipart support for Fastify." - }, - { - "name": "@fastify/nextjs", - "url": "https://github.com/fastify/fastify-nextjs", - "description": "React server-side rendering support for Fastify with [Next](https://github.com/zeit/next.js/)." - }, - { - "name": "@fastify/oauth2", - "url": "https://github.com/fastify/fastify-oauth2", - "description": "Wrap around [`simple-oauth2`](https://github.com/lelylan/simple-oauth2)." - }, - { - "name": "@fastify/one-line-logger", - "url": "https://github.com/fastify/one-line-logger", - "description": "Formats Fastify's logs into a nice one-line message." - }, - { - "name": "@fastify/postgres", - "url": "https://github.com/fastify/fastify-postgres", - "description": "Fastify PostgreSQL connection plugin, with this you can share the same PostgreSQL connection pool in every part of your server." - }, - { - "name": "@fastify/rate-limit", - "url": "https://github.com/fastify/fastify-rate-limit", - "description": "A low overhead rate limiter for your routes." - }, - { - "name": "@fastify/redis", - "url": "https://github.com/fastify/fastify-redis", - "description": "Fastify Redis connection plugin, with which you can share the same Redis connection across every part of your server." - }, - { - "name": "@fastify/reply-from", - "url": "https://github.com/fastify/fastify-reply-from", - "description": "Plugin to forward the current HTTP request to another server." - }, - { - "name": "@fastify/request-context", - "url": "https://github.com/fastify/fastify-request-context", - "description": "Request-scoped storage, based on [AsyncLocalStorage](https://nodejs.org/api/async_hooks.html#async_hooks_class_asynclocalstorage) (with fallback to [cls-hooked](https://github.com/Jeff-Lewis/cls-hooked)), providing functionality similar to thread-local storages." - }, - { - "name": "@fastify/response-validation", - "url": "https://github.com/fastify/fastify-response-validation", - "description": "A simple plugin that enables response validation for Fastify." - }, - { - "name": "@fastify/routes", - "url": "https://github.com/fastify/fastify-routes", - "description": "Plugin that provides a `Map` of routes." - }, - { - "name": "@fastify/schedule", - "url": "https://github.com/fastify/fastify-schedule", - "description": "Plugin for scheduling periodic jobs, based on [toad-scheduler](https://github.com/kibertoad/toad-scheduler)." - }, - { - "name": "@fastify/secure-session", - "url": "https://github.com/fastify/fastify-secure-session", - "description": "Create a secure stateless cookie session for Fastify." - }, - { - "name": "@fastify/sensible", - "url": "https://github.com/fastify/fastify-sensible", - "description": "Defaults for Fastify that everyone can agree on. It adds some useful decorators such as HTTP errors and assertions, but also more request and reply methods." - }, - { - "name": "@fastify/session", - "url": "https://github.com/fastify/session", - "description": "a session plugin for Fastify." - }, - { - "name": "@fastify/soap-client", - "url": "https://github.com/fastify/fastify-soap-client", - "description": "a SOAP client plugin for Fastify." - }, - { - "name": "@fastify/static", - "url": "https://github.com/fastify/fastify-static", - "description": "Plugin for serving static files as fast as possible." - }, - { - "name": "@fastify/swagger", - "url": "https://github.com/fastify/fastify-swagger", - "description": "Plugin for serving Swagger/OpenAPI documentation for Fastify, supporting dynamic generation." - }, - { - "name": "@fastify/type-provider-json-schema-to-ts", - "url": "https://github.com/fastify/fastify-type-provider-json-schema-to-ts", - "description": "Fastify [type provider](https://www.fastify.io/docs/latest/Reference/Type-Providers/) for [json-schema-to-ts](https://github.com/ThomasAribart/json-schema-to-ts)." - }, - { - "name": "@fastify/type-provider-typebox", - "url": "https://github.com/fastify/fastify-type-provider-typebox", - "description": "Fastify [type provider](https://www.fastify.io/docs/latest/Reference/Type-Providers/) for [Typebox](https://github.com/sinclairzx81/typebox)." - }, - { - "name": "@fastify/under-pressure", - "url": "https://github.com/fastify/under-pressure", - "description": "Measure process load with automatic handling of _\"Service Unavailable\"_ plugin for Fastify." - }, - { - "name": "@fastify/url-data", - "url": "https://github.com/fastify/fastify-url-data", - "description": "Decorate the `Request` object with a method to access raw URL components." - }, - { - "name": "@fastify/view", - "url": "https://github.com/fastify/point-of-view", - "description": "Templates rendering (_ejs, pug, handlebars, marko_) plugin support for Fastify." - }, - { - "name": "@fastify/websocket", - "url": "https://github.com/fastify/fastify-websocket", - "description": "WebSocket support for Fastify. Built upon [ws](https://github.com/websockets/ws)." - } - ], - "communityPlugins": [ - { - "name": "@applicazza/fastify-nextjs", - "url": "https://github.com/applicazza/fastify-nextjs", - "description": "Alternate Fastify and Next.js integration." - }, - { - "name": "@coobaha/typed-fastify", - "url": "https://github.com/Coobaha/typed-fastify", - "description": "Strongly typed routes with a runtime validation using JSON schema generated from types." - }, - { - "name": "@dnlup/fastify-doc", - "url": "https://github.com/dnlup/fastify-doc", - "description": "A plugin for sampling process metrics." - }, - { - "name": "@dnlup/fastify-traps", - "url": "https://github.com/dnlup/fastify-traps", - "description": "A plugin to close the server gracefully on `SIGINT` and `SIGTERM` signals." - }, - { - "name": "@eropple/fastify-openapi3", - "url": "https://github.com/eropple/fastify-openapi3", - "description": "Provides easy, developer-friendly OpenAPI 3.1 specs + doc explorer based on your routes." - }, - { - "name": "@ethicdevs/fastify-custom-session", - "url": "https://github.com/EthicDevs/fastify-custom-session", - "description": "A plugin that let you use session and decide only where to load/save from/to. Has great TypeScript support + built-in adapters for common ORMs/databases (Firebase, Prisma Client, Postgres (wip), InMemory) and you can easily make your own adapter!" - }, - { - "name": "@ethicdevs/fastify-git-server", - "url": "https://github.com/EthicDevs/fastify-git-server", - "description": "A plugin to easily create git server and make one/many Git repositories available for clone/fetch/push through the standard `git` (over http) commands." - }, - { - "name": "@fastify-userland/request-id", - "url": "https://github.com/fastify-userland/request-id", - "description": "Fastify Request ID Plugin" - }, - { - "name": "@fastify-userland/typeorm-query-runner", - "url": "https://github.com/fastify-userland/typeorm-query-runner", - "description": "Fastify typeorm QueryRunner plugin" - }, - { - "name": "@gquittet/graceful-server", - "url": "https://github.com/gquittet/graceful-server", - "description": "Tiny (~5k), Fast, KISS, and dependency-free Node.JS library to make your Fastify API graceful." - }, - { - "name": "@h4ad/serverless-adapter", - "url": "https://github.com/H4ad/serverless-adapter", - "description": "Run REST APIs and other web applications using your existing Node.js application framework (Express, Koa, Hapi and Fastify), on top of AWS Lambda, Huawei and many other clouds." - }, - { - "name": "@immobiliarelabs/fastify-metrics", - "url": "https://github.com/immobiliare/fastify-metrics", - "description": "Minimalistic and opinionated plugin that collects usage/process metrics and dispatches to [statsd](https://github.com/statsd/statsd)." - }, - { - "name": "@immobiliarelabs/fastify-sentry", - "url": "https://github.com/immobiliare/fastify-sentry", - "description": "Sentry errors handler that just works! Install, add your DSN and you're good to go!" - }, - { - "name": "@mateonunez/fastify-lyra", - "url": "https://github.com/mateonunez/fastify-lyra", - "description": "A plugin to implement [Lyra](https://github.com/nearform/lyra) search engine on Fastify" - }, - { - "name": "@mgcrea/fastify-graceful-exit", - "url": "https://github.com/mgcrea/fastify-graceful-exit", - "description": "A plugin to close the server gracefully" - }, - { - "name": "@mgcrea/fastify-request-logger", - "url": "https://github.com/mgcrea/fastify-request-logger", - "description": "A plugin to enable compact request logging for Fastify" - }, - { - "name": "@mgcrea/fastify-session", - "url": "https://github.com/mgcrea/fastify-session", - "description": "Session plugin for Fastify that supports both stateless and stateful sessions" - }, - { - "name": "@mgcrea/fastify-session-redis-store", - "url": "https://github.com/mgcrea/fastify-session-redis-store", - "description": "Redis store for @mgcrea/fastify-session using ioredis" - }, - { - "name": "@mgcrea/fastify-session-sodium-crypto", - "url": "https://github.com/mgcrea/fastify-session-sodium-crypto", - "description": "Fast sodium-based crypto for @mgcrea/fastify-session" - }, - { - "name": "@mgcrea/pino-pretty-compact", - "url": "https://github.com/mgcrea/pino-pretty-compact", - "description": "A custom compact pino-base prettifier" - }, - { - "name": "@trubavuong/fastify-seaweedfs", - "url": "https://github.com/trubavuong/fastify-seaweedfs", - "description": "SeaweedFS for Fastify" - }, - { - "name": "apollo-server-fastify", - "url": "https://github.com/apollographql/apollo-server/tree/master/packages/apollo-server-fastify", - "description": "Run an [Apollo Server](https://github.com/apollographql/apollo-server) to serve GraphQL with Fastify." - }, - { - "name": "arecibo", - "url": "https://github.com/nucleode/arecibo", - "description": "Fastify ping responder for Kubernetes Liveness and Readiness Probes." - }, - { - "name": "cls-rtracer", - "url": "https://github.com/puzpuzpuz/cls-rtracer", - "description": "Fastify middleware for CLS-based request ID generation. An out-of-the-box solution for adding request IDs into your logs." - }, - { - "name": "electron-server", - "url": "https://github.com/anonrig/electron-server", - "description": "A plugin for using Fastify without the need of consuming a port on Electron apps." - }, - { - "name": "fast-water", - "url": "https://github.com/tswayne/fast-water", - "description": "A Fastify plugin for waterline. Decorates Fastify with waterline models." - }, - { - "name": "fastify-405", - "url": "https://github.com/Eomm/fastify-405", - "description": "Fastify plugin that adds 405 HTTP status to your routes" - }, - { - "name": "fastify-allow", - "url": "https://github.com/mattbishop/fastify-allow", - "description": "Fastify plugin that automatically adds an Allow header to responses with routes. Also sends 405 responses for routes that have a handler but not for the request's method." - }, - { - "name": "fastify-amqp", - "url": "https://github.com/RafaelGSS/fastify-amqp", - "description": "Fastify AMQP connection plugin, to use with RabbitMQ or another connector. Just a wrapper to [`amqplib`](https://github.com/squaremo/amqp.node)." - }, - { - "name": "fastify-amqp-async", - "url": "https://github.com/kffl/fastify-amqp-async", - "description": "Fastify AMQP plugin with a Promise-based API provided by [`amqplib-as-promised`](https://github.com/twawszczak/amqplib-as-promised)." - }, - { - "name": "fastify-angular-universal", - "url": "https://github.com/exequiel09/fastify-angular-universal", - "description": "Angular server-side rendering support using [`@angular/platform-server`](https://github.com/angular/angular/tree/master/packages/platform-server) for Fastify" - }, - { - "name": "fastify-api-key", - "url": "https://github.com/arkerone/fastify-api-key", - "description": "Fastify plugin to authenticate HTTP requests based on api key and signature" - }, - { - "name": "fastify-appwrite", - "url": "https://github.com/Dev-Manny/fastify-appwrite", - "description": "Fastify Plugin for interacting with Appwrite server." - }, - { - "name": "fastify-at-mysql", - "url": "https://github.com/mateonunez/fastify-at-mysql", - "description": "Fastify MySQL plugin with auto SQL injection attack prevention." - }, - { - "name": "fastify-at-postgres", - "url": "https://github.com/mateonunez/fastify-at-postgres", - "description": "Fastify Postgres plugin with auto SQL injection attack prevention." - }, - { - "name": "fastify-auth0-verify", - "url": "https://github.com/nearform/fastify-auth0-verify", - "description": ": Auth0 verification plugin for Fastify, internally uses [fastify-jwt](https://npm.im/fastify-jwt) and [jsonwebtoken](https://npm.im/jsonwebtoken)." - }, - { - "name": "fastify-autocrud", - "url": "https://github.com/paranoiasystem/fastify-autocrud", - "description": "Plugin to auto-generate CRUD routes as fast as possible." - }, - { - "name": "fastify-autoroutes", - "url": "https://github.com/GiovanniCardamone/fastify-autoroutes", - "description": "Plugin to scan and load routes based on filesystem path from a custom directory." - }, - { - "name": "fastify-aws-sns", - "url": "https://github.com/gzileni/fastify-aws-sns", - "description": "Fastify plugin for AWS Simple Notification Service (AWS SNS) that coordinates and manages the delivery or sending of messages to subscribing endpoints or clients." - }, - { - "name": "fastify-aws-timestream", - "url": "https://github.com/gzileni/fastify-aws-timestream", - "description": "Fastify plugin for managing databases, tables, and querying and creating scheduled queries with AWS Timestream." - }, - { - "name": "fastify-axios", - "url": "https://github.com/davidedantonio/fastify-axios", - "description": "Plugin to send HTTP requests via [axios](https://github.com/axios/axios)." - }, - { - "name": "fastify-babel", - "url": "https://github.com/cfware/fastify-babel", - "description": "Fastify plugin for development servers that require Babel transformations of JavaScript sources." - }, - { - "name": "fastify-bcrypt", - "url": "https://github.com/beliven-it/fastify-bcrypt", - "description": "A Bcrypt hash generator & checker." - }, - { - "name": "fastify-blipp", - "url": "https://github.com/PavelPolyakov/fastify-blipp", - "description": "Prints your routes to the console, so you definitely know which endpoints are available." - }, - { - "name": "fastify-bookshelf", - "url": "https://github.com/butlerx/fastify-bookshelfjs", - "description": "Fastify plugin to add [bookshelf.js](https://bookshelfjs.org/) ORM support." - }, - { - "name": "fastify-boom", - "url": "https://github.com/jeromemacias/fastify-boom", - "description": "Fastify plugin to add [boom](https://github.com/hapijs/boom) support." - }, - { - "name": "fastify-bree", - "url": "https://github.com/climba03003/fastify-bree", - "description": "Fastify plugin to add [bree](https://github.com/breejs/bree) support." - }, - { - "name": "fastify-bugsnag", - "url": "https://github.com/ZigaStrgar/fastify-bugsnag", - "description": "Fastify plugin to add support for [Bugsnag](https://www.bugsnag.com/) error reporting." - }, - { - "name": "fastify-casbin", - "url": "https://github.com/nearform/fastify-casbin", - "description": "Casbin support for Fastify." - }, - { - "name": "fastify-casbin-rest", - "url": "https://github.com/nearform/fastify-casbin-rest", - "description": "Casbin support for Fastify based on a RESTful model." - }, - { - "name": "fastify-casl", - "url": "https://github.com/Inlecom/fastify-casl", - "description": "Fastify [CASL](https://github.com/stalniy/casl) plugin that supports ACL-like protection of endpoints via either a preSerialization & preHandler hook, sanitizing the inputs and outputs of your application based on user rights." - }, - { - "name": "fastify-cloudevents", - "url": "https://github.com/smartiniOnGitHub/fastify-cloudevents", - "description": "Fastify plugin to generate and forward Fastify events in the Cloudevents format." - }, - { - "name": "fastify-cockroachdb", - "url": "https://github.com/alex-ppg/fastify-cockroachdb", - "description": "Fastify plugin to connect to a CockroachDB PostgreSQL instance via the Sequelize ORM." - }, - { - "name": "fastify-constraints", - "url": "https://github.com/nearform/fastify-constraints", - "description": "Fastify plugin to add constraints to multiple routes" - }, - { - "name": "fastify-couchdb", - "url": "https://github.com/nigelhanlon/fastify-couchdb", - "description": "Fastify plugin to add CouchDB support via [nano](https://github.com/apache/nano)." - }, - { - "name": "fastify-crud-generator", - "url": "https://github.com/beliven-it/fastify-crud-generator", - "description": "A plugin to rapidly generate CRUD routes for any entity." - }, - { - "name": "fastify-custom-healthcheck", - "url": "https://github.com/gkampitakis/fastify-custom-healthcheck", - "description": "Fastify plugin to add health route in your server that asserts custom functions." - }, - { - "name": "fastify-decorators", - "url": "https://github.com/L2jLiga/fastify-decorators", - "description": "Fastify plugin that provides the set of TypeScript decorators." - }, - { - "name": "fastify-disablecache", - "url": "https://github.com/Fdawgs/fastify-disablecache", - "description": "Fastify plugin to disable client-side caching, inspired by [nocache](https://github.com/helmetjs/nocache)." - }, - { - "name": "fastify-dynamodb", - "url": "https://github.com/matrus2/fastify-dynamodb", - "description": "AWS DynamoDB plugin for Fastify. It exposes [AWS.DynamoDB.DocumentClient()](https://docs.aws.amazon.com/AWSJavaScriptSDK/latest/AWS/DynamoDB/DocumentClient.html) object." - }, - { - "name": "fastify-dynareg", - "url": "https://github.com/greguz/fastify-dynareg", - "description": "Dynamic plugin register for Fastify." - }, - { - "name": "fastify-early-hints", - "url": "https://github.com/zekth/fastify-early-hints", - "description": "Plugin to add HTTP 103 feature based on [RFC 8297](https://httpwg.org/specs/rfc8297.html)" - }, - { - "name": "fastify-envalid", - "url": "https://github.com/alemagio/fastify-envalid", - "description": "Fastify plugin to integrate [envalid](https://github.com/af/envalid) in your Fastify project." - }, - { - "name": "fastify-error-page", - "url": "https://github.com/hemerajs/fastify-error-page", - "description": "Fastify plugin to print errors in structured HTML to the browser." - }, - { - "name": "fastify-esso", - "url": "https://github.com/patrickpissurno/fastify-esso", - "description": "The easiest authentication plugin for Fastify, with built-in support for Single sign-on (and great documentation)." - }, - { - "name": "fastify-explorer", - "url": "https://github.com/Eomm/fastify-explorer", - "description": "Get control of your decorators across all the encapsulated contexts." - }, - { - "name": "fastify-favicon", - "url": "https://github.com/smartiniOnGitHub/fastify-favicon", - "description": "Fastify plugin to serve default favicon." - }, - { - "name": "fastify-feature-flags", - "url": "https://gitlab.com/m03geek/fastify-feature-flags", - "description": "Fastify feature flags plugin with multiple providers support (e.g. env, [config](https://lorenwest.github.io/node-config/), [unleash](https://unleash.github.io/))." - }, - { - "name": "fastify-file-routes", - "url": "https://github.com/spa5k/fastify-file-routes", - "description": "Get Next.js based file system routing into fastify." - }, - { - "name": "fastify-file-upload", - "url": "https://github.com/huangang/fastify-file-upload", - "description": "Fastify plugin for uploading files." - }, - { - "name": "fastify-firebase", - "url": "https://github.com/now-ims/fastify-firebase", - "description": "Fastify plugin for [Firebase Admin SDK](https://firebase.google.com/docs/admin/setup) to Fastify so you can easily use Firebase Auth, Firestore, Cloud Storage, Cloud Messaging, and more." - }, - { - "name": "fastify-firebase-auth", - "url": "https://github.com/oxsav/fastify-firebase-auth", - "description": "Firebase Authentication for Fastify supporting all of the methods relating to the authentication API." - }, - { - "name": "fastify-formidable", - "url": "https://github.com/climba03003/fastify-formidable", - "description": "Handy plugin to provide multipart support and fastify-swagger integration." - }, - { - "name": "fastify-gcloud-trace", - "url": "https://github.com/mkinoshi/fastify-gcloud-trace", - "description": "[Google Cloud Trace API](https://cloud.google.com/trace/docs/reference) Connector for Fastify." - }, - { - "name": "fastify-get-head", - "url": "https://github.com/MetCoder95/fastify-get-head", - "description": "Small plugin to set a new HEAD route handler for each GET route previously registered in Fastify." - }, - { - "name": "fastify-get-only", - "url": "https://github.com/DanieleFedeli/fastify-get-only", - "description": "Small plugin used to make fastify accept only GET requests" - }, - { - "name": "fastify-good-sessions", - "url": "https://github.com/Phara0h/fastify-good-sessions", - "description": "A good Fastify sessions plugin focused on speed." - }, - { - "name": "fastify-google-cloud-storage", - "url": "https://github.com/carlozamagni/fastify-google-cloud-storage", - "description": "Fastify plugin that exposes a GCP Cloud Storage client instance." - }, - { - "name": "fastify-graceful-shutdown", - "url": "https://github.com/hemerajs/fastify-graceful-shutdown", - "description": "Shutdown Fastify gracefully and asynchronously." - }, - { - "name": "fastify-grant", - "url": "https://github.com/simov/fastify-grant", - "description": "Authentication/Authorization plugin for Fastify that supports 200+ OAuth Providers." - }, - { - "name": "fastify-guard", - "url": "https://github.com/hsynlms/fastify-guard", - "description": "A Fastify plugin that protects endpoints by checking authenticated user roles and/or scopes." - }, - { - "name": "fastify-hasura", - "url": "https://github.com/ManUtopiK/fastify-hasura", - "description": "A Fastify plugin to have fun with [Hasura](https://github.com/hasura/graphql-engine)." - }, - { - "name": "fastify-healthcheck", - "url": "https://github.com/smartiniOnGitHub/fastify-healthcheck", - "description": "Fastify plugin to serve a health check route and a probe script." - }, - { - "name": "fastify-hemera", - "url": "https://github.com/hemerajs/fastify-hemera", - "description": "Fastify Hemera plugin, for writing reliable & fault-tolerant microservices with [nats.io](https://nats.io/)." - }, - { - "name": "fastify-http-client", - "url": "https://github.com/kenuyx/fastify-http-client", - "description": "Plugin to send HTTP(s) requests. Built upon [urllib](https://github.com/node-modules/urllib)." - }, - { - "name": "fastify-http-context", - "url": "https://github.com/thorough-developer/fastify-http-context", - "description": "Fastify plugin for \"simulating\" a thread of execution to allow for true HTTP context to take place per API call within the Fastify lifecycle of calls." - }, - { - "name": "fastify-http-errors-enhanced", - "url": "https://github.com/ShogunPanda/fastify-http-errors-enhanced", - "description": "An error handling plugin for Fastify that uses enhanced HTTP errors." - }, - { - "name": "fastify-http2https", - "url": "https://github.com/lolo32/fastify-http2https", - "description": "Redirect HTTP requests to HTTPS, both using the same port number, or different response on HTTP and HTTPS." - }, - { - "name": "fastify-https-always", - "url": "https://github.com/mattbishop/fastify-https-always", - "description": "Lightweight, proxy-aware redirect plugin from HTTP to HTTPS." - }, - { - "name": "fastify-https-redirect", - "url": "https://github.com/tomsvogel/fastify-https-redirect", - "description": "Fastify plugin for auto-redirect from HTTP to HTTPS." - }, - { - "name": "fastify-impressions", - "url": "https://github.com/manju4ever/fastify-impressions", - "description": "Fastify plugin to track impressions of all the routes." - }, - { - "name": "fastify-influxdb", - "url": "https://github.com/alex-ppg/fastify-influxdb", - "description": "Fastify InfluxDB plugin connecting to an InfluxDB instance via the Influx default package." - }, - { - "name": "fastify-jwt-authz", - "url": "https://github.com/Ethan-Arrowood/fastify-jwt-authz", - "description": "JWT user scope verifier." - }, - { - "name": "fastify-jwt-webapp", - "url": "https://github.com/charlesread/fastify-jwt-webapp", - "description": "JWT authentication for Fastify-based web apps." - }, - { - "name": "fastify-kafkajs", - "url": "https://github.com/kffl/fastify-kafkajs", - "description": "Fastify plugin that adds support for KafkaJS - a modern Apache Kafka client library." - }, - { - "name": "fastify-keycloak-adapter", - "url": "https://github.com/yubinTW/fastify-keycloak-adapter", - "description": "A keycloak adapter for a Fastify app." - }, - { - "name": "fastify-knexjs", - "url": "https://github.com/chapuletta/fastify-knexjs", - "description": "Fastify plugin for support KnexJS Query Builder." - }, - { - "name": "fastify-knexjs-mock", - "url": "https://github.com/chapuletta/fastify-knexjs-mock", - "description": "Fastify Mock KnexJS for testing support." - }, - { - "name": "fastify-kubernetes", - "url": "https://github.com/greguz/fastify-kubernetes", - "description": "Fastify Kubernetes client plugin." - }, - { - "name": "fastify-language-parser", - "url": "https://github.com/lependu/fastify-language-parser", - "description": "Fastify plugin to parse request language." - }, - { - "name": "fastify-lcache", - "url": "https://github.com/denbon05/fastify-lcache", - "description": "Lightweight cache plugin" - }, - { - "name": "fastify-list-routes", - "url": "https://github.com/chuongtrh/fastify-list-routes", - "description": "A simple plugin for Fastify list all available routes." - }, - { - "name": "fastify-loader", - "url": "https://github.com/TheNoim/fastify-loader", - "description": "Load routes from a directory and inject the Fastify instance in each file." - }, - { - "name": "fastify-lured", - "url": "https://github.com/lependu/fastify-lured", - "description": "Plugin to load lua scripts with [fastify-redis](https://github.com/fastify/fastify-redis) and [lured](https://github.com/enobufs/lured)." - }, - { - "name": "fastify-lyra", - "url": "https://github.com/mateonunez/fastify-lyra", - "description": "A plugin to implement [Lyra](https://github.com/LyraSearch/lyra) search engine on Fastify." - }, - { - "name": "fastify-mailer", - "url": "https://github.com/coopflow/fastify-mailer", - "description": "Plugin to initialize and encapsulate [Nodemailer](https://nodemailer.com)'s transporters instances in Fastify." - }, - { - "name": "fastify-markdown", - "url": "https://github.com/freezestudio/fastify-markdown", - "description": "Plugin to markdown support." - }, - { - "name": "fastify-method-override", - "url": "https://github.com/corsicanec82/fastify-method-override", - "description": "Plugin for Fastify, which allows the use of HTTP verbs, such as DELETE, PATCH, HEAD, PUT, OPTIONS in case the client doesn't support them." - }, - { - "name": "fastify-metrics", - "url": "https://gitlab.com/m03geek/fastify-metrics", - "description": "Plugin for exporting [Prometheus](https://prometheus.io) metrics." - }, - { - "name": "fastify-minify", - "url": "https://github.com/Jelenkee/fastify-minify", - "description": "Plugin for minification and transformation of responses." - }, - { - "name": "fastify-mongo-memory", - "url": "https://github.com/chapuletta/fastify-mongo-memory", - "description": "Fastify MongoDB in Memory Plugin for testing support." - }, - { - "name": "fastify-mongodb-sanitizer", - "url": "https://github.com/KlemenKozelj/fastify-mongodb-sanitizer", - "description": "Fastify plugin that sanitizes client input to prevent potential MongoDB query injection attacks." - }, - { - "name": "fastify-mongoose-api", - "url": "https://github.com/jeka-kiselyov/fastify-mongoose-api", - "description": "Fastify plugin to create REST API methods based on Mongoose MongoDB models." - }, - { - "name": "fastify-mongoose-driver", - "url": "https://github.com/alex-ppg/fastify-mongoose", - "description": "Fastify Mongoose plugin that connects to a MongoDB via the Mongoose plugin with support for Models." - }, - { - "name": "fastify-mqtt", - "url": "https://github.com/love-lena/fastify-mqtt", - "description": "Plugin to share [mqtt](https://www.npmjs.com/package/mqtt) client across Fastify." - }, - { - "name": "fastify-msgpack", - "url": "https://github.com/kenriortega/fastify-msgpack", - "description": "Fastify and MessagePack, together at last. Uses @msgpack/msgpack by default." - }, - { - "name": "fastify-multer", - "url": "https://github.com/fox1t/fastify-multer", - "description": "Multer is a plugin for handling multipart/form-data, which is primarily used for uploading files." - }, - { - "name": "fastify-nats", - "url": "https://github.com/mahmed8003/fastify-nats", - "description": "Plugin to share [NATS](https://nats.io) client across Fastify." - }, - { - "name": "fastify-next-auth", - "url": "https://github.com/wobsoriano/fastify-next-auth", - "description": "NextAuth.js plugin for Fastify." - }, - { - "name": "fastify-no-additional-properties", - "url": "https://github.com/greguz/fastify-no-additional-properties", - "description": "Add `additionalProperties: false` by default to your JSON Schemas." - }, - { - "name": "fastify-no-icon", - "url": "https://github.com/jsumners/fastify-no-icon", - "description": "Plugin to eliminate thrown errors for `/favicon.ico` requests." - }, - { - "name": "fastify-nodemailer", - "url": "https://github.com/lependu/fastify-nodemailer", - "description": "Plugin to share [nodemailer](https://nodemailer.com) transporter across Fastify." - }, - { - "name": "fastify-normalize-request-reply", - "url": "https://github.com/ericrglass/fastify-normalize-request-reply", - "description": "Plugin to normalize the request and reply to the Express version 4.x request and response, which allows use of middleware, like swagger-stats, that was originally written for Express." - }, - { - "name": "fastify-now", - "url": "https://github.com/yonathan06/fastify-now", - "description": "Structure your endpoints in a folder and load them dynamically with Fastify." - }, - { - "name": "fastify-nuxtjs", - "url": "https://github.com/gomah/fastify-nuxtjs", - "description": "Vue server-side rendering support for Fastify with Nuxt.js Framework." - }, - { - "name": "fastify-oas", - "url": "https://gitlab.com/m03geek/fastify-oas", - "description": "Generates OpenAPI 3.0+ documentation from routes schemas for Fastify." - }, - { - "name": "fastify-objectionjs", - "url": "https://github.com/jarcodallo/fastify-objectionjs", - "description": "Plugin for the Fastify framework that provides integration with objectionjs ORM." - }, - { - "name": "fastify-objectionjs-classes", - "url": "https://github.com/kamikazechaser/fastify-objectionjs-classes", - "description": "Plugin to cherry-pick classes from objectionjs ORM." - }, - { - "name": "fastify-openapi-docs", - "url": "https://github.com/ShogunPanda/fastify-openapi-docs", - "description": "A Fastify plugin that generates OpenAPI spec automatically." - }, - { - "name": "fastify-openapi-glue", - "url": "https://github.com/seriousme/fastify-openapi-glue", - "description": "Glue for OpenAPI specifications in Fastify, autogenerates routes based on an OpenAPI Specification." - }, - { - "name": "fastify-opentelemetry", - "url": "https://github.com/autotelic/fastify-opentelemetry", - "description": "A Fastify plugin that uses the [OpenTelemetry API](https://github.com/open-telemetry/opentelemetry-js-api) to provide request tracing." - }, - { - "name": "fastify-oracle", - "url": "https://github.com/cemremengu/fastify-oracle", - "description": "Attaches an [`oracledb`](https://github.com/oracle/node-oracledb) connection pool to a Fastify server instance." - }, - { - "name": "fastify-orientdb", - "url": "https://github.com/mahmed8003/fastify-orientdb", - "description": "Fastify OrientDB connection plugin, with which you can share the OrientDB connection across every part of your server." - }, - { - "name": "fastify-osm", - "url": "https://github.com/gzileni/fastify-osm", - "description": "Fastify OSM plugin to run overpass queries by OpenStreetMap." - }, - { - "name": "fastify-peekaboo", - "url": "https://github.com/simone-sanfratello/fastify-peekaboo", - "description": "Fastify plugin for memoize responses by expressive settings." - }, - { - "name": "fastify-piscina", - "url": "https://github.com/piscinajs/fastify-piscina", - "description": "A worker thread pool plugin using [Piscina](https://github.com/piscinajs/piscina)." - }, - { - "name": "fastify-polyglot", - "url": "https://github.com/beliven-it/fastify-polyglot", - "description": "A plugin to handle i18n using [node-polyglot](https://www.npmjs.com/package/node-polyglot)." - }, - { - "name": "fastify-postgraphile", - "url": "https://github.com/alemagio/fastify-postgraphile", - "description": "Plugin to integrate [PostGraphile](https://www.graphile.org/postgraphile/) in a Fastify project." - }, - { - "name": "fastify-prettier", - "url": "https://github.com/hsynlms/fastify-prettier", - "description": "A Fastify plugin that uses [prettier](https://github.com/prettier/prettier) under the hood to beautify outgoing responses and/or other things in the Fastify server." - }, - { - "name": "fastify-print-routes", - "url": "https://github.com/ShogunPanda/fastify-print-routes", - "description": "A Fastify plugin that prints all available routes." - }, - { - "name": "fastify-protobufjs", - "url": "https://github.com/kenriortega/fastify-protobufjs", - "description": "Fastify and protobufjs, together at last. Uses protobufjs by default." - }, - { - "name": "fastify-qrcode", - "url": "https://github.com/chonla/fastify-qrcode", - "description": "This plugin utilizes [qrcode](https://github.com/soldair/node-qrcode) to generate QR Code." - }, - { - "name": "fastify-qs", - "url": "https://github.com/vanodevium/fastify-qs", - "description": "A plugin for Fastify that adds support for parsing URL query parameters with [qs](https://github.com/ljharb/qs)." - }, - { - "name": "fastify-racing", - "url": "https://github.com/metcoder95/fastify-racing", - "description": "Fastify's plugin that adds support to handle an aborted request asynchronous." - }, - { - "name": "fastify-ravendb", - "url": "https://github.com/nearform/fastify-ravendb", - "description": "RavenDB connection plugin. It exposes the same `DocumentStore` (or multiple ones) across the whole Fastify application." - }, - { - "name": "fastify-raw-body", - "url": "https://github.com/Eomm/fastify-raw-body", - "description": "Add the `request.rawBody` field." - }, - { - "name": "fastify-rbac", - "url": "https://gitlab.com/m03geek/fastify-rbac", - "description": "Fastify role-based access control plugin." - }, - { - "name": "fastify-recaptcha", - "url": "https://github.com/qwertyforce/fastify-recaptcha", - "description": "Fastify plugin for recaptcha verification." - }, - { - "name": "fastify-redis-channels", - "url": "https://github.com/hearit-io/fastify-redis-channels", - "description": "A plugin for fast, reliable, and scalable channels implementation based on Redis streams." - }, - { - "name": "fastify-register-routes", - "url": "https://github.com/israeleriston/fastify-register-routes", - "description": "Plugin to automatically load routes from a specified path and optionally limit loaded file names by a regular expression." - }, - { - "name": "fastify-response-caching", - "url": "https://github.com/codeaholicguy/fastify-response-caching", - "description": "A Fastify plugin for caching the response." - }, - { - "name": "fastify-response-time", - "url": "https://github.com/lolo32/fastify-response-time", - "description": "Add `X-Response-Time` header at each request for Fastify, in milliseconds." - }, - { - "name": "fastify-resty", - "url": "https://github.com/FastifyResty/fastify-resty", - "description": "Fastify-based web framework with REST API routes auto-generation for TypeORM entities using DI and decorators." - }, - { - "name": "fastify-reverse-routes", - "url": "https://github.com/dimonnwc3/fastify-reverse-routes", - "description": "Fastify reverse routes plugin, allows to defined named routes and build path using name and parameters." - }, - { - "name": "fastify-rob-config", - "url": "https://github.com/jeromemacias/fastify-rob-config", - "description": "Fastify Rob-Config integration." - }, - { - "name": "fastify-route-group", - "url": "https://github.com/TakNePoidet/fastify-route-group", - "description": "Convenient grouping and inheritance of routes." - }, - { - "name": "fastify-s3-buckets", - "url": "https://github.com/kibertoad/fastify-s3-buckets", - "description": "Ensure the existence of defined S3 buckets on the application startup." - }, - { - "name": "fastify-schema-constraint", - "url": "https://github.com/Eomm/fastify-schema-constraint", - "description": "Choose the JSON schema to use based on request parameters." - }, - { - "name": "fastify-schema-to-typescript", - "url": "https://github.com/thomasthiebaud/fastify-schema-to-typescript", - "description": "Generate typescript types based on your JSON/YAML validation schemas so they are always in sync." - }, - { - "name": "fastify-sentry", - "url": "https://github.com/alex-ppg/fastify-sentry", - "description": "Fastify plugin to add the Sentry SDK error handler to requests." - }, - { - "name": "fastify-sequelize", - "url": "https://github.com/lyquocnam/fastify-sequelize", - "description": "Fastify plugin work with Sequelize (adapter for NodeJS -> Sqlite, Mysql, Mssql, Postgres)." - }, - { - "name": "fastify-server-session", - "url": "https://github.com/jsumners/fastify-server-session", - "description": "A session plugin with support for arbitrary backing caches via `fastify-caching`." - }, - { - "name": "fastify-slonik", - "url": "https://github.com/Unbuttun/fastify-slonik", - "description": "Fastify Slonik plugin, with this you can use slonik in every part of your server." - }, - { - "name": "fastify-slow-down", - "url": "https://github.com/nearform/fastify-slow-down", - "description": "A plugin to delay the response from the server." - }, - { - "name": "fastify-socket.io", - "url": "https://github.com/alemagio/fastify-socket.io", - "description": "a Socket.io plugin for Fastify." - }, - { - "name": "fastify-split-validator", - "url": "https://github.com/MetCoder95/fastify-split-validator", - "description": "Small plugin to allow you use multiple validators in one route based on each HTTP part of the request." - }, - { - "name": "fastify-sqlite", - "url": "https://github.com/Eomm/fastify-sqlite", - "description": "connects your application to a sqlite3 database." - }, - { - "name": "fastify-sse", - "url": "https://github.com/lolo32/fastify-sse", - "description": "to provide Server-Sent Events with `reply.sse( … )` to Fastify." - }, - { - "name": "fastify-sse-v2", - "url": "https://github.com/nodefactoryio/fastify-sse-v2", - "description": "to provide Server-Sent Events using Async Iterators (supports newer versions of Fastify)." - }, - { - "name": "fastify-ssr-vite", - "url": "https://github.com/nineohnine/fastify-ssr-vite", - "description": "A simple plugin for setting up server side rendering with vite." - }, - { - "name": "fastify-stripe", - "url": "https://github.com/coopflow/fastify-stripe", - "description": "Plugin to initialize and encapsulate [Stripe Node.js](https://github.com/stripe/stripe-node) instances in Fastify." - }, - { - "name": "fastify-supabase", - "url": "https://github.com/coopflow/fastify-supabase", - "description": "Plugin to initialize and encapsulate [Supabase](https://github.com/supabase/supabase-js) instances in Fastify." - }, - { - "name": "fastify-tls-keygen", - "url": "https://gitlab.com/sebdeckers/fastify-tls-keygen", - "description": "Automatically generate a browser-compatible, trusted, self-signed, localhost-only, TLS certificate." - }, - { - "name": "fastify-tokenize", - "url": "https://github.com/Bowser65/fastify-tokenize", - "description": "[Tokenize](https://github.com/Bowser65/Tokenize) plugin for Fastify that removes the pain of managing authentication tokens, with built-in integration for `fastify-auth`." - }, - { - "name": "fastify-totp", - "url": "https://github.com/beliven-it/fastify-totp", - "description": "A plugin to handle TOTP (e.g. for 2FA)." - }, - { - "name": "fastify-twitch-ebs-tools", - "url": "https://github.com/lukemnet/fastify-twitch-ebs-tools", - "description": "Useful functions for Twitch Extension Backend Services (EBS)." - }, - { - "name": "fastify-type-provider-zod", - "url": "https://github.com/turkerdev/fastify-type-provider-zod", - "description": "Fastify [type provider](https://www.fastify.io/docs/latest/Reference/Type-Providers/) for [zod](https://github.com/colinhacks/zod)." - }, - { - "name": "fastify-typeorm-plugin", - "url": "https://github.com/inthepocket/fastify-typeorm-plugin", - "description": "Fastify plugin to work with TypeORM." - }, - { - "name": "fastify-user-agent", - "url": "https://github.com/Eomm/fastify-user-agent", - "description": "parses your request's `user-agent` header." - }, - { - "name": "fastify-vhost", - "url": "https://github.com/patrickpissurno/fastify-vhost", - "description": "Proxy subdomain HTTP requests to another server (useful if you want to point multiple subdomains to the same IP address, while running different servers on the same machine)." - }, - { - "name": "fastify-vite", - "url": "https://github.com/galvez/fastify-vite", - "description": "[Vite](https://vitejs.dev/) plugin for Fastify with SSR data support." - }, - { - "name": "fastify-vue-plugin", - "url": "https://github.com/TheNoim/fastify-vue", - "description": "[Nuxt.js](https://nuxtjs.org) plugin for Fastify. Control the routes nuxt should use." - }, - { - "name": "fastify-wamp-router", - "url": "https://github.com/lependu/fastify-wamp-router", - "description": "Web Application Messaging Protocol router for Fastify." - }, - { - "name": "fastify-webpack-hmr", - "url": "https://github.com/lependu/fastify-webpack-hmr", - "description": "Webpack hot module reloading plugin for Fastify." - }, - { - "name": "fastify-webpack-hot", - "url": "https://github.com/gajus/fastify-webpack-hot", - "description": "Webpack Hot Module Replacement for Fastify." - }, - { - "name": "fastify-ws", - "url": "https://github.com/gj/fastify-ws", - "description": "WebSocket integration for Fastify — with support for WebSocket lifecycle hooks instead of a single handler function. Built upon [ws](https://github.com/websockets/ws) and [uws](https://github.com/uNetworking/uWebSockets)." - }, - { - "name": "fastify-xml-body-parser", - "url": "https://github.com/NaturalIntelligence/fastify-xml-body-parser", - "description": "Parse XML payload / request body into JS / JSON object." - }, - { - "name": "fastify-xray", - "url": "https://github.com/jeromemacias/fastify-xray", - "description": "Fastify plugin for AWS XRay recording." - }, - { - "name": "i18next-http-middleware", - "url": "https://github.com/i18next/i18next-http-middleware#fastify-usage", - "description": "An [i18next](https://www.i18next.com) based i18n (internationalization) middleware to be used with Node.js web frameworks like Express or Fastify and also for Deno." - }, - { - "name": "k-fastify-gateway", - "url": "https://github.com/jkyberneees/fastify-gateway", - "description": "API Gateway plugin for Fastify, a low footprint implementation that uses the `fastify-reply-from` HTTP proxy library." - }, - { - "name": "mercurius", - "url": "https://mercurius.dev/", - "description": "A fully-featured and performant GraphQL server implementation for Fastify." - }, - { - "name": "nstats", - "url": "https://github.com/Phara0h/nstats", - "description": "A fast and compact way to get all your network and process stats for your node application. Websocket, HTTP/S, and prometheus compatible!" - }, - { - "name": "oas-fastify", - "url": "https://github.com/ahmadnassri/node-oas-fastify", - "description": "OAS 3.x to Fastify routes automation. Automatically generates route handlers with fastify configuration and validation." - }, - { - "name": "openapi-validator-middleware", - "url": "https://github.com/PayU/openapi-validator-middleware#fastify", - "description": "Swagger and OpenAPI 3.0 spec-based request validation middleware that supports Fastify." - }, - { - "name": "pubsub-http-handler", - "url": "https://github.com/cobraz/pubsub-http-handler", - "description": "A Fastify plugin to easily create Google Cloud PubSub endpoints." - }, - { - "name": "sequelize-fastify", - "url": "https://github.com/hsynlms/sequelize-fastify", - "description": "A simple and lightweight Sequelize plugin for Fastify." - }, - { - "name": "typeorm-fastify-plugin", - "url": "https://github.com/jclemens24/fastify-typeorm", - "description": "A simple and updated Typeorm plugin for use with Fastify. #### [Community Tools](#community-tools)" - }, - { - "name": "@fastify-userland/workflows", - "url": "https://github.com/fastify-userland/workflows", - "description": "Reusable workflows for use in the Fastify plugin" - }, - { - "name": "fast-maker", - "url": "https://github.com/imjuni/fast-maker", - "description": "route configuration generator by directory structure." - }, - { - "name": "simple-tjscli", - "url": "https://github.com/imjuni/simple-tjscli", - "description": "CLI tool to generate JSON Schema from TypeScript interfaces." - } - ] -} diff --git a/static/data/acknowledgements.yml b/static/data/acknowledgements.yml new file mode 100644 index 00000000..7bab323a --- /dev/null +++ b/static/data/acknowledgements.yml @@ -0,0 +1,13 @@ +sponsors: + - name: NearForm + url: http://nearform.com + - name: Platformatic + url: http://platformatic.dev +past_sponsors: + - name: LetzDoIt + url: http://www.letzdoitapp.com + - name: Microsoft + url: https://opensource.microsoft.com/ +others: + - name: The amazing Fastify community + url: https://github.com/fastify/fastify/graphs/contributors diff --git a/static/data/organisations.yml b/static/data/organisations.yml new file mode 100644 index 00000000..e72706ff --- /dev/null +++ b/static/data/organisations.yml @@ -0,0 +1,251 @@ +- name: '2hire' + image: '2hire.svg' + link: 'https://2hire.io/' + +- name: 'aasaam' + image: 'aasaam.svg' + link: 'https://aasaam.com/' + +- name: 'AmeriSave Mortgage Corporation' + image: 'amerisave.svg' + link: 'https://www.amerisave.com' + +- name: 'Beliven' + image: 'beliven.svg' + link: 'https://beliven.com/' + +- name: 'bestgameprice.net' + image: 'bestgameprice.svg' + link: 'https://www.bestgameprice.net/' + +- name: 'car2go' + image: 'car2go.svg' + link: 'https://www.car2go.com' + +- name: 'Care.com' + image: 'care.svg' + link: 'https://www.care.com/' + +- name: 'Chatlayer by Sinch' + image: 'chatlayer_by_sinch.svg' + link: 'https://chatlayer.ai' + +- name: 'ClearGlass' + image: 'clearglass.svg' + link: 'https://clearglass.com/' + +- name: 'Codecks' + image: 'codecks.svg' + link: 'https://www.codecks.io/' + +- name: 'Commons Host' + image: 'commonshost.svg' + link: 'https://commons.host' + +- name: 'Compressor' + image: 'compressor.svg' + link: 'https://compressor.io' + +- name: 'CorsairM360' + image: 'corsairm360.svg' + link: 'https://corsairm360.com' + +- name: 'evilfactorylabs' + image: 'evilfactorylabs.svg' + link: 'https://evilfactorylabs.org/' + +- name: 'Elo7' + image: 'elo7.svg' + link: 'https://www.elo7.com.br' + +- name: 'Discord Bots Catalog' + image: 'discordbotscatalog.svg' + link: 'https://top-bots.xyz' + +- name: 'fabfitfun' + image: 'fabfitfun.svg' + link: 'https://fabfitfun.com/' + +- name: 'Find a Discord' + image: 'findadiscord.svg' + link: 'https://findadiscord.com' + +- name: 'Flash Benefícios' + image: 'flashapp.svg' + link: 'https://www.flashapp.com.br' + +- name: 'Flux QR' + image: 'fluxqr.svg' + link: 'https://www.fluxqr.com' + +- name: 'Future Foundry' + image: 'future-foundry.svg' + link: 'https://futurefoundry.co' + +- name: 'Genesys' + image: 'genesys.svg' + link: 'https://www.genesys.com' + +- name: 'GEOLYTIX' + image: 'geolytix.svg' + link: 'https://geolytix.co.uk' + +- name: 'Global CTO Forum' + image: 'global-cto-forum.svg' + link: 'https://www.globalctoforum.org' + +- name: 'Gumlet' + image: 'gumlet.svg' + link: 'https://www.gumlet.com' + +- name: 'HarperDB' + image: 'harperdb.svg' + link: 'https://harperdb.io/' + +- name: 'Habit' + image: 'habit.svg' + link: 'https://habit.global/' + +- name: 'HospitalRun' + image: 'hospitalrun.svg' + link: 'https://hospitalrun.io/' + +- name: 'hotstar' + image: 'hotstar.svg' + link: 'https://tech.hotstar.com/' + +- name: 'ImmobiliareLabs' + image: 'immobiliarelabs.svg' + link: 'https://labs.immobiliare.it' + +- name: 'Jobs in JS' + image: 'jobsinjs.svg' + link: 'https://jobsinjs.com' + +- name: 'Jochen Schweizer' + image: 'jochen-schweizer.svg' + link: 'https://www.jochen-schweizer.de/' + +- name: 'Job Pair' + image: 'jobpair.svg' + link: 'https://job-pair.com' + +- name: 'localistars' + image: 'localistars.svg' + link: 'https://localistars.com' + +- name: 'LogDNA' + image: 'logdna.svg' + link: 'https://logdna.com' + +- name: 'locize' + image: 'locize.svg' + link: 'https://locize.com' + +- name: 'MarsX' + image: 'marsx.svg' + link: 'https://www.marsx.dev' + +- name: 'MIA Platform' + image: 'mia-platform.svg' + link: 'https://www.mia-platform.eu' + +- name: 'Microsoft' + image: 'microsoft.svg' + link: 'https://docs.microsoft.com' + +- name: 'Monitr' + image: 'monitr.svg' + link: 'https://monitr.be' + +- name: 'Mr Porter' + image: 'mrp.svg' + link: 'https://www.mrporter.com' + +- name: 'MV Labs' + image: 'mvlabs.svg' + link: 'https://www.mvlabs.it' + +- name: 'Nearform' + image: 'nearform.svg' + link: 'https://nearform.com' + +- name: 'Net-A-Porter' + image: 'net-a-porter.svg' + link: 'https://net-a-porter.com' + +- name: 'Nucleode' + image: 'nucleode.svg' + link: 'https://www.nucleode.com' + +- name: 'Papion' + image: 'papion.svg' + link: 'https://papion.it' + +- name: 'Platformatic' + image: 'platformatic.svg' + link: 'https://platformatic.dev' + +- name: 'Quero Educação' + image: 'quero-educacao.svg' + link: 'https://sobre.quero.com/' + +- name: 'Radity' + image: 'radity.svg' + link: 'https://www.radity.com' + +- name: 'RemoteScout' + image: 'remotescout.svg' + link: 'https://remotescout.ch' + +- name: 'retraced' + image: 'retraced.svg' + link: 'https://retraced.co' + +- name: 'RuneAudio' + image: 'runeaudio.svg' + link: 'https://www.runeaudio.com' + +- name: 'Satiurn' + image: 'satiurn.svg' + link: 'https://www.satiurn.com/' + +- name: 'Seznam.cz' + image: 'seznam.cz.svg' + link: 'https://www.seznam.cz/' + +- name: 'Skeelo' + image: 'skeelo.svg' + link: 'https://skeelo.app' + +- name: 'Swiss Dev Jobs' + image: 'swissdev-javascript-jobs-200-200.svg' + link: 'https://swissdevjobs.ch/' + +- name: 'The Outnet' + image: 'theoutnet.svg' + link: 'https://theoutnet.com/' + +- name: 'Unhandled' + image: 'unhandled.svg' + link: 'https://unhandled.net' + +- name: 'UNIQ' + image: 'uniq.svg' + link: 'https://www.uniq.id/' + +- name: 'UrbanPiper' + image: 'urbanpiper.svg' + link: 'https://urbanpiper.com' + +- name: 'Webiny' + image: 'webiny.svg' + link: 'https://www.webiny.com' + +- name: 'Vectra' + image: 'vectra.svg' + link: 'https://vectra.ai' + +- name: 'Yeovil District Hospital NHS Foundation Trust' + image: 'ydhnhsft.svg' + link: 'https://yeovilhospital.co.uk' diff --git a/static/data/team.yml b/static/data/team.yml new file mode 100644 index 00000000..edae2a94 --- /dev/null +++ b/static/data/team.yml @@ -0,0 +1,151 @@ +- name: Lead Maintainers + people: + - name: Matteo Collina + sortname: Collina Matteo + picture: 'https://avatars1.githubusercontent.com/u/52195?v=4&s=460' + links: + github: https://github.com/mcollina + npm: https://www.npmjs.com/~matteo.collina + twitter: https://twitter.com/matteocollina + - name: Tomas Della Vedova + sortname: Della Vedova Tomas + picture: 'https://avatars0.githubusercontent.com/u/4865608?v=4&s=460' + links: + github: https://github.com/delvedor + npm: https://www.npmjs.com/~delvedor + twitter: https://twitter.com/delvedor + +- name: Collaborators + people: + - name: David Clements + sortname: Clements David + picture: 'https://avatars1.githubusercontent.com/u/1190716?s=460&v=4' + links: + github: https://github.com/davidmarkclements + npm: https://www.npmjs.com/~davidmarkclements + twitter: https://twitter.com/davidmarkclem + - name: Dustin Deus + sortname: Deus Dustin + picture: 'https://avatars3.githubusercontent.com/u/1764424?v=4&s=460' + links: + github: https://github.com/StarpTech + npm: https://www.npmjs.com/~starptech + twitter: https://twitter.com/dustindeus + - name: Ayoub El Khattabi + sortname: Ayoub El Khattabi + picture: 'https://avatars.githubusercontent.com/u/11050534?s=460&v=4' + links: + github: https://github.com/AyoubElk + npm: https://www.npmjs.com/~ayoubelk + twitter: https://twitter.com/ayoubelkh + - name: Evan Shortiss + sortname: Shortiss Evan + picture: 'https://avatars3.githubusercontent.com/u/1303687?v=4&s=400' + links: + github: https://github.com/evanshortiss + npm: https://www.npmjs.com/~evanshortiss + twitter: https://twitter.com/evanshortiss + - name: James Sumners + sortname: Sumners James + picture: 'https://avatars0.githubusercontent.com/u/321201?v=4&s=460' + links: + github: https://github.com/jsumners + npm: https://www.npmjs.com/~jsumners + twitter: https://twitter.com/jsumners79 + - name: Luciano Mammino + sortname: Mammino Luciano + picture: 'https://avatars3.githubusercontent.com/u/205629?v=4&s=460' + links: + github: https://github.com/lmammino + npm: https://www.npmjs.com/~lmammino + twitter: https://twitter.com/loige + - name: Rafael Gonzaga + sortname: Gonzaga Rafael + picture: 'https://avatars3.githubusercontent.com/u/26234614?v=4&s=400' + links: + github: https://github.com/RafaelGSS + npm: https://www.npmjs.com/~rafaelgss + twitter: https://twitter.com/_rafaelgss + - name: Tommaso Allevi + sortname: Allevi Tommaso + picture: 'https://avatars0.githubusercontent.com/u/1054125?v=4&s=460' + links: + github: https://github.com/allevo + npm: https://www.npmjs.com/~allevo + twitter: https://twitter.com/allevitommaso + - name: Maksim Sinik + sortname: Sinik Maksim + picture: 'https://avatars3.githubusercontent.com/u/1620916?s=460&v=4' + links: + github: https://github.com/fox1t + npm: https://www.npmjs.com/~fox1t + twitter: https://twitter.com/maksimsinik + - name: Frazer Smith + sortname: Smith Frazer + picture: 'https://avatars3.githubusercontent.com/u/43814140?s=460&v=4' + links: + github: https://github.com/Fdawgs + npm: https://www.npmjs.com/~fdawgs + - name: Manuel Spigolon + sortname: Spigolon Manuel + picture: 'https://avatars3.githubusercontent.com/u/11404065?s=460&v=4' + links: + github: https://github.com/eomm + npm: https://www.npmjs.com/~eomm + twitter: https://twitter.com/manueomm + - name: Igor Savin + sortname: Savin Igor + picture: 'https://avatars3.githubusercontent.com/u/1847934?s=460&v=4' + links: + github: https://github.com/kibertoad + npm: https://www.npmjs.com/~kibertoad + twitter: https://twitter.com/kibertoad + - name: Vincent Le Goff + sortname: Le Goff Vincent + picture: 'https://avatars1.githubusercontent.com/u/6959636?s=460&v=4' + links: + github: https://github.com/zekth + - name: Salman Mitha + sortname: Mitha Salman + picture: 'https://avatars0.githubusercontent.com/u/2510597?s=460&v=4' + links: + github: https://github.com/salmanm + npm: https://www.npmjs.com/~salmanm + +- name: Past Collaborators + people: + - name: Ethan Arrowood + sortname: Arrowood Ethan + picture: 'https://avatars3.githubusercontent.com/u/16144158?s=460&v=4' + links: + github: https://github.com/Ethan-Arrowood + npm: https://www.npmjs.com/~ethan_arrowood + twitter: https://twitter.com/arrowoodtech + - name: Çağatay Çalı + sortname: Çalı Çağatay + picture: 'https://avatars1.githubusercontent.com/u/9213230?v=4&s=460' + links: + github: https://github.com/cagataycali + npm: https://www.npmjs.com/~cagataycali + twitter: https://twitter.com/cagataycali + - name: Cemre Mengu + sortname: Cemre Mengu + picture: 'https://avatars3.githubusercontent.com/u/1297759?v=4&s=460' + links: + github: https://github.com/cemremengu + npm: https://www.npmjs.com/~cemremengu + twitter: https://twitter.com/cemremengu + - name: Nathan Woltman + sortname: Woltman Nathan + picture: 'https://avatars0.githubusercontent.com/u/5128013?v=4&s=460' + links: + github: https://github.com/nwoltman + npm: https://www.npmjs.com/~nwoltman + twitter: https://twitter.com/NathanWoltman + - name: Trivikram Kamat + sortname: Trivikram Kamat + picture: 'https://avatars1.githubusercontent.com/u/16024985?s=400&v=4' + links: + github: https://github.com/trivikr + npm: https://www.npmjs.com/~trivikr + twitter: https://twitter.com/trivikram diff --git a/static/generated/.keep b/static/generated/.keep new file mode 100644 index 00000000..e69de29b