From 30b656a829708090e84ce98a73499e538017faf5 Mon Sep 17 00:00:00 2001 From: Ashis Kumar Singh <49238464+ashiscs@users.noreply.github.com> Date: Tue, 17 Mar 2020 23:01:44 +0530 Subject: [PATCH 01/50] Minor fix to update the link of babel (#22331) Previously it was pointing to = https://github.com/babel/babel/ Now, it's updated to = https://github.com/babel/babel/tree/master/packages --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6e42cfc74fcd8..d4616579bbc58 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,5 +12,5 @@ For example, the package `gatsby` has a CHANGELOG.md in [`packages/gatsby/CHANGE [monorepo]: https://en.wikipedia.org/wiki/Monorepo [lerna]: https://github.com/lerna/lerna -[babel]: https://github.com/babel/babel/ +[babel]: https://github.com/babel/babel/tree/master/packages [react]: https://github.com/facebook/react/tree/master/packages From f8b7317c435fa9573c1265ba7911f9a785615553 Mon Sep 17 00:00:00 2001 From: Jeremy Albright <1935258+Js-Brecht@users.noreply.github.com> Date: Tue, 17 Mar 2020 07:33:21 -1000 Subject: [PATCH 02/50] fix(gatsby-plugin-offline): Run app-shell.js from user cache directory for pnp compatibility (#22351) * use user cache dir for app-shell.js * use fs.copyFileSync --- packages/gatsby-plugin-offline/src/gatsby-node.js | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/gatsby-plugin-offline/src/gatsby-node.js b/packages/gatsby-plugin-offline/src/gatsby-node.js index daf8559768ffe..1f5aa3981d620 100644 --- a/packages/gatsby-plugin-offline/src/gatsby-node.js +++ b/packages/gatsby-plugin-offline/src/gatsby-node.js @@ -8,12 +8,19 @@ const _ = require(`lodash`) let getResourcesFromHTML = require(`./get-resources-from-html`) -exports.createPages = ({ actions }) => { +exports.onPreBootstrap = ({ cache }) => { + const appShellSourcePath = path.join(__dirname, `app-shell.js`) + const appShellTargetPath = path.join(cache.directory, `app-shell.js`) + fs.copyFileSync(appShellSourcePath, appShellTargetPath) +} + +exports.createPages = ({ actions, cache }) => { + const appShellPath = path.join(cache.directory, `app-shell.js`) if (process.env.NODE_ENV === `production`) { const { createPage } = actions createPage({ path: `/offline-plugin-app-shell-fallback/`, - component: slash(path.resolve(`${__dirname}/app-shell.js`)), + component: slash(appShellPath), }) } } From c3eccce997585d6136bdd0289472c602631681cf Mon Sep 17 00:00:00 2001 From: ryo Date: Wed, 18 Mar 2020 06:28:30 +0900 Subject: [PATCH 03/50] chore(gatsby): Convert utils/tracer/index to typescript (#22296) * chore(gatsby): Convert utils/tracer/index to typescript * Fix to individual import. --- packages/gatsby/src/commands/build.js | 2 +- .../src/utils/tracer/{index.js => index.ts} | 21 +++++++------------ 2 files changed, 9 insertions(+), 14 deletions(-) rename packages/gatsby/src/utils/tracer/{index.js => index.ts} (64%) diff --git a/packages/gatsby/src/commands/build.js b/packages/gatsby/src/commands/build.js index 0739ad7fd995f..2cd19207a2ae6 100644 --- a/packages/gatsby/src/commands/build.js +++ b/packages/gatsby/src/commands/build.js @@ -8,7 +8,7 @@ import { buildProductionBundle } from "./build-javascript" const bootstrap = require(`../bootstrap`) const apiRunnerNode = require(`../utils/api-runner-node`) const { copyStaticDirs } = require(`../utils/get-static-dir`) -const { initTracer, stopTracer } = require(`../utils/tracer`) +import { initTracer, stopTracer } from "../utils/tracer" const db = require(`../db`) const signalExit = require(`signal-exit`) const telemetry = require(`gatsby-telemetry`) diff --git a/packages/gatsby/src/utils/tracer/index.js b/packages/gatsby/src/utils/tracer/index.ts similarity index 64% rename from packages/gatsby/src/utils/tracer/index.js rename to packages/gatsby/src/utils/tracer/index.ts index b469d2a191e59..4ba5528dd96f2 100644 --- a/packages/gatsby/src/utils/tracer/index.js +++ b/packages/gatsby/src/utils/tracer/index.ts @@ -1,6 +1,6 @@ -const { slash } = require(`gatsby-core-utils`) -const path = require(`path`) -const opentracing = require(`opentracing`) +import { slash } from "gatsby-core-utils" +import path from "path" +import { Tracer, initGlobalTracer } from "opentracing" let tracerProvider @@ -13,28 +13,23 @@ let tracerProvider * `stop` - Run any tracer cleanup required before the node.js process * exits */ -function initTracer(tracerFile) { - let tracer +export const initTracer = (tracerFile: string): Tracer => { + let tracer: Tracer if (tracerFile) { const resolvedPath = slash(path.resolve(tracerFile)) tracerProvider = require(resolvedPath) tracer = tracerProvider.create() } else { - tracer = new opentracing.Tracer() // Noop + tracer = new Tracer() // Noop } - opentracing.initGlobalTracer(tracer) + initGlobalTracer(tracer) return tracer } -async function stopTracer() { +export const stopTracer = async (): Promise => { if (tracerProvider && tracerProvider.stop) { await tracerProvider.stop() } } - -module.exports = { - initTracer, - stopTracer, -} From 900adca59de2e1f227392163b693c5eb21a3cc44 Mon Sep 17 00:00:00 2001 From: Michael <184316+muescha@users.noreply.github.com> Date: Wed, 18 Mar 2020 13:55:34 +0100 Subject: [PATCH 04/50] changed Github to GitHub (#22364) --- docs/docs/deploying-to-cloudflare-workers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/deploying-to-cloudflare-workers.md b/docs/docs/deploying-to-cloudflare-workers.md index 845a06df577bc..bc88ffa1f179e 100644 --- a/docs/docs/deploying-to-cloudflare-workers.md +++ b/docs/docs/deploying-to-cloudflare-workers.md @@ -121,4 +121,4 @@ Set up `CF_API_TOKEN` in GitHub secrets with appropriate values from [Quick Star ## Additional resources - [Quickstart for Workers Sites](https://developers.cloudflare.com/workers/sites/start-from-existing/) -- [Github Action wrangler plugin](https://github.com/cloudflare/wrangler-action) +- [GitHub Action wrangler plugin](https://github.com/cloudflare/wrangler-action) From 75621993fadb6c0d5d699652c01e691a7aad5ca8 Mon Sep 17 00:00:00 2001 From: Thomas Wang Date: Wed, 18 Mar 2020 06:09:41 -0700 Subject: [PATCH 05/50] updating my twitter! (#22374) --- docs/blog/2019-03-15-design-code-blog-post/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/blog/2019-03-15-design-code-blog-post/index.md b/docs/blog/2019-03-15-design-code-blog-post/index.md index fa691d1d424f4..5363a318dea49 100644 --- a/docs/blog/2019-03-15-design-code-blog-post/index.md +++ b/docs/blog/2019-03-15-design-code-blog-post/index.md @@ -16,7 +16,7 @@ Design+Code started in 2015 when Meng To began with a digital book on designing ![](./images/cyfa.png) -[Thomas Wang](https://twitter.com/thomaswangio "Twitter"), UI Developer at Design+Code, shared some of the important details of the rebuild, as well as the benefits their Gatsby-fueled site has provided their new offerings. +[Thomas Wang](https://twitter.com/ThomasWang "Twitter"), UI Developer at Design+Code, shared some of the important details of the rebuild, as well as the benefits their Gatsby-fueled site has provided their new offerings. We needed a new CMS to handle the amount of content we were creating and a From 00d4b3814cc2c9eeabe1b28ba8d06eecac266c42 Mon Sep 17 00:00:00 2001 From: Michael Uloth Date: Wed, 18 Mar 2020 09:53:38 -0400 Subject: [PATCH 06/50] Add video tutorials to awesome-gatsby-resources.md (#22380) --- docs/docs/awesome-gatsby-resources.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/awesome-gatsby-resources.md b/docs/docs/awesome-gatsby-resources.md index ea92037f01924..dde2c9fd81c00 100644 --- a/docs/docs/awesome-gatsby-resources.md +++ b/docs/docs/awesome-gatsby-resources.md @@ -93,6 +93,7 @@ See the [unofficial list of themes](https://gatsbytemplates.io/) - [Deploying Your First Gatsby Site to Netlify](https://scotch.io/tutorials/deploying-your-first-gatsby-site-to-netlify) - [Add a chat widget to your Gatsby blog](https://pusher.com/tutorials/chat-gatsby/) - [Headless WordPress: Why Gatsby Should Be Next on Your List of Things to Learn](https://deliciousbrains.com/gatsby-headless-wordpress/) +- [Gatsby Tutorials \[video series\] — Michael Uloth](https://www.youtube.com/watch?v=jAa1wh5ATm0&list=PLHBEcHVSROXQQhXpNhmiVKKcw72Cc0V-U) ### German From e58fe16cf08e9ffc1a222e699d4339354d69c774 Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Wed, 18 Mar 2020 23:09:47 +0900 Subject: [PATCH 07/50] chore(gatsby): migrate webpack-plugins to TypeScript (#22378) --- .../{webpack-plugins.js => webpack-plugins.ts} | 14 +++++--------- packages/gatsby/src/utils/webpack-utils.js | 12 ++++++------ 2 files changed, 11 insertions(+), 15 deletions(-) rename packages/gatsby/src/utils/{webpack-plugins.js => webpack-plugins.ts} (88%) diff --git a/packages/gatsby/src/utils/webpack-plugins.js b/packages/gatsby/src/utils/webpack-plugins.ts similarity index 88% rename from packages/gatsby/src/utils/webpack-plugins.js rename to packages/gatsby/src/utils/webpack-plugins.ts index 3c4e8fa6a30d0..269aeb9f9489a 100644 --- a/packages/gatsby/src/utils/webpack-plugins.js +++ b/packages/gatsby/src/utils/webpack-plugins.ts @@ -1,13 +1,11 @@ -// @flow +import webpack, { Plugin } from "webpack" -const webpack = require(`webpack`) - -const plugin = (name, optimize) => { - const Plugin = (optimize ? webpack.optimize : webpack)[name] - return (...args: any) => new Plugin(...args) +const plugin = (name: string, optimize?: boolean): Plugin => { + const WebpackPlugin = (optimize ? webpack.optimize : webpack)[name] + return (...args: any): Plugin => new WebpackPlugin(...args) } -const plugins = { +export const builtinPlugins = { normalModuleReplacement: plugin(`NormalModuleReplacementPlugin`), contextReplacement: plugin(`ContextReplacementPlugin`), ignore: plugin(`IgnorePlugin`), @@ -53,5 +51,3 @@ const plugins = { occurrenceOrder: plugin(`OccurrenceOrderPlugin`, true), moduleConcatenation: plugin(`ModuleConcatenationPlugin`, true), } - -module.exports = plugins diff --git a/packages/gatsby/src/utils/webpack-utils.js b/packages/gatsby/src/utils/webpack-utils.js index 5e42bdf321e5c..f9aa0fb587fa9 100644 --- a/packages/gatsby/src/utils/webpack-utils.js +++ b/packages/gatsby/src/utils/webpack-utils.js @@ -11,7 +11,7 @@ const isWsl = require(`is-wsl`) const GatsbyWebpackStatsExtractor = require(`./gatsby-webpack-stats-extractor`) const GatsbyWebpackEslintGraphqlSchemaReload = require(`./gatsby-webpack-eslint-graphql-schema-reload-plugin`) -const builtinPlugins = require(`./webpack-plugins`) +import { builtinPlugins } from "./webpack-plugins" const eslintConfig = require(`./eslint-config`) type LoaderSpec = string | { loader: string, options?: Object } @@ -132,7 +132,7 @@ module.exports = async ({ const makeExternalOnly = (original: RuleFactory<*>) => ( options = {} ): Rule => { - let rule = original(options) + const rule = original(options) rule.include = vendorRegex return rule } @@ -140,7 +140,7 @@ module.exports = async ({ const makeInternalOnly = (original: RuleFactory<*>) => ( options = {} ): Rule => { - let rule = original(options) + const rule = original(options) rule.exclude = vendorRegex return rule } @@ -307,7 +307,7 @@ module.exports = async ({ * and packages that depend on `gatsby` */ { - let js = ({ modulesThatUseGatsby = [], ...options } = {}) => { + const js = ({ modulesThatUseGatsby = [], ...options } = {}) => { return { test: /\.(js|mjs|jsx)$/, include: modulePath => { @@ -342,7 +342,7 @@ module.exports = async ({ * Excludes modules that use Gatsby since the `rules.js` already transpiles those */ { - let dependencies = ({ modulesThatUseGatsby = [] } = {}) => { + const dependencies = ({ modulesThatUseGatsby = [] } = {}) => { const jsOptions = { babelrc: false, configFile: false, @@ -391,7 +391,7 @@ module.exports = async ({ } { - let eslint = schema => { + const eslint = schema => { return { enforce: `pre`, test: /\.jsx?$/, From d052ac4773c32e9a10003ebbb4f9780309a042dc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ra=C3=BAl=20R=20Pearson?= Date: Wed, 18 Mar 2020 16:41:59 +0200 Subject: [PATCH 08/50] Put install in its own code block (#22359) * Put install in its own code block This makes it easier for people to copy the snippet. I believe this is also consistent with other doc pages. * Remove --save from typography install snippet Co-Authored-By: LB Co-authored-by: LB --- docs/docs/typography-js.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/docs/typography-js.md b/docs/docs/typography-js.md index 8e6d9f96a6c4a..a3350c25b2116 100644 --- a/docs/docs/typography-js.md +++ b/docs/docs/typography-js.md @@ -10,7 +10,11 @@ Typography.js is a JavaScript library that allows you to explore the typographic Gatsby has the plugin `gatsby-plugin-typography` to integrate Typography.js into your project. -You can install the plugin and its peer dependencies into your project by running the command `npm install gatsby-plugin-typography react-typography typography --save` +You can install the plugin and its peer dependencies into your project by running the following command: + +```shell +npm install gatsby-plugin-typography react-typography typography +``` After the installation of the plugin is complete, navigate to your `gatsby-config.js` file located in the root of your project's directory and add the plugin to the configuration: From 89ca9f428b9cb99d7658959112eca6127d78fb67 Mon Sep 17 00:00:00 2001 From: Tiffany Brown Date: Wed, 18 Mar 2020 07:57:07 -0700 Subject: [PATCH 09/50] Add docs/glossary/build article (#22149) * Add Build article, update doc-links and glossary.md Added a link to Build article from the Continuous Deployment entry. * docs/glossary/build: Use relative links, remove a repetitive graf. * Update docs/docs/glossary/build.md * Update docs/docs/glossary/build.md * Update docs/docs/glossary/build.md Co-authored-by: Aisha Blake --- docs/docs/glossary.md | 2 +- docs/docs/glossary/build.md | 33 +++++++++++++++++++++ docs/docs/glossary/continuous-deployment.md | 2 +- www/src/data/sidebars/doc-links.yaml | 2 ++ 4 files changed, 37 insertions(+), 2 deletions(-) create mode 100644 docs/docs/glossary/build.md diff --git a/docs/docs/glossary.md b/docs/docs/glossary.md index a4f00d81dcb48..c6862a944c637 100644 --- a/docs/docs/glossary.md +++ b/docs/docs/glossary.md @@ -34,7 +34,7 @@ A tool that lets you write the most modern [JavaScript](#javascript), and on [bu The behind the scenes that the [public](#public) does not see. This often refers to the control panel of your [CMS](#cms). These are often powered by server-side programming languages such as Node.js, PHP, Go, ASP.net, Ruby, or Java. -### Build +### [Build](/docs/glossary/build/) In Gatsby, this is the process of taking your code and content and packaging it into a website that can be hosted and accessed. Commonly referred to as _build time_. See also: [backend](#backend) and [server-side](#server-side). diff --git a/docs/docs/glossary/build.md b/docs/docs/glossary/build.md new file mode 100644 index 0000000000000..66ad97ab801cd --- /dev/null +++ b/docs/docs/glossary/build.md @@ -0,0 +1,33 @@ +--- +title: Build +disableTableOfContents: true +--- + +Learn what _build_ means and how to set up a build process for your Gatsby project. + +## What is a build? + +_Build_ refers to the process of compiling your site. During a build, or at _build time_, your project gets transformed from component files to optimized HTML, CSS, and JavaScript files that you can [deploy](/docs/glossary#deploy) to your hosting provider. + +There are a few ways to create a build. You can build your site locally on your computer using the [Gatsby CLI](/docs/gatsby-cli/#build), and then deploy changes to your [host](/docs/glossary#hosting). If you use [Gatsby Cloud](https://www.gatsbyjs.com/), you can take advantage of [Gatsby Builds](/blog/2020-01-27-announcing-gatsby-builds-and-reports/), a feature available with every Gatsby Cloud account. You can also use a [continuous deployment](/docs/glossary/continuous-deployment/) service such as [AWS Amplify](/docs/deploying-to-aws-amplify/) or [Netlify](/docs/deploying-to-netlify/). + +For larger teams or larger projects, you may want to use a continuous deployment approach to create builds. Each CD/CI service works slightly differently. Almost all of them, however, use the contents of a Git repository to build your site. + +Gatsby Cloud, for example, integrates with [GitHub](https://github.com/), and a number of hosted [content management systems](/docs/glossary#cms). Gatsby Cloud creates a new build after every commit or content change, although you can also trigger a build manually. + +### Using Gatsby CLI + +For smaller teams and projects, use `gatsby build`. The `gatsby build` command is part of the Gatsby command line interface (or CLI). You'll need to install the CLI interface to create a site with Gatsby. Install it globally using [npm](/docs/glossary/#npm). + +```shell +npm install -g gatsby-cli +``` + +Installing `gatsby-cli` globally makes Gatsby commands available system-wide. You'll use `gatsby new` to [create a new site](/tutorial/part-zero/#create-a-gatsby-site), and `gatsby develop` to start a development server on your local machine. + +When you're ready to publish your project, run the `gatsby build` command to create a production-ready version of your site. Once built, you can use an SFTP client, the [rsync](https://en.wikipedia.org/wiki/Rsync) utility, or similar tool to transfer these files to your host. + +### Learn more about builds + +- [Deploying and Hosting](/docs/deploying-and-hosting/) from the Gatsby docs +- How to enable super fast [Distributed Builds](https://www.gatsbyjs.com/docs/distributed-builds/) for Gatsby Cloud diff --git a/docs/docs/glossary/continuous-deployment.md b/docs/docs/glossary/continuous-deployment.md index 763d19cdee9d0..80a26498eed75 100644 --- a/docs/docs/glossary/continuous-deployment.md +++ b/docs/docs/glossary/continuous-deployment.md @@ -5,7 +5,7 @@ disableTableOfContents: true ## What is continuous deployment? -Continuous deployment (CD) is the automation of code deployments. In a continuous deployment system, you don't push a Deploy button or run a `deploy` command. Instead, you build a _pipeline_ — a process that builds and releases code automatically, without human intervention. +Continuous deployment (CD) is the automation of code deployments. In a continuous deployment system, you don't push a Deploy button or run a `deploy` command. Instead, you build a _pipeline_ — a process that [builds](/docs/glossary/build/) and releases code automatically, without human intervention. You'll most likely use a service to create your continuous deployment pipeline. Services such as [Netlify](http://netlify.com/), [AWS Amplify](https://aws.amazon.com/amplify/), [Azure](https://azure.microsoft.com/en-us/), and [Zeit](https://zeit.co/) are popular with Gatsby users. Or you can use [Gatsby Builds](/blog/2020-01-27-announcing-gatsby-builds-and-reports/), a feature of the [Gatsby Cloud](https://www.gatsbyjs.com/) service. diff --git a/www/src/data/sidebars/doc-links.yaml b/www/src/data/sidebars/doc-links.yaml index 3198a8970f04d..0c06175370d16 100644 --- a/www/src/data/sidebars/doc-links.yaml +++ b/www/src/data/sidebars/doc-links.yaml @@ -746,6 +746,8 @@ - title: Glossary link: /docs/glossary/ items: + - title: Build + link: /docs/glossary/build/ - title: Continuous Deployment link: /docs/glossary/continuous-deployment/ - title: Decoupled Drupal From 7095e418b30989e671899aee68fe25afca82a89c Mon Sep 17 00:00:00 2001 From: Dan Kirkham Date: Wed, 18 Mar 2020 14:59:31 +0000 Subject: [PATCH 10/50] Expand on stale handling for gatsby sites (#22230) * Expand on stale handling for gatsby sites * Update docs/docs/gatsby-link.md Co-Authored-By: LB * Update docs/docs/gatsby-link.md Co-Authored-By: LB * Update gatsby-link.md * Update docs/docs/gatsby-link.md Co-Authored-By: LB * chore: format Co-authored-by: LB Co-authored-by: gatsbybot --- docs/docs/gatsby-link.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/docs/docs/gatsby-link.md b/docs/docs/gatsby-link.md index 7ec5089fe0071..154e4c907c6da 100644 --- a/docs/docs/gatsby-link.md +++ b/docs/docs/gatsby-link.md @@ -389,6 +389,16 @@ onClick = () => { } ``` +## Handling stale client-side pages + +Gatsby's `` component will only fetch each page's resources once. Updates to pages on the site are not reflected in the browser as they are effectively "locked in time". This can have the undesirable impact of different users having different views of the content. + +In order to prevent this staleness, Gatsby requests an additional resource on each new page load: `app-data.json`. This contains a hash generated when the site is built; if anything in the `src` directory changes, the hash will change. During page loads, if Gatsby sees a different hash in the `app-data.json` than the hash it initially retrieved when the site first loaded, the browser will navigate using `window.location`. The browser fetches the new page and starts over again, so any cached resources are lost. + +However, if the page has previously loaded, it will not re-request `app-data.json`. In that case, the hash comparison will not occur and the previously loaded content will be used. + +> **Note:** Any state will be lost during the `window.location` transition. This can have an impact if there is a reliance on state management, e.g. tracking state in [wrapPageElement](/docs/browser-apis/#wrapPageElement) or via a library like Redux. + ## Additional resources - [Authentication tutorial for client-only routes](/tutorial/authentication-tutorial/) From 4f1fca913a927208eb739584ccbd72786808f1e0 Mon Sep 17 00:00:00 2001 From: Jongwoo Han <44025432+jongwooo@users.noreply.github.com> Date: Thu, 19 Mar 2020 02:37:38 +0900 Subject: [PATCH 11/50] chore(starters): update gatsby-starter-typescript (#22025) Co-authored-by: gatsbybot --- docs/starters.yml | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/docs/starters.yml b/docs/starters.yml index 8fea1175f495a..2f95a3fc5330a 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5256,13 +5256,17 @@ - ✔️ Highly optimized (Lighthouse score 4 x 100) - url: https://gatsby-starter-typescript-deploy.netlify.com/ repo: https://github.com/jongwooo/gatsby-starter-typescript - description: Typescript version of the default Gatsby starter🔮 + description: TypeScript version of the default Gatsby starter🔮 tags: - Language:TypeScript + - Linting - Netlify features: - - Typescript version starter based on the official default - - Prettier + - ✔️ Gatsby + - ✔️ TypeScript + - ✔️ Prettier + - ✔️ ESLint + - ✔️ Deploy to Netlify through GitHub Actions - url: https://answer.netlify.com/ repo: https://github.com/passwd10/gatsby-starter-answer description: A simple Gatsby blog to show your Future Action on top of the page From 9894703029b3772780c5022115beb1d70c4e428b Mon Sep 17 00:00:00 2001 From: Wojciech Kocjan Date: Wed, 18 Mar 2020 18:39:40 +0100 Subject: [PATCH 12/50] chore(starters): add gatsby-airtable-listing (#22336) Co-authored-by: gatsbybot --- docs/starters.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 2f95a3fc5330a..455357633ae09 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5620,3 +5620,20 @@ - Styled 404 page - Lightweight - Styled Components +- url: https://gatsby-airtable-listing.netlify.com/ + repo: https://github.com/wkocjan/gatsby-airtable-listing + description: Airtable theme for Gatsby + tags: + - Airtable + - SEO + - Styling:Tailwind + features: + - Airtable integration + - Modals with previous/next navigation + - Responsive design + - Uses TailwindCSS for styling + - Font Awesome icons + - Clean minimalist design + - SEO optimized + - Robots.txt + - OpenGraph structured data From 64a367e206dd232ea83a97b2f0fc4f77606b2deb Mon Sep 17 00:00:00 2001 From: Kelvin DeCosta <38982451+kelvindecosta@users.noreply.github.com> Date: Wed, 18 Mar 2020 21:44:49 +0400 Subject: [PATCH 13/50] chore(showcase): Add kelvindecosta.com to site showcase (#22353) --- docs/sites.yml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index e7c0eb10d5173..e90d4762b4969 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -10055,3 +10055,12 @@ built_by: Built by Rebels Ltd. built_by_url: https://builtbyrebels.com/ featured: false +- title: Kelvin DeCosta's Website + url: https://kelvindecosta.com + main_url: https://kelvindecosta.com + categories: + - Blog + - Portfolio + built_by: Kelvin DeCosta + built_by_url: https://github.com/kelvindecosta + featured: false From d5e7cc60275286517582ed4d32eea098a42b49a9 Mon Sep 17 00:00:00 2001 From: Richard Bruskowski Date: Wed, 18 Mar 2020 19:22:28 +0100 Subject: [PATCH 14/50] chore(showcase): add bruskowski.design to the showcase list (#22343) Adds my design portfolio bruskowski.design to the showcase. Co-authored-by: Kyle Gill --- docs/sites.yml | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index e90d4762b4969..2581e712f331f 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -10055,6 +10055,19 @@ built_by: Built by Rebels Ltd. built_by_url: https://builtbyrebels.com/ featured: false +- title: Design Portfolio of Richard Bruskowski + main_url: https://bruskowski.design/ + url: https://bruskowski.design/ + description: > + My freelance design portfolio: Visual design, digital products, interactive prototypes, design systems, brand design. Uses MDX, Styled Components, Framer Motion. Started with Gatsby Starter Emilia by LekoArts. + categories: + - Design + - Portfolio + - User Experience + - Freelance + - Photography + built_by: Richard Bruskowski + built_by_url: https://github.com/richardbruskowski - title: Kelvin DeCosta's Website url: https://kelvindecosta.com main_url: https://kelvindecosta.com From 9e291e916058e6100bf7f8be59d119f3a44c1639 Mon Sep 17 00:00:00 2001 From: Hashim Warren Date: Wed, 18 Mar 2020 16:14:08 -0400 Subject: [PATCH 15/50] draft(blog) 100DaysOfGatsby Challenge 12 (#22382) * Draft challenge 12 article * chore: format * Fix typo Co-authored-by: gatsbybot --- docs/blog/100days/apps/index.md | 43 +++++++++++++++++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 docs/blog/100days/apps/index.md diff --git a/docs/blog/100days/apps/index.md b/docs/blog/100days/apps/index.md new file mode 100644 index 0000000000000..81e30520a9f9e --- /dev/null +++ b/docs/blog/100days/apps/index.md @@ -0,0 +1,43 @@ +--- +title: Challenge 12 - Transform Your Gatsby Website into a Web App +date: 2020-03-18 +author: "Hashim Warren" +excerpt: "Learn how to add dynamic features to your Gatsby site" +tags: ["learning-to-code", "100-Days-of-Gatsby"] +--- + +_Gatsby was named the [#1 new technology to learn in 2020](https://www.cnbc.com/2019/12/02/10-hottest-tech-skills-that-could-pay-off-most-in-2020-says-new-report.html)!_ + +_To help you learn about Gatsby and our ecosystem, we invite you to take the #100DaysOfGatsby challenge! If you are new to Gatsby, you can follow along with our beginner-friendly weekly prompts. Or if you are familiar with Gatsby and want to go deeper, we invite you to [build your first Gatsby Theme](/docs/themes/building-themes/)._ + +_Learn more about [#100DaysOfGatsby here](/blog/100days)!_ + +## Challenge 12: Add Gated Content to Your Website + +Did you know Gatsby can be used for websites as well as dynamic apps? Dustin Schau presented about this topic at Gatsby Days London: + +https://www.youtube.com/watch?v=zeVC-gD3u7M + +For example, if your project needs private routes, or sections of the site that only authenticated users can view, Gatsby can enable that with just a plugin, or by creating a few components from scratch. In the following resources we invite you to try both paths, and experiment with powerful third-party authentication services. + +### Gatsby for Apps Resources + +#### Overview & Examples + +First, get familiar with how [Gatsby works for apps](/docs/adding-app-and-website-functionality/). + +Then [watch this helpful livestream](/blog/2019-03-21-add-auth0-to-gatsby-livestream/) that covers adding an authentication service called Auth0 to your site. + +Lastly, play with live examples of these features by signing in to the [Gatsby Swag Store](https://store.gatsbyjs.org/), and [Gatsby Cloud](https://gatsbyjs.com/cloud) + +#### The Plugin Path + +To get started quickly, use `gatsby-plugin-create-client-paths` to create private client routes in your Gatsby site. [Learn more](/packages/gatsby-plugin-create-client-paths). + +#### The Hand-Rolled Path + +[Read this tutorial and handy illustration](/docs/client-only-routes-and-user-authentication/) that walks you through adding private routes and authentication in Gatsby. + +### What to Do If You Need Help + +If you get stuck during the challenge, you can ask for help from the [Gatsby community](/contributing/community/) and the [ASKGatsbyJS](https://twitter.com/AskGatsbyJS) Twitter account. You can find fellow Gatsby Developers on [Discord](https://discordapp.com/invite/gatsby), [Reddit](https://www.reddit.com/r/gatsbyjs/), [Spectrum](https://spectrum.chat/gatsby-js), and [Dev](https://dev.to/t/gatsby). From 6475398cc4e092b9530f8ca318e9fdfeb3408dc0 Mon Sep 17 00:00:00 2001 From: nibtime <52962482+nibtime@users.noreply.github.com> Date: Wed, 18 Mar 2020 22:03:54 +0100 Subject: [PATCH 16/50] fix(gatsby-plugin-preload-fonts): lookup routes with and without trailing slash (#21890) * lookup routes with and without trailing slash fixes #21814 * use backtick quotes --- packages/gatsby-plugin-preload-fonts/src/gatsby-ssr.js | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/packages/gatsby-plugin-preload-fonts/src/gatsby-ssr.js b/packages/gatsby-plugin-preload-fonts/src/gatsby-ssr.js index 4699bfd1ea416..ea96d9daa6576 100644 --- a/packages/gatsby-plugin-preload-fonts/src/gatsby-ssr.js +++ b/packages/gatsby-plugin-preload-fonts/src/gatsby-ssr.js @@ -19,11 +19,13 @@ exports.onRenderBody = ( { crossOrigin = `anonymous` } = {} ) => { const cache = loadCache() - if (!cache.assets[pathname]) return + // try to load assets from cache. Consider route with and without trailing slash as lookup key + const cacheEntry = cache.assets[pathname] || cache.assets[pathname + `/`] + if (!cacheEntry) return const props = getLinkProps({ crossOrigin, pathname }) - const assets = Object.keys(cache.assets[pathname]) + const assets = Object.keys(cacheEntry) setHeadComponents( assets.map(href => { From 6bc07b1313aa07ce926530af52166d7b2f715045 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:04:40 -0700 Subject: [PATCH 17/50] chore(release): Publish - gatsby-cli@2.10.12 - gatsby-codemods@1.1.25 - gatsby-graphiql-explorer@0.2.37 - gatsby-plugin-guess-js@1.1.33 - gatsby-plugin-mdx@1.0.84 - gatsby-plugin-netlify-cms@4.1.43 - gatsby-plugin-offline@3.0.42 - gatsby-plugin-preload-fonts@1.0.36 - gatsby-react-router-scroll@2.1.25 - gatsby-remark-images-contentful@2.1.35 - gatsby-source-contentful@2.1.99 - gatsby-source-drupal@3.3.29 - gatsby-source-faker@2.1.24 - gatsby-source-hacker-news@2.2.5 - gatsby-source-lever@2.1.29 - gatsby-source-medium@2.1.23 - gatsby-source-wikipedia@2.1.22 - gatsby-source-wordpress@3.1.73 - gatsby-theme-blog-core@1.2.30 - gatsby-theme-blog@1.3.31 - gatsby-theme-notes@1.1.28 - gatsby-transformer-excel@2.2.24 - gatsby-transformer-screenshot@2.1.54 - gatsby@2.19.46 --- packages/gatsby-cli/CHANGELOG.md | 4 ++++ packages/gatsby-cli/package.json | 2 +- packages/gatsby-codemods/CHANGELOG.md | 4 ++++ packages/gatsby-codemods/package.json | 2 +- packages/gatsby-graphiql-explorer/CHANGELOG.md | 4 ++++ packages/gatsby-graphiql-explorer/package.json | 2 +- packages/gatsby-plugin-guess-js/CHANGELOG.md | 6 ++++++ packages/gatsby-plugin-guess-js/package.json | 2 +- packages/gatsby-plugin-mdx/CHANGELOG.md | 6 ++++++ packages/gatsby-plugin-mdx/package.json | 2 +- packages/gatsby-plugin-netlify-cms/CHANGELOG.md | 6 ++++++ packages/gatsby-plugin-netlify-cms/package.json | 2 +- packages/gatsby-plugin-offline/CHANGELOG.md | 6 ++++++ packages/gatsby-plugin-offline/package.json | 2 +- packages/gatsby-plugin-preload-fonts/CHANGELOG.md | 6 ++++++ packages/gatsby-plugin-preload-fonts/package.json | 2 +- packages/gatsby-react-router-scroll/CHANGELOG.md | 6 ++++++ packages/gatsby-react-router-scroll/package.json | 2 +- packages/gatsby-remark-images-contentful/CHANGELOG.md | 6 ++++++ packages/gatsby-remark-images-contentful/package.json | 2 +- packages/gatsby-source-contentful/CHANGELOG.md | 7 +++++++ packages/gatsby-source-contentful/package.json | 2 +- packages/gatsby-source-drupal/CHANGELOG.md | 6 ++++++ packages/gatsby-source-drupal/package.json | 2 +- packages/gatsby-source-faker/CHANGELOG.md | 4 ++++ packages/gatsby-source-faker/package.json | 2 +- packages/gatsby-source-hacker-news/CHANGELOG.md | 6 ++++++ packages/gatsby-source-hacker-news/package.json | 2 +- packages/gatsby-source-lever/CHANGELOG.md | 6 ++++++ packages/gatsby-source-lever/package.json | 2 +- packages/gatsby-source-medium/CHANGELOG.md | 6 ++++++ packages/gatsby-source-medium/package.json | 2 +- packages/gatsby-source-wikipedia/CHANGELOG.md | 6 ++++++ packages/gatsby-source-wikipedia/package.json | 2 +- packages/gatsby-source-wordpress/CHANGELOG.md | 6 ++++++ packages/gatsby-source-wordpress/package.json | 2 +- packages/gatsby-theme-blog-core/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog-core/package.json | 6 +++--- packages/gatsby-theme-blog/CHANGELOG.md | 7 +++++++ packages/gatsby-theme-blog/package.json | 6 +++--- packages/gatsby-theme-notes/CHANGELOG.md | 7 +++++++ packages/gatsby-theme-notes/package.json | 6 +++--- packages/gatsby-transformer-excel/CHANGELOG.md | 6 ++++++ packages/gatsby-transformer-excel/package.json | 2 +- packages/gatsby-transformer-screenshot/CHANGELOG.md | 7 +++++++ packages/gatsby-transformer-screenshot/package.json | 2 +- packages/gatsby/CHANGELOG.md | 9 +++++++++ packages/gatsby/package.json | 8 ++++---- 48 files changed, 174 insertions(+), 33 deletions(-) diff --git a/packages/gatsby-cli/CHANGELOG.md b/packages/gatsby-cli/CHANGELOG.md index 820b770a9648f..b1323af27b6e4 100644 --- a/packages/gatsby-cli/CHANGELOG.md +++ b/packages/gatsby-cli/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.10.12](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.10.11...gatsby-cli@2.10.12) (2020-03-18) + +**Note:** Version bump only for package gatsby-cli + ## [2.10.11](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.10.10...gatsby-cli@2.10.11) (2020-03-16) **Note:** Version bump only for package gatsby-cli diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 5fe53c4ea8de5..1c50788da6c78 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-cli", "description": "Gatsby command-line interface for creating new sites and running Gatsby commands", - "version": "2.10.11", + "version": "2.10.12", "author": "Kyle Mathews ", "bin": { "gatsby": "lib/index.js" diff --git a/packages/gatsby-codemods/CHANGELOG.md b/packages/gatsby-codemods/CHANGELOG.md index 03e45b282a7c4..c7a8e6b841d29 100644 --- a/packages/gatsby-codemods/CHANGELOG.md +++ b/packages/gatsby-codemods/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.25](https://github.com/gatsbyjs/gatsby/compare/gatsby-codemods@1.1.24...gatsby-codemods@1.1.25) (2020-03-18) + +**Note:** Version bump only for package gatsby-codemods + ## [1.1.24](https://github.com/gatsbyjs/gatsby/compare/gatsby-codemods@1.1.23...gatsby-codemods@1.1.24) (2020-03-16) **Note:** Version bump only for package gatsby-codemods diff --git a/packages/gatsby-codemods/package.json b/packages/gatsby-codemods/package.json index 423859cd36056..95e83f1435c46 100644 --- a/packages/gatsby-codemods/package.json +++ b/packages/gatsby-codemods/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-codemods", - "version": "1.1.24", + "version": "1.1.25", "description": "A collection of codemod scripts for use with JSCodeshift that help migrate to newer versions of Gatsby.", "main": "index.js", "scripts": { diff --git a/packages/gatsby-graphiql-explorer/CHANGELOG.md b/packages/gatsby-graphiql-explorer/CHANGELOG.md index e6fec88a2237f..7ba79f299b144 100644 --- a/packages/gatsby-graphiql-explorer/CHANGELOG.md +++ b/packages/gatsby-graphiql-explorer/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [0.2.37](https://github.com/gatsbyjs/gatsby/compare/gatsby-graphiql-explorer@0.2.36...gatsby-graphiql-explorer@0.2.37) (2020-03-18) + +**Note:** Version bump only for package gatsby-graphiql-explorer + ## [0.2.36](https://github.com/gatsbyjs/gatsby/compare/gatsby-graphiql-explorer@0.2.35...gatsby-graphiql-explorer@0.2.36) (2020-03-16) **Note:** Version bump only for package gatsby-graphiql-explorer diff --git a/packages/gatsby-graphiql-explorer/package.json b/packages/gatsby-graphiql-explorer/package.json index bc71eb0b43b77..3e6f9783951fa 100644 --- a/packages/gatsby-graphiql-explorer/package.json +++ b/packages/gatsby-graphiql-explorer/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-graphiql-explorer", - "version": "0.2.36", + "version": "0.2.37", "description": "GraphiQL IDE with custom features for Gatsby users", "main": "index.js", "scripts": { diff --git a/packages/gatsby-plugin-guess-js/CHANGELOG.md b/packages/gatsby-plugin-guess-js/CHANGELOG.md index b08c712336020..62c06c856f68a 100644 --- a/packages/gatsby-plugin-guess-js/CHANGELOG.md +++ b/packages/gatsby-plugin-guess-js/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.33](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-guess-js@1.1.32...gatsby-plugin-guess-js@1.1.33) (2020-03-18) + +### Bug Fixes + +- update dependency guess-webpack to ~0.4.17 ([#22319](https://github.com/gatsbyjs/gatsby/issues/22319)) ([770c365](https://github.com/gatsbyjs/gatsby/commit/770c365)) + ## [1.1.32](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-guess-js@1.1.31...gatsby-plugin-guess-js@1.1.32) (2020-03-16) **Note:** Version bump only for package gatsby-plugin-guess-js diff --git a/packages/gatsby-plugin-guess-js/package.json b/packages/gatsby-plugin-guess-js/package.json index 480bdb079e23e..20207ab52369a 100644 --- a/packages/gatsby-plugin-guess-js/package.json +++ b/packages/gatsby-plugin-guess-js/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-plugin-guess-js", - "version": "1.1.32", + "version": "1.1.33", "description": "Gatsby plugin providing drop-in integration with Guess.js to enabling using machine learning and analytics data to power prefetching", "main": "index.js", "scripts": { diff --git a/packages/gatsby-plugin-mdx/CHANGELOG.md b/packages/gatsby-plugin-mdx/CHANGELOG.md index b44111ed160dc..818b8c9e39b7a 100644 --- a/packages/gatsby-plugin-mdx/CHANGELOG.md +++ b/packages/gatsby-plugin-mdx/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.84](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-mdx@1.0.83...gatsby-plugin-mdx@1.0.84) (2020-03-18) + +### Bug Fixes + +- update minor updates in packages ([#22329](https://github.com/gatsbyjs/gatsby/issues/22329)) ([bfb864b](https://github.com/gatsbyjs/gatsby/commit/bfb864b)) + ## [1.0.83](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-mdx@1.0.82...gatsby-plugin-mdx@1.0.83) (2020-03-16) **Note:** Version bump only for package gatsby-plugin-mdx diff --git a/packages/gatsby-plugin-mdx/package.json b/packages/gatsby-plugin-mdx/package.json index 0c59dae696d8b..da78fbdc93b67 100644 --- a/packages/gatsby-plugin-mdx/package.json +++ b/packages/gatsby-plugin-mdx/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-plugin-mdx", - "version": "1.0.83", + "version": "1.0.84", "description": "MDX integration for Gatsby", "main": "index.js", "license": "MIT", diff --git a/packages/gatsby-plugin-netlify-cms/CHANGELOG.md b/packages/gatsby-plugin-netlify-cms/CHANGELOG.md index cacbf9f83b9ad..0ed07272de753 100644 --- a/packages/gatsby-plugin-netlify-cms/CHANGELOG.md +++ b/packages/gatsby-plugin-netlify-cms/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [4.1.43](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-netlify-cms@4.1.42...gatsby-plugin-netlify-cms@4.1.43) (2020-03-18) + +### Bug Fixes + +- update dependency mini-css-extract-plugin ([#22320](https://github.com/gatsbyjs/gatsby/issues/22320)) ([d5c936e](https://github.com/gatsbyjs/gatsby/commit/d5c936e)) + ## [4.1.42](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-netlify-cms@4.1.41...gatsby-plugin-netlify-cms@4.1.42) (2020-03-16) **Note:** Version bump only for package gatsby-plugin-netlify-cms diff --git a/packages/gatsby-plugin-netlify-cms/package.json b/packages/gatsby-plugin-netlify-cms/package.json index bbd5f93c63d9f..48b59364e454d 100644 --- a/packages/gatsby-plugin-netlify-cms/package.json +++ b/packages/gatsby-plugin-netlify-cms/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-plugin-netlify-cms", "description": "A Gatsby plugin which generates the Netlify CMS single page app", - "version": "4.1.42", + "version": "4.1.43", "author": "Shawn Erquhart ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-plugin-offline/CHANGELOG.md b/packages/gatsby-plugin-offline/CHANGELOG.md index e8af041c8d1ad..b20978fb32f85 100644 --- a/packages/gatsby-plugin-offline/CHANGELOG.md +++ b/packages/gatsby-plugin-offline/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.0.42](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-offline@3.0.41...gatsby-plugin-offline@3.0.42) (2020-03-18) + +### Bug Fixes + +- **gatsby-plugin-offline:** Run app-shell.js from user cache directory for pnp compatibility ([#22351](https://github.com/gatsbyjs/gatsby/issues/22351)) ([f8b7317](https://github.com/gatsbyjs/gatsby/commit/f8b7317)) + ## [3.0.41](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-offline@3.0.40...gatsby-plugin-offline@3.0.41) (2020-03-16) **Note:** Version bump only for package gatsby-plugin-offline diff --git a/packages/gatsby-plugin-offline/package.json b/packages/gatsby-plugin-offline/package.json index 0ca99bcb4a429..2de8366b39584 100644 --- a/packages/gatsby-plugin-offline/package.json +++ b/packages/gatsby-plugin-offline/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-plugin-offline", "description": "Gatsby plugin which sets up a site to be able to run offline", - "version": "3.0.41", + "version": "3.0.42", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-plugin-preload-fonts/CHANGELOG.md b/packages/gatsby-plugin-preload-fonts/CHANGELOG.md index e0848f594a96e..17fd73122ac70 100644 --- a/packages/gatsby-plugin-preload-fonts/CHANGELOG.md +++ b/packages/gatsby-plugin-preload-fonts/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.0.36](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-preload-fonts@1.0.35...gatsby-plugin-preload-fonts@1.0.36) (2020-03-18) + +### Bug Fixes + +- **gatsby-plugin-preload-fonts:** lookup routes with and without trailing slash ([#21890](https://github.com/gatsbyjs/gatsby/issues/21890)) ([6475398](https://github.com/gatsbyjs/gatsby/commit/6475398)), closes [#21814](https://github.com/gatsbyjs/gatsby/issues/21814) + ## [1.0.35](https://github.com/gatsbyjs/gatsby/compare/gatsby-plugin-preload-fonts@1.0.34...gatsby-plugin-preload-fonts@1.0.35) (2020-03-16) **Note:** Version bump only for package gatsby-plugin-preload-fonts diff --git a/packages/gatsby-plugin-preload-fonts/package.json b/packages/gatsby-plugin-preload-fonts/package.json index 9bd1449322b86..1f4539b09a5c5 100644 --- a/packages/gatsby-plugin-preload-fonts/package.json +++ b/packages/gatsby-plugin-preload-fonts/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-plugin-preload-fonts", "description": "Gatsby plugin for preloading fonts per page", - "version": "1.0.35", + "version": "1.0.36", "author": "Aaron Ross ", "main": "index.js", "bin": { diff --git a/packages/gatsby-react-router-scroll/CHANGELOG.md b/packages/gatsby-react-router-scroll/CHANGELOG.md index 6800dfb059c81..ccca13650e1c9 100644 --- a/packages/gatsby-react-router-scroll/CHANGELOG.md +++ b/packages/gatsby-react-router-scroll/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.25](https://github.com/gatsbyjs/gatsby/compare/gatsby-react-router-scroll@2.1.24...gatsby-react-router-scroll@2.1.25) (2020-03-18) + +### Bug Fixes + +- update dependency scroll-behavior ([#22322](https://github.com/gatsbyjs/gatsby/issues/22322)) ([9b8c914](https://github.com/gatsbyjs/gatsby/commit/9b8c914)) + ## [2.1.24](https://github.com/gatsbyjs/gatsby/compare/gatsby-react-router-scroll@2.1.23...gatsby-react-router-scroll@2.1.24) (2020-03-16) **Note:** Version bump only for package gatsby-react-router-scroll diff --git a/packages/gatsby-react-router-scroll/package.json b/packages/gatsby-react-router-scroll/package.json index 88c664aa566fd..1d5e829dcdc42 100644 --- a/packages/gatsby-react-router-scroll/package.json +++ b/packages/gatsby-react-router-scroll/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-react-router-scroll", "description": "React Router scroll management forked from https://github.com/ytase/react-router-scroll for Gatsby", - "version": "2.1.24", + "version": "2.1.25", "author": "Jimmy Jia", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-remark-images-contentful/CHANGELOG.md b/packages/gatsby-remark-images-contentful/CHANGELOG.md index 6686801c31a2a..f2f49b25b5cec 100644 --- a/packages/gatsby-remark-images-contentful/CHANGELOG.md +++ b/packages/gatsby-remark-images-contentful/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.35](https://github.com/gatsbyjs/gatsby/compare/gatsby-remark-images-contentful@2.1.34...gatsby-remark-images-contentful@2.1.35) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [2.1.34](https://github.com/gatsbyjs/gatsby/compare/gatsby-remark-images-contentful@2.1.33...gatsby-remark-images-contentful@2.1.34) (2020-03-16) **Note:** Version bump only for package gatsby-remark-images-contentful diff --git a/packages/gatsby-remark-images-contentful/package.json b/packages/gatsby-remark-images-contentful/package.json index fc05b9e9d3c20..25e01797be27c 100644 --- a/packages/gatsby-remark-images-contentful/package.json +++ b/packages/gatsby-remark-images-contentful/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-remark-images-contentful", - "version": "2.1.34", + "version": "2.1.35", "description": "Process Images in Contentful markdown so they can use the images API.", "main": "index.js", "scripts": { diff --git a/packages/gatsby-source-contentful/CHANGELOG.md b/packages/gatsby-source-contentful/CHANGELOG.md index 9e16c1e53bbc4..0b0503eb7abef 100644 --- a/packages/gatsby-source-contentful/CHANGELOG.md +++ b/packages/gatsby-source-contentful/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.99](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-contentful@2.1.98...gatsby-source-contentful@2.1.99) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) +- **readme:** Update Readme gatsby-source-contentful missing co… ([#22339](https://github.com/gatsbyjs/gatsby/issues/22339)) ([ab59162](https://github.com/gatsbyjs/gatsby/commit/ab59162)) + ## [2.1.98](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-contentful@2.1.97...gatsby-source-contentful@2.1.98) (2020-03-16) **Note:** Version bump only for package gatsby-source-contentful diff --git a/packages/gatsby-source-contentful/package.json b/packages/gatsby-source-contentful/package.json index aeb024fe0bc70..20aba450e92c9 100644 --- a/packages/gatsby-source-contentful/package.json +++ b/packages/gatsby-source-contentful/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-contentful", "description": "Gatsby source plugin for building websites using the Contentful CMS as a data source", - "version": "2.1.98", + "version": "2.1.99", "author": "Marcus Ericsson (mericsson.com)", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-drupal/CHANGELOG.md b/packages/gatsby-source-drupal/CHANGELOG.md index aa279e50b7e7c..d24673b83b065 100644 --- a/packages/gatsby-source-drupal/CHANGELOG.md +++ b/packages/gatsby-source-drupal/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.3.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.3.28...gatsby-source-drupal@3.3.29) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [3.3.28](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.3.27...gatsby-source-drupal@3.3.28) (2020-03-16) **Note:** Version bump only for package gatsby-source-drupal diff --git a/packages/gatsby-source-drupal/package.json b/packages/gatsby-source-drupal/package.json index 440a71c541c48..9bb23a6b331a1 100644 --- a/packages/gatsby-source-drupal/package.json +++ b/packages/gatsby-source-drupal/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-drupal", "description": "Gatsby source plugin for building websites using the Drupal CMS as a data source", - "version": "3.3.28", + "version": "3.3.29", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-faker/CHANGELOG.md b/packages/gatsby-source-faker/CHANGELOG.md index 9010208de2e3c..5a450466d7a04 100644 --- a/packages/gatsby-source-faker/CHANGELOG.md +++ b/packages/gatsby-source-faker/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.24](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-faker@2.1.23...gatsby-source-faker@2.1.24) (2020-03-18) + +**Note:** Version bump only for package gatsby-source-faker + ## [2.1.23](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-faker@2.1.22...gatsby-source-faker@2.1.23) (2020-03-16) **Note:** Version bump only for package gatsby-source-faker diff --git a/packages/gatsby-source-faker/package.json b/packages/gatsby-source-faker/package.json index 9ebfe34c26294..27b49a57b0745 100644 --- a/packages/gatsby-source-faker/package.json +++ b/packages/gatsby-source-faker/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-faker", "description": "A gatsby plugin to get fake data for testing", - "version": "2.1.23", + "version": "2.1.24", "author": "Pavithra Kodmad", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-hacker-news/CHANGELOG.md b/packages/gatsby-source-hacker-news/CHANGELOG.md index 0427dbc468677..035bb207c9aba 100644 --- a/packages/gatsby-source-hacker-news/CHANGELOG.md +++ b/packages/gatsby-source-hacker-news/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.5](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-hacker-news@2.2.4...gatsby-source-hacker-news@2.2.5) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [2.2.4](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-hacker-news@2.2.3...gatsby-source-hacker-news@2.2.4) (2020-03-16) **Note:** Version bump only for package gatsby-source-hacker-news diff --git a/packages/gatsby-source-hacker-news/package.json b/packages/gatsby-source-hacker-news/package.json index 3cec2c277b1d8..472d614c6c7ab 100644 --- a/packages/gatsby-source-hacker-news/package.json +++ b/packages/gatsby-source-hacker-news/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-hacker-news", "description": "Gatsby source plugin for building websites using Hacker News as a data source", - "version": "2.2.4", + "version": "2.2.5", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-lever/CHANGELOG.md b/packages/gatsby-source-lever/CHANGELOG.md index 52714e6531bc2..5e29edb6176c1 100644 --- a/packages/gatsby-source-lever/CHANGELOG.md +++ b/packages/gatsby-source-lever/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-lever@2.1.28...gatsby-source-lever@2.1.29) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [2.1.28](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-lever@2.1.27...gatsby-source-lever@2.1.28) (2020-03-16) **Note:** Version bump only for package gatsby-source-lever diff --git a/packages/gatsby-source-lever/package.json b/packages/gatsby-source-lever/package.json index dca7d49905e42..d4155ac3f2f38 100644 --- a/packages/gatsby-source-lever/package.json +++ b/packages/gatsby-source-lever/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-lever", "description": "Gatsby source plugin for building websites using the Lever.co Recruitment Software as a data source.", - "version": "2.1.28", + "version": "2.1.29", "author": "Sebastien Fichot ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-medium/CHANGELOG.md b/packages/gatsby-source-medium/CHANGELOG.md index d1decf0e8373b..519f3964b7c68 100644 --- a/packages/gatsby-source-medium/CHANGELOG.md +++ b/packages/gatsby-source-medium/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.23](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-medium@2.1.22...gatsby-source-medium@2.1.23) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [2.1.22](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-medium@2.1.21...gatsby-source-medium@2.1.22) (2020-03-16) **Note:** Version bump only for package gatsby-source-medium diff --git a/packages/gatsby-source-medium/package.json b/packages/gatsby-source-medium/package.json index 520f95e3e0084..44bfd33dc6f0e 100644 --- a/packages/gatsby-source-medium/package.json +++ b/packages/gatsby-source-medium/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-medium", "description": "Gatsby source plugin for building websites using Medium as a data source", - "version": "2.1.22", + "version": "2.1.23", "author": "Robert Vogt ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-wikipedia/CHANGELOG.md b/packages/gatsby-source-wikipedia/CHANGELOG.md index 37a548bee10cf..42df535c7b1af 100644 --- a/packages/gatsby-source-wikipedia/CHANGELOG.md +++ b/packages/gatsby-source-wikipedia/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.22](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wikipedia@2.1.21...gatsby-source-wikipedia@2.1.22) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [2.1.21](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wikipedia@2.1.20...gatsby-source-wikipedia@2.1.21) (2020-03-16) **Note:** Version bump only for package gatsby-source-wikipedia diff --git a/packages/gatsby-source-wikipedia/package.json b/packages/gatsby-source-wikipedia/package.json index 6c99d72582f81..b4e6da54833a6 100644 --- a/packages/gatsby-source-wikipedia/package.json +++ b/packages/gatsby-source-wikipedia/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-source-wikipedia", - "version": "2.1.21", + "version": "2.1.22", "description": "Gatsby source plugin for pulling articles from Wikipedia", "main": "index.js", "scripts": { diff --git a/packages/gatsby-source-wordpress/CHANGELOG.md b/packages/gatsby-source-wordpress/CHANGELOG.md index 2748e4d21e037..95254abe31e5c 100644 --- a/packages/gatsby-source-wordpress/CHANGELOG.md +++ b/packages/gatsby-source-wordpress/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.1.73](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wordpress@3.1.72...gatsby-source-wordpress@3.1.73) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) + ## [3.1.72](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wordpress@3.1.71...gatsby-source-wordpress@3.1.72) (2020-03-16) **Note:** Version bump only for package gatsby-source-wordpress diff --git a/packages/gatsby-source-wordpress/package.json b/packages/gatsby-source-wordpress/package.json index d3f329159f7b2..d93ef13f746f8 100644 --- a/packages/gatsby-source-wordpress/package.json +++ b/packages/gatsby-source-wordpress/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-wordpress", "description": "Gatsby source plugin for building websites using the WordPress CMS as a data source.", - "version": "3.1.72", + "version": "3.1.73", "author": "Sebastien Fichot ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-theme-blog-core/CHANGELOG.md b/packages/gatsby-theme-blog-core/CHANGELOG.md index 8c23f20c10e37..841762a8ef593 100644 --- a/packages/gatsby-theme-blog-core/CHANGELOG.md +++ b/packages/gatsby-theme-blog-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.29...gatsby-theme-blog-core@1.2.30) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog-core + ## [1.2.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.28...gatsby-theme-blog-core@1.2.29) (2020-03-16) **Note:** Version bump only for package gatsby-theme-blog-core diff --git a/packages/gatsby-theme-blog-core/package.json b/packages/gatsby-theme-blog-core/package.json index b1fc3f87bd5fe..485222ba840ef 100644 --- a/packages/gatsby-theme-blog-core/package.json +++ b/packages/gatsby-theme-blog-core/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog-core", - "version": "1.2.29", + "version": "1.2.30", "main": "index.js", "author": "christopherbiscardi (@chrisbiscardi)", "license": "MIT", @@ -19,7 +19,7 @@ "dependencies": { "@mdx-js/mdx": "^1.5.7", "gatsby-core-utils": "^1.0.34", - "gatsby-plugin-mdx": "^1.0.83", + "gatsby-plugin-mdx": "^1.0.84", "gatsby-plugin-sharp": "^2.4.13", "gatsby-remark-copy-linked-files": "^2.1.40", "gatsby-remark-images": "^3.1.50", @@ -30,7 +30,7 @@ }, "devDependencies": { "@mdx-js/react": "^1.5.7", - "gatsby": "^2.19.45", + "gatsby": "^2.19.46", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index 6c88a96592118..661cedef90160 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.31](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.30...gatsby-theme-blog@1.3.31) (2020-03-18) + +### Bug Fixes + +- update dependency gatsby-plugin-theme-ui ([#22318](https://github.com/gatsbyjs/gatsby/issues/22318)) ([b8167de](https://github.com/gatsbyjs/gatsby/commit/b8167de)) +- update dependency theme-ui ([#22324](https://github.com/gatsbyjs/gatsby/issues/22324)) ([05af9d1](https://github.com/gatsbyjs/gatsby/commit/05af9d1)) + ## [1.3.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.29...gatsby-theme-blog@1.3.30) (2020-03-16) **Note:** Version bump only for package gatsby-theme-blog diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 4cb44fbc9697a..3c9438adcaf7b 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.3.30", + "version": "1.3.31", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -29,7 +29,7 @@ "gatsby-plugin-react-helmet": "^3.1.24", "gatsby-plugin-theme-ui": "^0.2.53", "gatsby-plugin-twitter": "^2.1.21", - "gatsby-theme-blog-core": "^1.2.29", + "gatsby-theme-blog-core": "^1.2.30", "mdx-utils": "0.2.0", "react-helmet": "^5.2.1", "react-switch": "^5.0.1", @@ -39,7 +39,7 @@ "typography-theme-wordpress-2016": "^0.16.19" }, "devDependencies": { - "gatsby": "^2.19.45", + "gatsby": "^2.19.46", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-notes/CHANGELOG.md b/packages/gatsby-theme-notes/CHANGELOG.md index 696d8518b3b66..ed6fdf45bc4d0 100644 --- a/packages/gatsby-theme-notes/CHANGELOG.md +++ b/packages/gatsby-theme-notes/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.28](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.27...gatsby-theme-notes@1.1.28) (2020-03-18) + +### Bug Fixes + +- update dependency gatsby-plugin-theme-ui ([#22318](https://github.com/gatsbyjs/gatsby/issues/22318)) ([b8167de](https://github.com/gatsbyjs/gatsby/commit/b8167de)) +- update dependency theme-ui ([#22324](https://github.com/gatsbyjs/gatsby/issues/22324)) ([05af9d1](https://github.com/gatsbyjs/gatsby/commit/05af9d1)) + ## [1.1.27](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.26...gatsby-theme-notes@1.1.27) (2020-03-16) **Note:** Version bump only for package gatsby-theme-notes diff --git a/packages/gatsby-theme-notes/package.json b/packages/gatsby-theme-notes/package.json index 1117badc63652..382f4a221576c 100644 --- a/packages/gatsby-theme-notes/package.json +++ b/packages/gatsby-theme-notes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-theme-notes", "description": "Gatsby Theme for adding a notes section to your website", - "version": "1.1.27", + "version": "1.1.28", "author": "John Otander", "license": "MIT", "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-theme-notes#readme", "devDependencies": { - "gatsby": "^2.19.45", + "gatsby": "^2.19.46", "react": "^16.12.0", "react-dom": "^16.12.0" }, @@ -39,7 +39,7 @@ "gatsby-core-utils": "^1.0.34", "gatsby-plugin-compile-es6-packages": "^2.1.0", "gatsby-plugin-emotion": "^4.1.25", - "gatsby-plugin-mdx": "^1.0.83", + "gatsby-plugin-mdx": "^1.0.84", "gatsby-plugin-meta-redirect": "^1.1.1", "gatsby-plugin-og-image": "0.0.1", "gatsby-plugin-redirects": "^1.0.0", diff --git a/packages/gatsby-transformer-excel/CHANGELOG.md b/packages/gatsby-transformer-excel/CHANGELOG.md index 9dfd5bceb7fb0..7d40a45d2928e 100644 --- a/packages/gatsby-transformer-excel/CHANGELOG.md +++ b/packages/gatsby-transformer-excel/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.24](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-excel@2.2.23...gatsby-transformer-excel@2.2.24) (2020-03-18) + +### Bug Fixes + +- update dependency xlsx to ^0.15.6 ([#22326](https://github.com/gatsbyjs/gatsby/issues/22326)) ([bdbc980](https://github.com/gatsbyjs/gatsby/commit/bdbc980)) + ## [2.2.23](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-excel@2.2.22...gatsby-transformer-excel@2.2.23) (2020-03-16) **Note:** Version bump only for package gatsby-transformer-excel diff --git a/packages/gatsby-transformer-excel/package.json b/packages/gatsby-transformer-excel/package.json index e713cfa3ffa89..7f4ba12be1c2f 100644 --- a/packages/gatsby-transformer-excel/package.json +++ b/packages/gatsby-transformer-excel/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-transformer-excel", "description": "Gatsby transformer plugin for Excel spreadsheets", - "version": "2.2.23", + "version": "2.2.24", "author": "SheetJS ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-transformer-screenshot/CHANGELOG.md b/packages/gatsby-transformer-screenshot/CHANGELOG.md index c8aadb3956d2c..afe26b0c5c60a 100644 --- a/packages/gatsby-transformer-screenshot/CHANGELOG.md +++ b/packages/gatsby-transformer-screenshot/CHANGELOG.md @@ -3,6 +3,13 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.54](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-screenshot@2.1.53...gatsby-transformer-screenshot@2.1.54) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) +- update minor updates in packages ([#22329](https://github.com/gatsbyjs/gatsby/issues/22329)) ([bfb864b](https://github.com/gatsbyjs/gatsby/commit/bfb864b)) + ## [2.1.53](https://github.com/gatsbyjs/gatsby/compare/gatsby-transformer-screenshot@2.1.52...gatsby-transformer-screenshot@2.1.53) (2020-03-16) **Note:** Version bump only for package gatsby-transformer-screenshot diff --git a/packages/gatsby-transformer-screenshot/package.json b/packages/gatsby-transformer-screenshot/package.json index 4f10cafeda639..970ab72290dec 100644 --- a/packages/gatsby-transformer-screenshot/package.json +++ b/packages/gatsby-transformer-screenshot/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-transformer-screenshot", "description": "Gatsby transformer plugin that uses AWS Lambda to take screenshots of websites", - "version": "2.1.53", + "version": "2.1.54", "author": "David Beckley ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index 97a876fb6b257..0319dbda54466 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,15 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.19.46](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.45...gatsby@2.19.46) (2020-03-18) + +### Bug Fixes + +- update dependency axios to ^0.19.2 ([#22317](https://github.com/gatsbyjs/gatsby/issues/22317)) ([91e780f](https://github.com/gatsbyjs/gatsby/commit/91e780f)) +- update dependency mini-css-extract-plugin ([#22320](https://github.com/gatsbyjs/gatsby/issues/22320)) ([d5c936e](https://github.com/gatsbyjs/gatsby/commit/d5c936e)) +- update dependency webpack-stats-plugin to ^0.3.1 ([#22325](https://github.com/gatsbyjs/gatsby/issues/22325)) ([cc75305](https://github.com/gatsbyjs/gatsby/commit/cc75305)) +- update minor updates in packages ([#22329](https://github.com/gatsbyjs/gatsby/issues/22329)) ([bfb864b](https://github.com/gatsbyjs/gatsby/commit/bfb864b)) + ## [2.19.45](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.44...gatsby@2.19.45) (2020-03-16) **Note:** Version bump only for package gatsby diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 299784246eef4..9c11d2de8c255 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.19.45", + "version": "2.19.46", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" @@ -71,12 +71,12 @@ "flat": "^4.1.0", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.10.11", + "gatsby-cli": "^2.10.12", "gatsby-core-utils": "^1.0.34", - "gatsby-graphiql-explorer": "^0.2.36", + "gatsby-graphiql-explorer": "^0.2.37", "gatsby-link": "^2.2.31", "gatsby-plugin-page-creator": "^2.1.46", - "gatsby-react-router-scroll": "^2.1.24", + "gatsby-react-router-scroll": "^2.1.25", "gatsby-telemetry": "^1.1.56", "glob": "^7.1.6", "got": "8.3.2", From d65fb3c4f42f3b3b4bab26ccc2240962c74ea9e5 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:11:07 -0700 Subject: [PATCH 18/50] fix(gatsby-cli): Fix import (#22388) --- packages/gatsby-cli/src/reporter/loggers/ink/cli.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gatsby-cli/src/reporter/loggers/ink/cli.js b/packages/gatsby-cli/src/reporter/loggers/ink/cli.js index 53e35a55dec3f..221f4200f7b9a 100644 --- a/packages/gatsby-cli/src/reporter/loggers/ink/cli.js +++ b/packages/gatsby-cli/src/reporter/loggers/ink/cli.js @@ -1,6 +1,6 @@ import React from "react" import { Box, Static } from "ink" -import isTTY from "../../../util/is-tty" +import { isTTY } from "../../../util/is-tty" import { trackBuildError } from "gatsby-telemetry" import { Spinner } from "../ink/components/spinner" From c76becb35b1e7e5b9ff3a2629a448eab2fd5d868 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:11:44 -0700 Subject: [PATCH 19/50] chore(release): Publish - gatsby-cli@2.10.13 - gatsby-theme-blog-core@1.2.31 - gatsby-theme-blog@1.3.32 - gatsby-theme-notes@1.1.29 - gatsby@2.19.47 --- packages/gatsby-cli/CHANGELOG.md | 6 ++++++ packages/gatsby-cli/package.json | 2 +- packages/gatsby-theme-blog-core/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog-core/package.json | 4 ++-- packages/gatsby-theme-blog/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog/package.json | 6 +++--- packages/gatsby-theme-notes/CHANGELOG.md | 4 ++++ packages/gatsby-theme-notes/package.json | 4 ++-- packages/gatsby/CHANGELOG.md | 4 ++++ packages/gatsby/package.json | 4 ++-- 10 files changed, 32 insertions(+), 10 deletions(-) diff --git a/packages/gatsby-cli/CHANGELOG.md b/packages/gatsby-cli/CHANGELOG.md index b1323af27b6e4..bc95504a21953 100644 --- a/packages/gatsby-cli/CHANGELOG.md +++ b/packages/gatsby-cli/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.10.13](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.10.12...gatsby-cli@2.10.13) (2020-03-18) + +### Bug Fixes + +- **gatsby-cli:** Fix import ([#22388](https://github.com/gatsbyjs/gatsby/issues/22388)) ([d65fb3c](https://github.com/gatsbyjs/gatsby/commit/d65fb3c)) + ## [2.10.12](https://github.com/gatsbyjs/gatsby/compare/gatsby-cli@2.10.11...gatsby-cli@2.10.12) (2020-03-18) **Note:** Version bump only for package gatsby-cli diff --git a/packages/gatsby-cli/package.json b/packages/gatsby-cli/package.json index 1c50788da6c78..3d2b81f1c62f9 100644 --- a/packages/gatsby-cli/package.json +++ b/packages/gatsby-cli/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-cli", "description": "Gatsby command-line interface for creating new sites and running Gatsby commands", - "version": "2.10.12", + "version": "2.10.13", "author": "Kyle Mathews ", "bin": { "gatsby": "lib/index.js" diff --git a/packages/gatsby-theme-blog-core/CHANGELOG.md b/packages/gatsby-theme-blog-core/CHANGELOG.md index 841762a8ef593..5d8fe7ba895f4 100644 --- a/packages/gatsby-theme-blog-core/CHANGELOG.md +++ b/packages/gatsby-theme-blog-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.31](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.30...gatsby-theme-blog-core@1.2.31) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog-core + ## [1.2.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.29...gatsby-theme-blog-core@1.2.30) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog-core diff --git a/packages/gatsby-theme-blog-core/package.json b/packages/gatsby-theme-blog-core/package.json index 485222ba840ef..c0ef4adc67f05 100644 --- a/packages/gatsby-theme-blog-core/package.json +++ b/packages/gatsby-theme-blog-core/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog-core", - "version": "1.2.30", + "version": "1.2.31", "main": "index.js", "author": "christopherbiscardi (@chrisbiscardi)", "license": "MIT", @@ -30,7 +30,7 @@ }, "devDependencies": { "@mdx-js/react": "^1.5.7", - "gatsby": "^2.19.46", + "gatsby": "^2.19.47", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index 661cedef90160..075229af95fba 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.32](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.31...gatsby-theme-blog@1.3.32) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog + ## [1.3.31](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.30...gatsby-theme-blog@1.3.31) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 3c9438adcaf7b..63045c3024e4b 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.3.31", + "version": "1.3.32", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -29,7 +29,7 @@ "gatsby-plugin-react-helmet": "^3.1.24", "gatsby-plugin-theme-ui": "^0.2.53", "gatsby-plugin-twitter": "^2.1.21", - "gatsby-theme-blog-core": "^1.2.30", + "gatsby-theme-blog-core": "^1.2.31", "mdx-utils": "0.2.0", "react-helmet": "^5.2.1", "react-switch": "^5.0.1", @@ -39,7 +39,7 @@ "typography-theme-wordpress-2016": "^0.16.19" }, "devDependencies": { - "gatsby": "^2.19.46", + "gatsby": "^2.19.47", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-notes/CHANGELOG.md b/packages/gatsby-theme-notes/CHANGELOG.md index ed6fdf45bc4d0..04a25d4ce97aa 100644 --- a/packages/gatsby-theme-notes/CHANGELOG.md +++ b/packages/gatsby-theme-notes/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.28...gatsby-theme-notes@1.1.29) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-notes + ## [1.1.28](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.27...gatsby-theme-notes@1.1.28) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby-theme-notes/package.json b/packages/gatsby-theme-notes/package.json index 382f4a221576c..ad0845b33f102 100644 --- a/packages/gatsby-theme-notes/package.json +++ b/packages/gatsby-theme-notes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-theme-notes", "description": "Gatsby Theme for adding a notes section to your website", - "version": "1.1.28", + "version": "1.1.29", "author": "John Otander", "license": "MIT", "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-theme-notes#readme", "devDependencies": { - "gatsby": "^2.19.46", + "gatsby": "^2.19.47", "react": "^16.12.0", "react-dom": "^16.12.0" }, diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index 0319dbda54466..d55b86d625ceb 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.19.47](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.46...gatsby@2.19.47) (2020-03-18) + +**Note:** Version bump only for package gatsby + ## [2.19.46](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.45...gatsby@2.19.46) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 9c11d2de8c255..85803152fa15c 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.19.46", + "version": "2.19.47", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" @@ -71,7 +71,7 @@ "flat": "^4.1.0", "fs-exists-cached": "1.0.0", "fs-extra": "^8.1.0", - "gatsby-cli": "^2.10.12", + "gatsby-cli": "^2.10.13", "gatsby-core-utils": "^1.0.34", "gatsby-graphiql-explorer": "^0.2.37", "gatsby-link": "^2.2.31", From df7e93d993a0adf5a68dcef4fd2e3f64da45b065 Mon Sep 17 00:00:00 2001 From: Michael Maurer Date: Wed, 18 Mar 2020 18:18:16 -0400 Subject: [PATCH 20/50] fix(gatsby-image): When art-directing images, default the padding aspect ratio to first image without a media query when no media query matches (#21431) * Default to image without a media query when no media queries match window. * update snapshots and change aspect ratio so padding is rational --- .../src/__tests__/__snapshots__/index.js.snap | 14 ++--- packages/gatsby-image/src/__tests__/index.js | 51 +++++++++++++++++-- packages/gatsby-image/src/index.js | 8 +++ 3 files changed, 62 insertions(+), 11 deletions(-) diff --git a/packages/gatsby-image/src/__tests__/__snapshots__/index.js.snap b/packages/gatsby-image/src/__tests__/__snapshots__/index.js.snap index 0936ecb7472dd..5f87b56af2fe4 100644 --- a/packages/gatsby-image/src/__tests__/__snapshots__/index.js.snap +++ b/packages/gatsby-image/src/__tests__/__snapshots__/index.js.snap @@ -176,7 +176,7 @@ exports[` should render multiple fixed image variants 1`] = ` aria-hidden="true" class="placeholder" itemprop="item-prop-for-the-image" - src="other_string_of_base64" + src="string_of_base64" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 1; transition-delay: 500ms; color: red;" title="Title for the image" /> @@ -204,15 +204,15 @@ exports[` should render multiple fixed image variants 1`] = ` height="100" itemprop="item-prop-for-the-image" loading="lazy" - src="test_image_2.jpg" - srcset="some other srcSet" + src="test_image.jpg" + srcset="some srcSet" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0; transition: opacity 500ms;" title="Title for the image" width="100" /> @@ -278,14 +278,14 @@ exports[` should render multiple fluid image variants 1`] = ` itemprop="item-prop-for-the-image" loading="lazy" sizes="(max-width: 600px) 100vw, 600px" - src="test_image_2.jpg" - srcset="some other srcSet" + src="test_image.jpg" + srcset="some srcSet" style="position: absolute; top: 0px; left: 0px; width: 100%; height: 100%; object-fit: cover; object-position: center; opacity: 0; transition: opacity 500ms;" title="Title for the image" /> diff --git a/packages/gatsby-image/src/__tests__/index.js b/packages/gatsby-image/src/__tests__/index.js index c92973fa700fd..34c6e1c13595b 100644 --- a/packages/gatsby-image/src/__tests__/index.js +++ b/packages/gatsby-image/src/__tests__/index.js @@ -33,8 +33,8 @@ const fixedImagesShapeMock = [ base64: `string_of_base64`, }, { - width: 100, - height: 100, + width: 300, + height: 300, src: `test_image_2.jpg`, srcSet: `some other srcSet`, srcSetWebp: `some other srcSetWebp`, @@ -45,7 +45,7 @@ const fixedImagesShapeMock = [ const fluidImagesShapeMock = [ { - aspectRatio: 1.5, + aspectRatio: 2, src: `test_image.jpg`, srcSet: `some srcSet`, srcSetWebp: `some srcSetWebp`, @@ -53,7 +53,7 @@ const fluidImagesShapeMock = [ base64: `string_of_base64`, }, { - aspectRatio: 2, + aspectRatio: 3, src: `test_image_2.jpg`, srcSet: `some other srcSet`, srcSetWebp: `some other srcSetWebp`, @@ -121,6 +121,7 @@ const setupImages = ( describe(``, () => { const OLD_MATCH_MEDIA = window.matchMedia beforeEach(() => { + // None of the media conditions above match. window.matchMedia = jest.fn(media => media === `only screen and (min-width: 1024px)` ? { @@ -280,6 +281,48 @@ describe(``, () => { ) }) + it(`should select the image with no media query as mocked image of fluid variants provided.`, () => { + const { container } = render( + {`Alt + ) + const aspectPreserver = container.querySelector(`div div div`) + expect(aspectPreserver.getAttribute(`style`)).toEqual( + expect.stringMatching(/padding-bottom: 50%/) + ) + }) + + it(`should select the image with no media query as mocked image of fixed variants provided.`, () => { + const { container } = render( + {`Alt + ) + const aspectPreserver = container.querySelector(`div div`) + expect(aspectPreserver.getAttribute(`style`)).toEqual( + expect.stringMatching(/width: 100px; height: 100px;/) + ) + }) + it(`should call onLoad and onError image events`, () => { const onLoadMock = jest.fn() const onErrorMock = jest.fn() diff --git a/packages/gatsby-image/src/index.js b/packages/gatsby-image/src/index.js index 29e45495a1532..d575531bf7f36 100644 --- a/packages/gatsby-image/src/index.js +++ b/packages/gatsby-image/src/index.js @@ -91,6 +91,14 @@ const getCurrentSrcData = currentData => { if (foundMedia !== -1) { return currentData[foundMedia] } + + // No media matches, select first element without a media condition + const noMedia = currentData.findIndex( + image => typeof image.media === `undefined` + ) + if (noMedia !== -1) { + return currentData[noMedia] + } } // Else return the first image. return currentData[0] From ae905c76a85b28eb2d8e8db9bd850bde3a35a683 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:18:55 -0700 Subject: [PATCH 21/50] chore(release): Publish - gatsby-image@2.2.45 - gatsby-theme-blog@1.3.33 --- packages/gatsby-image/CHANGELOG.md | 6 ++++++ packages/gatsby-image/package.json | 2 +- packages/gatsby-theme-blog/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog/package.json | 4 ++-- 4 files changed, 13 insertions(+), 3 deletions(-) diff --git a/packages/gatsby-image/CHANGELOG.md b/packages/gatsby-image/CHANGELOG.md index 00cd7aa4ca6ce..c15be92d798f2 100644 --- a/packages/gatsby-image/CHANGELOG.md +++ b/packages/gatsby-image/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.2.45](https://github.com/gatsbyjs/gatsby/compare/gatsby-image@2.2.44...gatsby-image@2.2.45) (2020-03-18) + +### Bug Fixes + +- **gatsby-image:** When art-directing images, default the padding aspect ratio to first image without a media query when no media query matches ([#21431](https://github.com/gatsbyjs/gatsby/issues/21431)) ([df7e93d](https://github.com/gatsbyjs/gatsby/commit/df7e93d)) + ## [2.2.44](https://github.com/gatsbyjs/gatsby/compare/gatsby-image@2.2.43...gatsby-image@2.2.44) (2020-03-16) **Note:** Version bump only for package gatsby-image diff --git a/packages/gatsby-image/package.json b/packages/gatsby-image/package.json index 549366a3854a1..406c54148b6e9 100644 --- a/packages/gatsby-image/package.json +++ b/packages/gatsby-image/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-image", "description": "Lazy-loading React image component with optional support for the blur-up effect.", - "version": "2.2.44", + "version": "2.2.45", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index 075229af95fba..b1062c2de4720 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.33](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.32...gatsby-theme-blog@1.3.33) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog + ## [1.3.32](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.31...gatsby-theme-blog@1.3.32) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 63045c3024e4b..0e5ae6c9c4e70 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.3.32", + "version": "1.3.33", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -23,7 +23,7 @@ "@theme-ui/prism": "^0.2.50", "@theme-ui/typography": "^0.2.46", "deepmerge": "^4.2.2", - "gatsby-image": "^2.2.44", + "gatsby-image": "^2.2.45", "gatsby-plugin-emotion": "^4.1.25", "gatsby-plugin-feed": "^2.3.29", "gatsby-plugin-react-helmet": "^3.1.24", From f7efc1038ea270c13d84f839699d1f74f4cd6263 Mon Sep 17 00:00:00 2001 From: Jacob Neterer <32587255+jneterer@users.noreply.github.com> Date: Wed, 18 Mar 2020 18:26:33 -0400 Subject: [PATCH 22/50] chore(starter): Add Userbase to starter (#21947) * Adding a Userbase starter with TailwindCSS, SCSS, and Typescript. Also a new category for Userbase. * Updating features for Userbase Gatsby Starter * Listing correct feature description for the Userbase Gatsby Starter * Removing Userbase from the categories.yml file and my starter tags * chore: format Co-authored-by: gatsbybot --- docs/starters.yml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 455357633ae09..70624bdaae837 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5491,6 +5491,22 @@ - Side Drawer - Sidebar - Navbar +- url: https://userbase-gatsby-starter.jacobneterer.com + repo: https://github.com/jneterer/userbase-gatsby-starter + description: Another TODO app - a Gatsby starter for Userbase, TailwindCSS, SCSS, and Typescript. + tags: + - Styling:Tailwind + - Styling:SCSS + - Language:TypeScript + - Authentication + - Netlify + - SEO + features: + - Userbase for authentication and end-to-end encrypted data management + - All user and data APIs + - Tailwind CSS and SCSS for styling + - Typescript for easier debugging and development, strict types, etc + - Netlify for hosting - url: https://gatsby-simple-blog-with-asciidoctor-demo.netlify.com repo: https://github.com/hitsuji-no-shippo/gatsby-simple-blog-with-asciidoctor description: A Gatsby blog with Asciidoctor. Forked from thundermiracle/gatsby-simple-blog. From 756d3868e62ec06d8c870c9eafb12e9ef58faa5f Mon Sep 17 00:00:00 2001 From: "Jonathan Giroux (Koltes)" Date: Wed, 18 Mar 2020 23:30:43 +0100 Subject: [PATCH 23/50] feat(gatsby-source-filesystem): Unify publicURL (#22328) --- packages/gatsby-source-filesystem/src/extend-file-node.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gatsby-source-filesystem/src/extend-file-node.js b/packages/gatsby-source-filesystem/src/extend-file-node.js index d3290f96519ae..e381393caaee9 100644 --- a/packages/gatsby-source-filesystem/src/extend-file-node.js +++ b/packages/gatsby-source-filesystem/src/extend-file-node.js @@ -14,7 +14,7 @@ module.exports = ({ type, getNodeAndSavePathDependency, pathPrefix = `` }) => { description: `Copy file to static directory and return public url to it`, resolve: (file, fieldArgs, context) => { const details = getNodeAndSavePathDependency(file.id, context.path) - const fileName = `${file.name}-${file.internal.contentDigest}${details.ext}` + const fileName = `${file.internal.contentDigest}/${details.base}` const publicPath = path.join( process.cwd(), From 69ee9e32220b44d6dd52d316a7a9218ae727100d Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 19 Mar 2020 08:31:12 +1000 Subject: [PATCH 24/50] =?UTF-8?q?chore(starters):=20=F0=9F=94=92=20Fix=20m?= =?UTF-8?q?issing=20HTTPS=20on=20Wikipedia=20links=20(#22298)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- benchmarks/markdown_id/content/blog/hello-world/index.md | 2 +- benchmarks/markdown_id/content/blog/my-second-post/index.md | 2 +- benchmarks/markdown_slug/content/blog/hello-world/index.md | 2 +- benchmarks/markdown_slug/content/blog/my-second-post/index.md | 2 +- starters/blog/content/blog/hello-world/index.md | 2 +- starters/blog/content/blog/my-second-post/index.md | 2 +- .../content/posts/my-second-post.mdx | 2 +- .../gatsby-starter-blog-theme/content/posts/my-second-post.mdx | 2 +- 8 files changed, 8 insertions(+), 8 deletions(-) diff --git a/benchmarks/markdown_id/content/blog/hello-world/index.md b/benchmarks/markdown_id/content/blog/hello-world/index.md index 0dc2e0b77d18a..fcd815cfab484 100644 --- a/benchmarks/markdown_id/content/blog/hello-world/index.md +++ b/benchmarks/markdown_id/content/blog/hello-world/index.md @@ -9,7 +9,7 @@ This is my first post on my new fake blog! How exciting! I'm sure I'll write a lot more interesting things in the future. Oh, and here's a great quote from this Wikipedia on -[salted duck eggs](http://en.wikipedia.org/wiki/Salted_duck_egg). +[salted duck eggs](https://en.wikipedia.org/wiki/Salted_duck_egg). > A salted duck egg is a Chinese preserved food product made by soaking duck > eggs in brine, or packing each egg in damp, salted charcoal. In Asian diff --git a/benchmarks/markdown_id/content/blog/my-second-post/index.md b/benchmarks/markdown_id/content/blog/my-second-post/index.md index d19e92dc87f6d..196dc57b51ac1 100644 --- a/benchmarks/markdown_id/content/blog/my-second-post/index.md +++ b/benchmarks/markdown_id/content/blog/my-second-post/index.md @@ -8,6 +8,6 @@ Wow! I love blogging so much already. Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? -([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) +([Wikipedia Link](https://en.wikipedia.org/wiki/Salted_duck_egg)) Yeah, I didn't either. diff --git a/benchmarks/markdown_slug/content/blog/hello-world/index.md b/benchmarks/markdown_slug/content/blog/hello-world/index.md index 0dc2e0b77d18a..fcd815cfab484 100644 --- a/benchmarks/markdown_slug/content/blog/hello-world/index.md +++ b/benchmarks/markdown_slug/content/blog/hello-world/index.md @@ -9,7 +9,7 @@ This is my first post on my new fake blog! How exciting! I'm sure I'll write a lot more interesting things in the future. Oh, and here's a great quote from this Wikipedia on -[salted duck eggs](http://en.wikipedia.org/wiki/Salted_duck_egg). +[salted duck eggs](https://en.wikipedia.org/wiki/Salted_duck_egg). > A salted duck egg is a Chinese preserved food product made by soaking duck > eggs in brine, or packing each egg in damp, salted charcoal. In Asian diff --git a/benchmarks/markdown_slug/content/blog/my-second-post/index.md b/benchmarks/markdown_slug/content/blog/my-second-post/index.md index d19e92dc87f6d..196dc57b51ac1 100644 --- a/benchmarks/markdown_slug/content/blog/my-second-post/index.md +++ b/benchmarks/markdown_slug/content/blog/my-second-post/index.md @@ -8,6 +8,6 @@ Wow! I love blogging so much already. Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? -([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) +([Wikipedia Link](https://en.wikipedia.org/wiki/Salted_duck_egg)) Yeah, I didn't either. diff --git a/starters/blog/content/blog/hello-world/index.md b/starters/blog/content/blog/hello-world/index.md index 0dc2e0b77d18a..fcd815cfab484 100644 --- a/starters/blog/content/blog/hello-world/index.md +++ b/starters/blog/content/blog/hello-world/index.md @@ -9,7 +9,7 @@ This is my first post on my new fake blog! How exciting! I'm sure I'll write a lot more interesting things in the future. Oh, and here's a great quote from this Wikipedia on -[salted duck eggs](http://en.wikipedia.org/wiki/Salted_duck_egg). +[salted duck eggs](https://en.wikipedia.org/wiki/Salted_duck_egg). > A salted duck egg is a Chinese preserved food product made by soaking duck > eggs in brine, or packing each egg in damp, salted charcoal. In Asian diff --git a/starters/blog/content/blog/my-second-post/index.md b/starters/blog/content/blog/my-second-post/index.md index d19e92dc87f6d..196dc57b51ac1 100644 --- a/starters/blog/content/blog/my-second-post/index.md +++ b/starters/blog/content/blog/my-second-post/index.md @@ -8,6 +8,6 @@ Wow! I love blogging so much already. Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? -([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) +([Wikipedia Link](https://en.wikipedia.org/wiki/Salted_duck_egg)) Yeah, I didn't either. diff --git a/starters/gatsby-starter-blog-theme-core/content/posts/my-second-post.mdx b/starters/gatsby-starter-blog-theme-core/content/posts/my-second-post.mdx index 6daf88c601ab5..d3371450c262c 100644 --- a/starters/gatsby-starter-blog-theme-core/content/posts/my-second-post.mdx +++ b/starters/gatsby-starter-blog-theme-core/content/posts/my-second-post.mdx @@ -5,6 +5,6 @@ date: 2019-05-15 Wow! I love blogging so much already. -Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? ([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) +Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? ([Wikipedia Link](https://en.wikipedia.org/wiki/Salted_duck_egg)) Yeah, I didn't either. diff --git a/starters/gatsby-starter-blog-theme/content/posts/my-second-post.mdx b/starters/gatsby-starter-blog-theme/content/posts/my-second-post.mdx index 6daf88c601ab5..d3371450c262c 100644 --- a/starters/gatsby-starter-blog-theme/content/posts/my-second-post.mdx +++ b/starters/gatsby-starter-blog-theme/content/posts/my-second-post.mdx @@ -5,6 +5,6 @@ date: 2019-05-15 Wow! I love blogging so much already. -Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? ([Wikipedia Link](http://en.wikipedia.org/wiki/Salted_duck_egg)) +Did you know that "despite its name, salted duck eggs can also be made from chicken eggs, though the taste and texture will be somewhat different, and the egg yolk will be less rich."? ([Wikipedia Link](https://en.wikipedia.org/wiki/Salted_duck_egg)) Yeah, I didn't either. From e325a734cefc736209ca7d870df354fd04da76f1 Mon Sep 17 00:00:00 2001 From: Teik Jun <46853051+teikjun@users.noreply.github.com> Date: Thu, 19 Mar 2020 06:40:30 +0800 Subject: [PATCH 25/50] chore(docs): Update version numbers in tutorial (#22291) * chore(docs): Update version numbers The documentation in tutorial does not use the latest version number of nvm and node, but it says that it is the latest version. * Update index.md * Revert every change except on line 155 * Correct mistakes --- docs/tutorial/part-zero/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/tutorial/part-zero/index.md b/docs/tutorial/part-zero/index.md index 9c3b92442f6b7..05b92a2e5f54c 100644 --- a/docs/tutorial/part-zero/index.md +++ b/docs/tutorial/part-zero/index.md @@ -152,7 +152,7 @@ nvm --version #### Set default Node.js version -When nvm is installed, it does not default to a particular node version. You’ll need to install the version you want and give nvm instructions to use it. This example uses the latest release of version 10, but more recent version numbers can be used instead. +When nvm is installed, it does not default to a particular node version. You’ll need to install the version you want and give nvm instructions to use it. This example uses the version 10 release, but more recent version numbers can be used instead. ```shell nvm install 10 From 5000de8c00d1a094ddb1337ee53f0cd7db99cf2e Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 19 Mar 2020 08:41:16 +1000 Subject: [PATCH 26/50] chore(docs): remove whitespace before commas (#22286) --- .../index.md | 2 +- docs/blog/2019-08-02-what-is-jsx-pragma/index.md | 2 +- .../index.md | 2 +- docs/docs/recipes/working-with-themes.md | 2 +- docs/docs/sourcing-from-buttercms.md | 2 +- docs/starters.yml | 2 +- www/src/pages/guidelines/typography.js | 2 +- 7 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/blog/2018-2-27-why-i-upgraded-my-website-to-gatsbyjs-from-jekyll/index.md b/docs/blog/2018-2-27-why-i-upgraded-my-website-to-gatsbyjs-from-jekyll/index.md index ffc1bd8d5823e..1b2570636fcd4 100644 --- a/docs/blog/2018-2-27-why-i-upgraded-my-website-to-gatsbyjs-from-jekyll/index.md +++ b/docs/blog/2018-2-27-why-i-upgraded-my-website-to-gatsbyjs-from-jekyll/index.md @@ -100,7 +100,7 @@ Because of the APIs exposed by Gatsby for interfacing with its internals, powerf The [Node.js APIs](/docs/node-apis/) let plugins extend or modify the heavy lifting performed by the Node.js process when compiling the application. Your gatsby-node.js file can export functions which modify the GraphQL data that is provided to React components when they are rendered. The APIs are also used by plugins to extend the internals of Gatsby e.g. the default webpack config can also be customized here. -Take the example of what happens during the processing of markdown files into pages. The [gatsby-source-filesystem](/packages/gatsby-source-filesystem) plugin scans directories and from files it finds, creates File nodes. These File nodes are then processed by [gatsby-transformer-remark](https://github.com/gatsbyjs/gatsby/tree/a3fea82b4d4b4c644156e841401821933e8d694a/packages/gatsby-transformer-remark) , parsing the markup into HTML with the [Remark](https://remark.js.org/) markdown processor. +Take the example of what happens during the processing of markdown files into pages. The [gatsby-source-filesystem](/packages/gatsby-source-filesystem) plugin scans directories and from files it finds, creates File nodes. These File nodes are then processed by [gatsby-transformer-remark](https://github.com/gatsbyjs/gatsby/tree/a3fea82b4d4b4c644156e841401821933e8d694a/packages/gatsby-transformer-remark), parsing the markup into HTML with the [Remark](https://remark.js.org/) markdown processor. #### Server-side Rendering APIs diff --git a/docs/blog/2019-08-02-what-is-jsx-pragma/index.md b/docs/blog/2019-08-02-what-is-jsx-pragma/index.md index c2be77c5247c0..01c710b1e9773 100644 --- a/docs/blog/2019-08-02-what-is-jsx-pragma/index.md +++ b/docs/blog/2019-08-02-what-is-jsx-pragma/index.md @@ -8,7 +8,7 @@ tags: - theme-ui --- -If you’re looking into using [Theme UI](https://theme-ui.com/) , you’ll come across some (potentially) unfamiliar looking syntax: +If you’re looking into using [Theme UI](https://theme-ui.com/), you’ll come across some (potentially) unfamiliar looking syntax: ```jsx /** @jsx jsx */ diff --git a/docs/blog/2019-12-12-how-we-accidentally-launched-a-popular-gatsby-plugin/index.md b/docs/blog/2019-12-12-how-we-accidentally-launched-a-popular-gatsby-plugin/index.md index affa0336da04e..5295517b7aee3 100644 --- a/docs/blog/2019-12-12-how-we-accidentally-launched-a-popular-gatsby-plugin/index.md +++ b/docs/blog/2019-12-12-how-we-accidentally-launched-a-popular-gatsby-plugin/index.md @@ -60,7 +60,7 @@ I noticed there were some more downsides to Amplify: - Gatsby allows you to have [routes that only exist on the client side](/docs/building-apps-with-gatsby/#client-only-routes--user-authentication). -- Essentially, you declare a starting point — say for example: /users/, and anything past that starting point will get picked up by the client side. Once the client navigates to /users/1, it will dynamically fetch that user from some sort of API. This is great and allows for very hybrid, partially static, partially dynamic applications. However, when people directly navigate to /users/1 , they will get a 404 because it simply does not exist on the serverside, which is kind of an issue. +- Essentially, you declare a starting point — say for example: /users/, and anything past that starting point will get picked up by the client side. Once the client navigates to /users/1, it will dynamically fetch that user from some sort of API. This is great and allows for very hybrid, partially static, partially dynamic applications. However, when people directly navigate to /users/1, they will get a 404 because it simply does not exist on the serverside, which is kind of an issue. - We already had a CI service ourselves, and weren’t really interested in learning all these Amplify-specific things that we already had working ourselves just fine. diff --git a/docs/docs/recipes/working-with-themes.md b/docs/docs/recipes/working-with-themes.md index 117b811fa1aeb..c8866e11b3170 100644 --- a/docs/docs/recipes/working-with-themes.md +++ b/docs/docs/recipes/working-with-themes.md @@ -55,7 +55,7 @@ module.exports = { } ``` -4. Run `gatsby develop` , the theme should be available at `http://localhost:8000/{basePath}` +4. Run `gatsby develop`, the theme should be available at `http://localhost:8000/{basePath}` > To learn how to further customize a theme, check out the available paths on [Gatsby-theme-blog Documentation](https://www.npmjs.com/package/gatsby-theme-blog). diff --git a/docs/docs/sourcing-from-buttercms.md b/docs/docs/sourcing-from-buttercms.md index 24516aa184c8b..d024d342648d5 100644 --- a/docs/docs/sourcing-from-buttercms.md +++ b/docs/docs/sourcing-from-buttercms.md @@ -45,7 +45,7 @@ Run this in your terminal: ### Adding configuration Here you'll specify the config that will be needed to pull down data from ButterCMS. -Make sure to add your **API_TOKEN** from your dashboard. In this guide you will be creating `faq_items`, `faq_headline`, `homepage` , `customer_case_study` as stated in the config below. Do well to change it if you named it something differently. +Make sure to add your **API_TOKEN** from your dashboard. In this guide you will be creating `faq_items`, `faq_headline`, `homepage`, `customer_case_study` as stated in the config below. Do well to change it if you named it something differently. ```javascript:title=gatsby-config.js module.exports = { diff --git a/docs/starters.yml b/docs/starters.yml index 70624bdaae837..303dc2ea6abdb 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -3541,7 +3541,7 @@ - Netlify Dev for local development - url: https://gatsby-starter-blog-and-portfolio.netlify.com/ repo: https://github.com/alisalahio/gatsby-starter-blog-and-portfolio - description: Just gatsby-starter-blog , with portfolio section added + description: Just gatsby-starter-blog, with portfolio section added tags: - Blog - Portfolio diff --git a/www/src/pages/guidelines/typography.js b/www/src/pages/guidelines/typography.js index afdbf19598e2f..f289d99f43d9c 100755 --- a/www/src/pages/guidelines/typography.js +++ b/www/src/pages/guidelines/typography.js @@ -468,7 +468,7 @@ const Typography = ({ location }) => ( - Enjoy the power of the latest web technologies – React.js , Webpack + Enjoy the power of the latest web technologies – React.js, Webpack , modern JavaScript and CSS and more — all set up and waiting for you to start building. From 67b00128d08af05c753aa851cca33aa668208caa Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:43:28 -0700 Subject: [PATCH 27/50] Clarify that onRouteUpdate is called on the initial load of the app (#22228) --- packages/gatsby/src/utils/api-browser-docs.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/gatsby/src/utils/api-browser-docs.js b/packages/gatsby/src/utils/api-browser-docs.js index 1ad42c63d918c..d9196a80578ef 100644 --- a/packages/gatsby/src/utils/api-browser-docs.js +++ b/packages/gatsby/src/utils/api-browser-docs.js @@ -59,7 +59,7 @@ exports.onPreRouteUpdate = true exports.onRouteUpdateDelayed = true /** - * Called when the user changes routes + * Called when the user changes routes, including on the initial load of the app * @param {object} $0 * @param {object} $0.location A location object * @param {object|null} $0.prevLocation The previous location object From 81931cb6d4cada4f97561cd996b24c63b64b93ab Mon Sep 17 00:00:00 2001 From: John Bampton Date: Thu, 19 Mar 2020 08:46:43 +1000 Subject: [PATCH 28/50] Standardize urls in sites.yml by removing quotes. (#22223) Following the style used at https://yaml.org/ and also in starters.yml. --- docs/sites.yml | 1916 ++++++++++++++++++++++++------------------------ 1 file changed, 958 insertions(+), 958 deletions(-) diff --git a/docs/sites.yml b/docs/sites.yml index 2581e712f331f..6b1b402086828 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -1,7 +1,7 @@ - title: ReactJS - main_url: "https://reactjs.org/" - url: "https://reactjs.org/" - source_url: "https://github.com/reactjs/reactjs.org" + main_url: https://reactjs.org/ + url: https://reactjs.org/ + source_url: https://github.com/reactjs/reactjs.org featured: true categories: - Web Development @@ -32,16 +32,16 @@ description: > Creative engineers and data scientists building a world where you can belong anywhere - main_url: "https://airbnb.io/" - url: "https://airbnb.io/" + main_url: https://airbnb.io/ + url: https://airbnb.io/ categories: - Blog - Gallery - Featured featured: true - title: Impossible Foods - main_url: "https://impossiblefoods.com/" - url: "https://impossiblefoods.com/" + main_url: https://impossiblefoods.com/ + url: https://impossiblefoods.com/ categories: - Food - Featured @@ -49,15 +49,15 @@ - title: Braun description: > Braun offers high performance hair removal and hair care products, including dryers, straighteners, shavers, and more. - main_url: "https://ca.braun.com/en-ca" - url: "https://ca.braun.com/en-ca" + main_url: https://ca.braun.com/en-ca + url: https://ca.braun.com/en-ca categories: - eCommerce - Featured featured: true - title: NYC Pride 2019 | WorldPride NYC | Stonewall50 - main_url: "https://2019-worldpride-stonewall50.nycpride.org/" - url: "https://2019-worldpride-stonewall50.nycpride.org/" + main_url: https://2019-worldpride-stonewall50.nycpride.org/ + url: https://2019-worldpride-stonewall50.nycpride.org/ featured: true description: >- Join us in 2019 for NYC Pride, as we welcome WorldPride and mark the 50th @@ -69,21 +69,21 @@ - Nonprofit - Featured built_by: Canvas United - built_by_url: "https://www.canvasunited.com/" + built_by_url: https://www.canvasunited.com/ - title: The State of European Tech - main_url: "https://2017.stateofeuropeantech.com/" - url: "https://2017.stateofeuropeantech.com/" + main_url: https://2017.stateofeuropeantech.com/ + url: https://2017.stateofeuropeantech.com/ featured: true categories: - Technology - Featured built_by: Studio Lovelock - built_by_url: "http://www.studiolovelock.com/" + built_by_url: http://www.studiolovelock.com/ - title: Hopper - main_url: "https://www.hopper.com/" - url: "https://www.hopper.com/" + main_url: https://www.hopper.com/ + url: https://www.hopper.com/ built_by: Narative - built_by_url: "https://www.narative.co/" + built_by_url: https://www.narative.co/ featured: true categories: - Technology @@ -92,25 +92,25 @@ - title: GM Capital One description: | Introducing the new online experience for your GM Rewards Credit Card - main_url: "https://gm.capitalone.com/" - url: "https://gm.capitalone.com/" + main_url: https://gm.capitalone.com/ + url: https://gm.capitalone.com/ categories: - Featured featured: true - title: Theodora Warre - main_url: "https://theodorawarre.eu" - url: "https://theodorawarre.eu" + main_url: https://theodorawarre.eu + url: https://theodorawarre.eu description: >- E-commerce site for jewellery designer Theodora Warre, built using Gatsby + Shopify + Prismic + Matter.js categories: - eCommerce - Marketing built_by: Pierre Nel - built_by_url: "https://pierre.io" + built_by_url: https://pierre.io featured: false - title: Life Without Barriers | Foster Care - main_url: "https://www.lwb.org.au/foster-care" - url: "https://www.lwb.org.au/foster-care" + main_url: https://www.lwb.org.au/foster-care + url: https://www.lwb.org.au/foster-care featured: true description: >- We are urgently seeking foster carers all across Australia. Can you open @@ -123,20 +123,20 @@ - Marketing - Featured built_by: LWB Digital Team - built_by_url: "https://twitter.com/LWBAustralia" + built_by_url: https://twitter.com/LWBAustralia - title: Figma - main_url: "https://www.figma.com/" - url: "https://www.figma.com/" + main_url: https://www.figma.com/ + url: https://www.figma.com/ featured: true categories: - Marketing - Design - Featured built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: Bejamas - JAM Experts for hire - main_url: "https://bejamas.io/" - url: "https://bejamas.io/" + main_url: https://bejamas.io/ + url: https://bejamas.io/ featured: true description: >- We help agencies and companies with JAMStack tools. This includes web @@ -149,25 +149,25 @@ - Marketing - Featured built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ - title: The State of JavaScript description: > Data from over 20,000 developers, asking them questions on topics ranging from frontend frameworks and state management, to build tools and testing libraries. - main_url: "https://stateofjs.com/" - url: "https://stateofjs.com/" - source_url: "https://github.com/StateOfJS/StateOfJS" + main_url: https://stateofjs.com/ + url: https://stateofjs.com/ + source_url: https://github.com/StateOfJS/StateOfJS categories: - Data - JavaScript - Featured built_by: StateOfJS - built_by_url: "https://github.com/StateOfJS/StateOfJS/graphs/contributors" + built_by_url: https://github.com/StateOfJS/StateOfJS/graphs/contributors featured: true - title: DesignSystems.com - main_url: "https://www.designsystems.com/" - url: "https://www.designsystems.com/" + main_url: https://www.designsystems.com/ + url: https://www.designsystems.com/ description: | A resource for learning, creating and evangelizing design systems. categories: @@ -176,11 +176,11 @@ - Technology - Featured built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ featured: true - title: Snap Kit - main_url: "https://kit.snapchat.com/" - url: "https://kit.snapchat.com/" + main_url: https://kit.snapchat.com/ + url: https://kit.snapchat.com/ description: > Snap Kit lets developers integrate some of Snapchat’s best features across platforms. @@ -190,8 +190,8 @@ - Featured featured: true - title: SendGrid - main_url: "https://sendgrid.com/docs/" - url: "https://sendgrid.com/docs/" + main_url: https://sendgrid.com/docs/ + url: https://sendgrid.com/docs/ description: > SendGrid delivers your transactional and marketing emails through the world's largest cloud-based email delivery platform. @@ -202,8 +202,8 @@ - Featured featured: true - title: Kirsten Noelle - main_url: "https://www.kirstennoelle.com/" - url: "https://www.kirstennoelle.com/" + main_url: https://www.kirstennoelle.com/ + url: https://www.kirstennoelle.com/ featured: true description: > Digital portfolio for San Francisco Bay Area photographer Kirsten Noelle Wiemer. @@ -212,25 +212,25 @@ - Portfolio - Featured built_by: Ryan Wiemer - built_by_url: "https://www.ryanwiemer.com/" + built_by_url: https://www.ryanwiemer.com/ - title: Cajun Bowfishing - main_url: "https://cajunbowfishing.com/" - url: "https://cajunbowfishing.com/" + main_url: https://cajunbowfishing.com/ + url: https://cajunbowfishing.com/ featured: false categories: - eCommerce - Sports built_by: Escalade Sports - built_by_url: "https://www.escaladesports.com/" + built_by_url: https://www.escaladesports.com/ - title: NEON - main_url: "http://neonrated.com/" - url: "http://neonrated.com/" + main_url: http://neonrated.com/ + url: http://neonrated.com/ featured: false categories: - Gallery - title: GraphCMS - main_url: "https://graphcms.com/" - url: "https://graphcms.com/" + main_url: https://graphcms.com/ + url: https://graphcms.com/ featured: false categories: - Marketing @@ -238,7 +238,7 @@ - title: Ghost Documentation main_url: https://docs.ghost.org/ url: https://docs.ghost.org/ - source_url: "https://github.com/tryghost/docs" + source_url: https://github.com/tryghost/docs featured: false description: >- Ghost is an open source, professional publishing platform built on a modern Node.js technology stack — designed for teams who need power, flexibility and performance. @@ -249,38 +249,38 @@ built_by: Ghost Foundation built_by_url: https://ghost.org/ - title: Nike - Just Do It - main_url: "https://justdoit.nike.com/" - url: "https://justdoit.nike.com/" + main_url: https://justdoit.nike.com/ + url: https://justdoit.nike.com/ featured: true categories: - eCommerce - Featured - title: AirBnB Cereal - main_url: "https://airbnb.design/cereal" - url: "https://airbnb.design/cereal" + main_url: https://airbnb.design/cereal + url: https://airbnb.design/cereal featured: false categories: - Marketing - Design - title: Cardiogram - main_url: "https://cardiogr.am/" - url: "https://cardiogr.am/" + main_url: https://cardiogr.am/ + url: https://cardiogr.am/ featured: false categories: - Marketing - Technology - title: Hack Club - main_url: "https://hackclub.com/" - url: "https://hackclub.com/" - source_url: "https://github.com/hackclub/site" + main_url: https://hackclub.com/ + url: https://hackclub.com/ + source_url: https://github.com/hackclub/site featured: false categories: - Education - Web Development - title: Matthias Jordan Portfolio - main_url: "https://iammatthias.com/" - url: "https://iammatthias.com/" - source_url: "https://github.com/iammatthias/.com" + main_url: https://iammatthias.com/ + url: https://iammatthias.com/ + source_url: https://github.com/iammatthias/.com description: >- Photography portfolio of content creator and digital marketer Matthias Jordan built_by: Matthias Jordan @@ -292,90 +292,90 @@ - Blog - Gallery - title: Investment Calculator - main_url: "https://investmentcalculator.io/" - url: "https://investmentcalculator.io/" + main_url: https://investmentcalculator.io/ + url: https://investmentcalculator.io/ featured: false categories: - Education - Finance - title: CSS Grid Playground by MozillaDev - main_url: "https://mozilladevelopers.github.io/playground/" - url: "https://mozilladevelopers.github.io/playground/" - source_url: "https://github.com/MozillaDevelopers/playground" + main_url: https://mozilladevelopers.github.io/playground/ + url: https://mozilladevelopers.github.io/playground/ + source_url: https://github.com/MozillaDevelopers/playground featured: false categories: - Education - Web Development - title: Piotr Fedorczyk Portfolio built_by: Piotr Fedorczyk - built_by_url: "https://piotrf.pl" + built_by_url: https://piotrf.pl categories: - Portfolio - Web Development description: >- Portfolio of Piotr Fedorczyk, a digital product designer and full-stack developer specializing in shaping, designing and building news and tools for news. featured: false - main_url: "https://piotrf.pl/" - url: "https://piotrf.pl/" + main_url: https://piotrf.pl/ + url: https://piotrf.pl/ - title: unrealcpp - main_url: "https://unrealcpp.com/" - url: "https://unrealcpp.com/" - source_url: "https://github.com/Harrison1/unrealcpp-com" + main_url: https://unrealcpp.com/ + url: https://unrealcpp.com/ + source_url: https://github.com/Harrison1/unrealcpp-com featured: false categories: - Blog - Web Development - title: Andy Slezak - main_url: "https://www.aslezak.com/" - url: "https://www.aslezak.com/" - source_url: "https://github.com/amslezak" + main_url: https://www.aslezak.com/ + url: https://www.aslezak.com/ + source_url: https://github.com/amslezak featured: false categories: - Web Development - Portfolio - title: Deliveroo.Design - main_url: "https://www.deliveroo.design/" - url: "https://www.deliveroo.design/" + main_url: https://www.deliveroo.design/ + url: https://www.deliveroo.design/ featured: false categories: - Food - Marketing - title: Dona Rita - main_url: "https://www.donarita.co.uk/" - url: "https://www.donarita.co.uk/" - source_url: "https://github.com/peduarte/dona-rita-website" + main_url: https://www.donarita.co.uk/ + url: https://www.donarita.co.uk/ + source_url: https://github.com/peduarte/dona-rita-website featured: false categories: - Food - Marketing - title: Fröhlich ∧ Frei - main_url: "https://www.froehlichundfrei.de/" - url: "https://www.froehlichundfrei.de/" + main_url: https://www.froehlichundfrei.de/ + url: https://www.froehlichundfrei.de/ featured: false categories: - Web Development - Blog - Open Source - title: How to GraphQL - main_url: "https://www.howtographql.com/" - url: "https://www.howtographql.com/" - source_url: "https://github.com/howtographql/howtographql" + main_url: https://www.howtographql.com/ + url: https://www.howtographql.com/ + source_url: https://github.com/howtographql/howtographql featured: false categories: - Documentation - Web Development - Open Source - title: OnCallogy - main_url: "https://www.oncallogy.com/" - url: "https://www.oncallogy.com/" + main_url: https://www.oncallogy.com/ + url: https://www.oncallogy.com/ featured: false categories: - Marketing - Healthcare - title: Ryan Wiemer's Portfolio - main_url: "https://www.ryanwiemer.com/" - url: "https://www.ryanwiemer.com/knw-photography/" - source_url: "https://github.com/ryanwiemer/rw" + main_url: https://www.ryanwiemer.com/ + url: https://www.ryanwiemer.com/knw-photography/ + source_url: https://github.com/ryanwiemer/rw featured: false description: > Digital portfolio for Oakland, CA based account manager Ryan Wiemer. @@ -384,10 +384,10 @@ - Web Development - Design built_by: Ryan Wiemer - built_by_url: "https://www.ryanwiemer.com/" + built_by_url: https://www.ryanwiemer.com/ - title: Ventura Digitalagentur Köln - main_url: "https://www.ventura-digital.de/" - url: "https://www.ventura-digital.de/" + main_url: https://www.ventura-digital.de/ + url: https://www.ventura-digital.de/ featured: false built_by: Ventura Digitalagentur categories: @@ -395,39 +395,39 @@ - Marketing - Featured - title: Azer Koçulu - main_url: "https://kodfabrik.com/" - url: "https://kodfabrik.com/photography/" + main_url: https://kodfabrik.com/ + url: https://kodfabrik.com/photography/ featured: false categories: - Portfolio - Photography - Web Development - title: Damir.io - main_url: "http://damir.io/" - url: "http://damir.io/" - source_url: "https://github.com/dvzrd/gatsby-sfiction" + main_url: http://damir.io/ + url: http://damir.io/ + source_url: https://github.com/dvzrd/gatsby-sfiction featured: false categories: - Blog - title: Digital Psychology - main_url: "http://digitalpsychology.io/" - url: "http://digitalpsychology.io/" - source_url: "https://github.com/danistefanovic/digitalpsychology.io" + main_url: http://digitalpsychology.io/ + url: http://digitalpsychology.io/ + source_url: https://github.com/danistefanovic/digitalpsychology.io featured: false categories: - Education - Library - title: Théâtres Parisiens - main_url: "http://theatres-parisiens.fr/" - url: "http://theatres-parisiens.fr/" - source_url: "https://github.com/phacks/theatres-parisiens" + main_url: http://theatres-parisiens.fr/ + url: http://theatres-parisiens.fr/ + source_url: https://github.com/phacks/theatres-parisiens featured: false categories: - Education - Entertainment - title: William Owen UK Portfolio / Blog - main_url: "http://william-owen.co.uk/" - url: "http://william-owen.co.uk/" + main_url: http://william-owen.co.uk/ + url: http://william-owen.co.uk/ featured: false description: >- Over 20 years experience delivering customer-facing websites, internet-based @@ -437,24 +437,24 @@ - Portfolio - Blog built_by: William Owen - built_by_url: "https://twitter.com/twilowen" + built_by_url: https://twitter.com/twilowen - title: A4 纸网 - main_url: "http://www.a4z.cn/" - url: "http://www.a4z.cn/price" - source_url: "https://github.com/hiooyUI/hiooyui.github.io" + main_url: http://www.a4z.cn/ + url: http://www.a4z.cn/price + source_url: https://github.com/hiooyUI/hiooyui.github.io featured: false categories: - eCommerce - title: Steve Meredith's Portfolio - main_url: "http://www.stevemeredith.com/" - url: "http://www.stevemeredith.com/" + main_url: http://www.stevemeredith.com/ + url: http://www.stevemeredith.com/ featured: false categories: - Portfolio - title: API Platform - main_url: "https://api-platform.com/" - url: "https://api-platform.com/" - source_url: "https://github.com/api-platform/website" + main_url: https://api-platform.com/ + url: https://api-platform.com/ + source_url: https://github.com/api-platform/website featured: false categories: - Documentation @@ -462,28 +462,28 @@ - Open Source - Library - title: The Audacious Project - main_url: "https://audaciousproject.org/" - url: "https://audaciousproject.org/" + main_url: https://audaciousproject.org/ + url: https://audaciousproject.org/ featured: false categories: - Nonprofit - title: Dustin Schau's Blog - main_url: "https://blog.dustinschau.com/" - url: "https://blog.dustinschau.com/" - source_url: "https://github.com/dschau/blog" + main_url: https://blog.dustinschau.com/ + url: https://blog.dustinschau.com/ + source_url: https://github.com/dschau/blog featured: false categories: - Blog - Web Development - title: iContract Blog - main_url: "https://blog.icontract.co.uk/" - url: "http://blog.icontract.co.uk/" + main_url: https://blog.icontract.co.uk/ + url: http://blog.icontract.co.uk/ featured: false categories: - Blog - title: BRIIM - main_url: "https://bri.im/" - url: "https://bri.im/" + main_url: https://bri.im/ + url: https://bri.im/ featured: false description: >- BRIIM is a movement to enable JavaScript enthusiasts and web developers in @@ -495,16 +495,16 @@ - Web Development - Technology - title: Calpa's Blog - main_url: "https://calpa.me/" - url: "https://calpa.me/" - source_url: "https://github.com/calpa/blog" + main_url: https://calpa.me/ + url: https://calpa.me/ + source_url: https://github.com/calpa/blog featured: false categories: - Blog - Web Development - title: Code Bushi - main_url: "https://codebushi.com/" - url: "https://codebushi.com/" + main_url: https://codebushi.com/ + url: https://codebushi.com/ featured: false description: >- Web development resources, trends, & techniques to elevate your coding @@ -514,28 +514,28 @@ - Open Source - Blog built_by: Hunter Chang - built_by_url: "https://hunterchang.com/" + built_by_url: https://hunterchang.com/ - title: Daniel Hollcraft - main_url: "https://danielhollcraft.com/" - url: "https://danielhollcraft.com/" - source_url: "https://github.com/danielbh/danielhollcraft.com" + main_url: https://danielhollcraft.com/ + url: https://danielhollcraft.com/ + source_url: https://github.com/danielbh/danielhollcraft.com featured: false categories: - Web Development - Blog - Portfolio - title: Darren Britton's Portfolio - main_url: "https://darrenbritton.com/" - url: "https://darrenbritton.com/" - source_url: "https://github.com/darrenbritton/darrenbritton.github.io" + main_url: https://darrenbritton.com/ + url: https://darrenbritton.com/ + source_url: https://github.com/darrenbritton/darrenbritton.github.io featured: false categories: - Web Development - Portfolio - title: Dave Lindberg Marketing & Design - url: "https://davelindberg.com/" - main_url: "https://davelindberg.com/" - source_url: "https://github.com/Dave-Lindberg/dl-gatsby" + url: https://davelindberg.com/ + main_url: https://davelindberg.com/ + source_url: https://github.com/Dave-Lindberg/dl-gatsby featured: false description: >- My work revolves around solving problems for people in business, using @@ -546,37 +546,37 @@ - Marketing - Portfolio - title: Dalbinaco's Website - main_url: "https://dlbn.co/en/" - url: "https://dlbn.co/en/" - source_url: "https://github.com/dalbinaco/dlbn.co" + main_url: https://dlbn.co/en/ + url: https://dlbn.co/en/ + source_url: https://github.com/dalbinaco/dlbn.co featured: false categories: - Portfolio - Web Development - title: mParticle's Documentation - main_url: "https://docs.mparticle.com/" - url: "https://docs.mparticle.com/" + main_url: https://docs.mparticle.com/ + url: https://docs.mparticle.com/ featured: false categories: - Web Development - Documentation - title: Doopoll - main_url: "https://doopoll.co/" - url: "https://doopoll.co/" + main_url: https://doopoll.co/ + url: https://doopoll.co/ featured: false categories: - Marketing - Technology - title: ERC dEX - main_url: "https://ercdex.com/" - url: "https://ercdex.com/aqueduct" + main_url: https://ercdex.com/ + url: https://ercdex.com/aqueduct featured: false categories: - Marketing - title: Fabian Schultz' Portfolio - main_url: "https://fabianschultz.com/" - url: "https://fabianschultz.com/" - source_url: "https://github.com/fabe/site" + main_url: https://fabianschultz.com/ + url: https://fabianschultz.com/ + source_url: https://github.com/fabe/site featured: false description: >- Hello, I’m Fabian — a product designer and developer based in Potsdam, @@ -587,50 +587,50 @@ - Portfolio - Web Development built_by: Fabian Schultz - built_by_url: "https://fabianschultz.com/" + built_by_url: https://fabianschultz.com/ - title: CalState House Manager description: > Home service membership that offers proactive and on-demand maintenance for homeowners - main_url: "https://housemanager.calstate.aaa.com/" - url: "https://housemanager.calstate.aaa.com/" + main_url: https://housemanager.calstate.aaa.com/ + url: https://housemanager.calstate.aaa.com/ categories: - Marketing - title: The freeCodeCamp Guide - main_url: "https://guide.freecodecamp.org/" - url: "https://guide.freecodecamp.org/" - source_url: "https://github.com/freeCodeCamp/guide" + main_url: https://guide.freecodecamp.org/ + url: https://guide.freecodecamp.org/ + source_url: https://github.com/freeCodeCamp/guide featured: false categories: - Web Development - Documentation - title: Hapticmedia - main_url: "https://hapticmedia.fr/en/" - url: "https://hapticmedia.fr/en/" + main_url: https://hapticmedia.fr/en/ + url: https://hapticmedia.fr/en/ featured: false categories: - Agency - title: heml.io - main_url: "https://heml.io/" - url: "https://heml.io/" - source_url: "https://github.com/SparkPost/heml.io" + main_url: https://heml.io/ + url: https://heml.io/ + source_url: https://github.com/SparkPost/heml.io featured: false categories: - Documentation - Web Development - Open Source - title: Juliette Pretot's Portfolio - main_url: "https://juliette.sh/" - url: "https://juliette.sh/" + main_url: https://juliette.sh/ + url: https://juliette.sh/ featured: false categories: - Web Development - Portfolio - Blog - title: Kris Hedstrom's Portfolio - main_url: "https://k-create.com/" - url: "https://k-create.com/portfolio/" - source_url: "https://github.com/kristofferh/kristoffer" + main_url: https://k-create.com/ + url: https://k-create.com/portfolio/ + source_url: https://github.com/kristofferh/kristoffer featured: false description: >- Hey. I’m Kris. I’m an interactive designer / developer. I grew up in Umeå, @@ -645,53 +645,53 @@ categories: - Portfolio built_by: Kris Hedstrom - built_by_url: "https://k-create.com/" + built_by_url: https://k-create.com/ - title: knpw.rs - main_url: "https://knpw.rs/" - url: "https://knpw.rs/" - source_url: "https://github.com/knpwrs/knpw.rs" + main_url: https://knpw.rs/ + url: https://knpw.rs/ + source_url: https://github.com/knpwrs/knpw.rs featured: false categories: - Blog - Web Development - title: Kostas Bariotis' Blog - main_url: "https://kostasbariotis.com/" - url: "https://kostasbariotis.com/" - source_url: "https://github.com/kbariotis/kostasbariotis.com" + main_url: https://kostasbariotis.com/ + url: https://kostasbariotis.com/ + source_url: https://github.com/kbariotis/kostasbariotis.com featured: false categories: - Blog - Portfolio - Web Development - title: LaserTime Clinic - main_url: "https://lasertime.ru/" - url: "https://lasertime.ru/" - source_url: "https://github.com/oleglegun/lasertime" + main_url: https://lasertime.ru/ + url: https://lasertime.ru/ + source_url: https://github.com/oleglegun/lasertime featured: false categories: - Marketing - title: Jason Lengstorf - main_url: "https://lengstorf.com" - url: "https://lengstorf.com" - source_url: "https://github.com/jlengstorf/lengstorf.com" + main_url: https://lengstorf.com + url: https://lengstorf.com + source_url: https://github.com/jlengstorf/lengstorf.com featured: false categories: - Blog built_by: Jason Lengstorf - built_by_url: "https://github.com/jlengstorf" + built_by_url: https://github.com/jlengstorf - title: Mannequin.io - main_url: "https://mannequin.io/" - url: "https://mannequin.io/" - source_url: "https://github.com/LastCallMedia/Mannequin/tree/master/site" + main_url: https://mannequin.io/ + url: https://mannequin.io/ + source_url: https://github.com/LastCallMedia/Mannequin/tree/master/site featured: false categories: - Open Source - Web Development - Documentation - title: manu.ninja - main_url: "https://manu.ninja/" - url: "https://manu.ninja/" - source_url: "https://github.com/Lorti/manu.ninja" + main_url: https://manu.ninja/ + url: https://manu.ninja/ + source_url: https://github.com/Lorti/manu.ninja featured: false description: >- manu.ninja is the personal blog of Manuel Wieser, where he talks about @@ -701,14 +701,14 @@ - Technology - Web Development - title: Fabric - main_url: "https://meetfabric.com/" - url: "https://meetfabric.com/" + main_url: https://meetfabric.com/ + url: https://meetfabric.com/ featured: false categories: - Marketing - title: Nexit - main_url: "https://nexit.sk/" - url: "https://nexit.sk/references" + main_url: https://nexit.sk/ + url: https://nexit.sk/references featured: false categories: - Web Development @@ -717,9 +717,9 @@ Provides APIs and raw download access to a number of high-value, high priority and scalable structured datasets, including adverse events, drug product labeling, and recall enforcement reports. - main_url: "https://open.fda.gov/" - url: "https://open.fda.gov/" - source_url: "https://github.com/FDA/open.fda.gov" + main_url: https://open.fda.gov/ + url: https://open.fda.gov/ + source_url: https://github.com/FDA/open.fda.gov featured: false categories: - Government @@ -728,9 +728,9 @@ - API - Data - title: NYC Planning Labs (New York City Department of City Planning) - main_url: "https://planninglabs.nyc/" - url: "https://planninglabs.nyc/about/" - source_url: "https://github.com/NYCPlanning/" + main_url: https://planninglabs.nyc/ + url: https://planninglabs.nyc/about/ + source_url: https://github.com/NYCPlanning/ featured: false description: >- We work with New York City's Urban Planners to deliver impactful, modern @@ -739,9 +739,9 @@ - Open Source - Government - title: Pravdomil - main_url: "https://pravdomil.com/" - url: "https://pravdomil.com/" - source_url: "https://github.com/pravdomil/pravdomil.com" + main_url: https://pravdomil.com/ + url: https://pravdomil.com/ + source_url: https://github.com/pravdomil/pravdomil.com featured: false description: >- I’ve been working both as a product designer and frontend developer for over @@ -750,26 +750,26 @@ categories: - Portfolio - title: Preston Richey Portfolio / Blog - main_url: "https://prestonrichey.com/" - url: "https://prestonrichey.com/" - source_url: "https://github.com/prichey/prestonrichey.com" + main_url: https://prestonrichey.com/ + url: https://prestonrichey.com/ + source_url: https://github.com/prichey/prestonrichey.com featured: false categories: - Web Development - Portfolio - Blog - title: Landing page of Put.io - main_url: "https://put.io/" - url: "https://put.io/" + main_url: https://put.io/ + url: https://put.io/ featured: false categories: - eCommerce - Technology - title: The Rick and Morty API - main_url: "https://rickandmortyapi.com/" - url: "https://rickandmortyapi.com/" + main_url: https://rickandmortyapi.com/ + url: https://rickandmortyapi.com/ built_by: Axel Fuhrmann - built_by_url: "https://axelfuhrmann.com/" + built_by_url: https://axelfuhrmann.com/ featured: false categories: - Web Development @@ -778,66 +778,66 @@ - Open Source - API - title: Santa Compañía Creativa - main_url: "https://santacc.es/" - url: "https://santacc.es/" - source_url: "https://github.com/DesarrolloWebSantaCC/santacc-web" + main_url: https://santacc.es/ + url: https://santacc.es/ + source_url: https://github.com/DesarrolloWebSantaCC/santacc-web featured: false categories: - Agency - title: Sean Coker's Blog - main_url: "https://sean.is/" - url: "https://sean.is/" + main_url: https://sean.is/ + url: https://sean.is/ featured: false categories: - Blog - Portfolio - Web Development - title: Several Levels - main_url: "https://severallevels.io/" - url: "https://severallevels.io/" - source_url: "https://github.com/Harrison1/several-levels" + main_url: https://severallevels.io/ + url: https://severallevels.io/ + source_url: https://github.com/Harrison1/several-levels featured: false categories: - Agency - Web Development - title: Simply - main_url: "https://simply.co.za/" - url: "https://simply.co.za/" + main_url: https://simply.co.za/ + url: https://simply.co.za/ featured: false categories: - Marketing - title: Storybook - main_url: "https://storybook.js.org/" - url: "https://storybook.js.org/" - source_url: "https://github.com/storybooks/storybook" + main_url: https://storybook.js.org/ + url: https://storybook.js.org/ + source_url: https://github.com/storybooks/storybook featured: false categories: - Web Development - Open Source - title: Vibert Thio's Portfolio - main_url: "https://vibertthio.com/portfolio/" - url: "https://vibertthio.com/portfolio/projects/" - source_url: "https://github.com/vibertthio/portfolio" + main_url: https://vibertthio.com/portfolio/ + url: https://vibertthio.com/portfolio/projects/ + source_url: https://github.com/vibertthio/portfolio featured: false categories: - Portfolio - Web Development - title: VisitGemer - main_url: "https://visitgemer.sk/" - url: "https://visitgemer.sk/" + main_url: https://visitgemer.sk/ + url: https://visitgemer.sk/ featured: false categories: - Marketing - title: Bricolage.io - main_url: "https://www.bricolage.io/" - url: "https://www.bricolage.io/" - source_url: "https://github.com/KyleAMathews/blog" + main_url: https://www.bricolage.io/ + url: https://www.bricolage.io/ + source_url: https://github.com/KyleAMathews/blog featured: false categories: - Blog - title: Charles Pinnix Website - main_url: "https://www.charlespinnix.com/" - url: "https://www.charlespinnix.com/" + main_url: https://www.charlespinnix.com/ + url: https://www.charlespinnix.com/ featured: false description: >- I’m a senior frontend engineer with 8 years of experience building websites @@ -853,195 +853,195 @@ - Portfolio - Web Development - title: Charlie Harrington's Blog - main_url: "https://www.charlieharrington.com/" - url: "https://www.charlieharrington.com/" - source_url: "https://github.com/whatrocks/blog" + main_url: https://www.charlieharrington.com/ + url: https://www.charlieharrington.com/ + source_url: https://github.com/whatrocks/blog featured: false categories: - Blog - Web Development - Music - title: Gabriel Adorf's Portfolio - main_url: "https://www.gabrieladorf.com/" - url: "https://www.gabrieladorf.com/" - source_url: "https://github.com/gabdorf/gabriel-adorf-portfolio" + main_url: https://www.gabrieladorf.com/ + url: https://www.gabrieladorf.com/ + source_url: https://github.com/gabdorf/gabriel-adorf-portfolio featured: false categories: - Portfolio - Web Development - title: greglobinski.com - main_url: "https://www.greglobinski.com/" - url: "https://www.greglobinski.com/" - source_url: "https://github.com/greglobinski/www.greglobinski.com" + main_url: https://www.greglobinski.com/ + url: https://www.greglobinski.com/ + source_url: https://github.com/greglobinski/www.greglobinski.com featured: false categories: - Portfolio - Web Development - title: I am Putra - main_url: "https://www.iamputra.com/" - url: "https://www.iamputra.com/" + main_url: https://www.iamputra.com/ + url: https://www.iamputra.com/ featured: false categories: - Portfolio - Web Development - Blog - title: In Sowerby Bridge - main_url: "https://www.insowerbybridge.co.uk/" - url: "https://www.insowerbybridge.co.uk/" + main_url: https://www.insowerbybridge.co.uk/ + url: https://www.insowerbybridge.co.uk/ featured: false categories: - Marketing - Government - title: JavaScript Stuff - main_url: "https://www.javascriptstuff.com/" - url: "https://www.javascriptstuff.com/" + main_url: https://www.javascriptstuff.com/ + url: https://www.javascriptstuff.com/ featured: false categories: - Education - Web Development - Library - title: Ledgy - main_url: "https://www.ledgy.com/" - url: "https://github.com/morloy/ledgy.com" + main_url: https://www.ledgy.com/ + url: https://github.com/morloy/ledgy.com featured: false categories: - Marketing - Finance - title: Alec Lomas's Portfolio / Blog - main_url: "https://www.lowmess.com/" - url: "https://www.lowmess.com/" - source_url: "https://github.com/lowmess/lowmess" + main_url: https://www.lowmess.com/ + url: https://www.lowmess.com/ + source_url: https://github.com/lowmess/lowmess featured: false categories: - Web Development - Blog - Portfolio - title: Michele Mazzucco's Portfolio - main_url: "https://www.michelemazzucco.it/" - url: "https://www.michelemazzucco.it/" - source_url: "https://github.com/michelemazzucco/michelemazzucco.it" + main_url: https://www.michelemazzucco.it/ + url: https://www.michelemazzucco.it/ + source_url: https://github.com/michelemazzucco/michelemazzucco.it featured: false categories: - Portfolio - title: Orbit FM Podcasts - main_url: "https://www.orbit.fm/" - url: "https://www.orbit.fm/" - source_url: "https://github.com/agarrharr/orbit.fm" + main_url: https://www.orbit.fm/ + url: https://www.orbit.fm/ + source_url: https://github.com/agarrharr/orbit.fm featured: false categories: - Podcast - title: Prosecco Springs - main_url: "https://www.proseccosprings.com/" - url: "https://www.proseccosprings.com/" + main_url: https://www.proseccosprings.com/ + url: https://www.proseccosprings.com/ featured: false categories: - Food - Blog - Marketing - title: Verious - main_url: "https://www.verious.io/" - url: "https://www.verious.io/" - source_url: "https://github.com/cpinnix/verious" + main_url: https://www.verious.io/ + url: https://www.verious.io/ + source_url: https://github.com/cpinnix/verious featured: false categories: - Web Development - title: Yisela - main_url: "https://www.yisela.com/" - url: "https://www.yisela.com/tetris-against-trauma-gaming-as-therapy/" + main_url: https://www.yisela.com/ + url: https://www.yisela.com/tetris-against-trauma-gaming-as-therapy/ featured: false categories: - Blog - title: YouFoundRon.com - main_url: "https://www.youfoundron.com/" - url: "https://www.youfoundron.com/" - source_url: "https://github.com/rongierlach/yfr-dot-com" + main_url: https://www.youfoundron.com/ + url: https://www.youfoundron.com/ + source_url: https://github.com/rongierlach/yfr-dot-com featured: false categories: - Portfolio - Web Development - Blog - title: yerevancoder - main_url: "https://yerevancoder.com/" - url: "https://forum.yerevancoder.com/categories" - source_url: "https://github.com/yerevancoder/yerevancoder.github.io" + main_url: https://yerevancoder.com/ + url: https://forum.yerevancoder.com/categories + source_url: https://github.com/yerevancoder/yerevancoder.github.io featured: false categories: - Blog - Web Development - title: Ease - main_url: "https://www.ease.com/" - url: "https://www.ease.com/" + main_url: https://www.ease.com/ + url: https://www.ease.com/ featured: false categories: - Marketing - Healthcare - title: Policygenius - main_url: "https://www.policygenius.com/" - url: "https://www.policygenius.com/" + main_url: https://www.policygenius.com/ + url: https://www.policygenius.com/ featured: false categories: - Marketing - Healthcare - title: Moteefe - main_url: "https://www.moteefe.com/" - url: "https://www.moteefe.com/" + main_url: https://www.moteefe.com/ + url: https://www.moteefe.com/ featured: false categories: - Marketing - Agency - Technology - title: Athelas - main_url: "http://www.athelas.com/" - url: "http://www.athelas.com/" + main_url: http://www.athelas.com/ + url: http://www.athelas.com/ featured: false categories: - Marketing - Healthcare - title: Pathwright - main_url: "http://www.pathwright.com/" - url: "http://www.pathwright.com/" + main_url: http://www.pathwright.com/ + url: http://www.pathwright.com/ featured: false categories: - Marketing - Education - title: Lucid - main_url: "https://www.golucid.co/" - url: "https://www.golucid.co/" + main_url: https://www.golucid.co/ + url: https://www.golucid.co/ featured: false categories: - Marketing - Technology - title: Bench - main_url: "http://www.bench.co/" - url: "http://www.bench.co/" + main_url: http://www.bench.co/ + url: http://www.bench.co/ featured: false categories: - Marketing - title: Gin Lane - main_url: "http://www.ginlane.com/" - url: "https://www.ginlane.com/" + main_url: http://www.ginlane.com/ + url: https://www.ginlane.com/ featured: false categories: - Web Development - Agency - title: Marmelab - main_url: "https://marmelab.com/en/" - url: "https://marmelab.com/en/" + main_url: https://marmelab.com/en/ + url: https://marmelab.com/en/ featured: false categories: - Web Development - Agency - title: Dovetail - main_url: "https://dovetailapp.com/" - url: "https://dovetailapp.com/" + main_url: https://dovetailapp.com/ + url: https://dovetailapp.com/ featured: false categories: - Marketing - Technology - title: The Bastion Bot - main_url: "https://bastionbot.org/" - url: "https://bastionbot.org/" - source_url: "https://github.com/TheBastionBot/Bastion-Website" + main_url: https://bastionbot.org/ + url: https://bastionbot.org/ + source_url: https://github.com/TheBastionBot/Bastion-Website description: Give awesome perks to your Discord server! featured: false categories: @@ -1050,38 +1050,38 @@ - Documentation - Community built_by: Sankarsan Kampa - built_by_url: "https://traction.one" + built_by_url: https://traction.one - title: Smakosh - main_url: "https://smakosh.com/" - url: "https://smakosh.com/" - source_url: "https://github.com/smakosh/smakosh.com" + main_url: https://smakosh.com/ + url: https://smakosh.com/ + source_url: https://github.com/smakosh/smakosh.com featured: false categories: - Portfolio - Web Development - title: WebGazer - main_url: "https://www.webgazer.io/" - url: "https://www.webgazer.io/" + main_url: https://www.webgazer.io/ + url: https://www.webgazer.io/ featured: false categories: - Marketing - Web Development - Technology - title: Joe Seifi's Blog - main_url: "http://seifi.org/" - url: "http://seifi.org/" + main_url: http://seifi.org/ + url: http://seifi.org/ featured: false categories: - Portfolio - Web Development - Blog - title: LekoArts — Graphic Designer & Front-End Developer - main_url: "https://www.lekoarts.de" - url: "https://www.lekoarts.de" - source_url: "https://github.com/LekoArts/portfolio" + main_url: https://www.lekoarts.de + url: https://www.lekoarts.de + source_url: https://github.com/LekoArts/portfolio featured: false built_by: LekoArts - built_by_url: "https://github.com/LekoArts" + built_by_url: https://github.com/LekoArts description: >- Hi, I'm Lennart — a self-taught and passionate graphic/web designer & frontend developer based in Darmstadt, Germany. I love it to realize complex @@ -1097,27 +1097,27 @@ - Freelance - Open Source - title: 杨二小的博客 - main_url: "https://blog.yangerxiao.com/" - url: "https://blog.yangerxiao.com/" - source_url: "https://github.com/zerosoul/blog.yangerxiao.com" + main_url: https://blog.yangerxiao.com/ + url: https://blog.yangerxiao.com/ + source_url: https://github.com/zerosoul/blog.yangerxiao.com featured: false categories: - Blog - Portfolio - title: MOTTO x MOTTO - main_url: "https://mottox2.com" - url: "https://mottox2.com" - source_url: "https://github.com/mottox2/website" + main_url: https://mottox2.com + url: https://mottox2.com + source_url: https://github.com/mottox2/website description: Web developer / UI Designer in Tokyo Japan. featured: false categories: - Blog - Portfolio built_by: mottox2 - built_by_url: "https://mottox2.com" + built_by_url: https://mottox2.com - title: Pride of the Meadows - main_url: "https://www.prideofthemeadows.com/" - url: "https://www.prideofthemeadows.com/" + main_url: https://www.prideofthemeadows.com/ + url: https://www.prideofthemeadows.com/ featured: false categories: - eCommerce @@ -1126,8 +1126,8 @@ built_by: Caldera Digital built_by_url: https://www.calderadigital.com/ - title: Michael Uloth - main_url: "https://www.michaeluloth.com" - url: "https://www.michaeluloth.com" + main_url: https://www.michaeluloth.com + url: https://www.michaeluloth.com featured: false description: Michael Uloth is a web developer, opera singer, and the creator of Up and Running Tutorials. categories: @@ -1135,10 +1135,10 @@ - Web Development - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com - title: Spacetime - main_url: "https://www.heyspacetime.com/" - url: "https://www.heyspacetime.com/" + main_url: https://www.heyspacetime.com/ + url: https://www.heyspacetime.com/ featured: false description: >- Spacetime is a Dallas-based digital experience agency specializing in web, @@ -1148,10 +1148,10 @@ - Portfolio - Agency built_by: Spacetime - built_by_url: "https://www.heyspacetime.com/" + built_by_url: https://www.heyspacetime.com/ - title: Eric Jinks - main_url: "https://ericjinks.com/" - url: "https://ericjinks.com/" + main_url: https://ericjinks.com/ + url: https://ericjinks.com/ featured: false description: "Software engineer / web developer from the Gold Coast, Australia." categories: @@ -1160,10 +1160,10 @@ - Web Development - Technology built_by: Eric Jinks - built_by_url: "https://ericjinks.com/" + built_by_url: https://ericjinks.com/ - title: GaiAma - We are wildlife - main_url: "https://www.gaiama.org/" - url: "https://www.gaiama.org/" + main_url: https://www.gaiama.org/ + url: https://www.gaiama.org/ featured: false description: >- We founded the GaiAma conservation organization to protect wildlife in Perú @@ -1173,12 +1173,12 @@ - Nonprofit - Marketing - Blog - source_url: "https://github.com/GaiAma/gaiama.org" + source_url: https://github.com/GaiAma/gaiama.org built_by: GaiAma - built_by_url: "https://www.gaiama.org/" + built_by_url: https://www.gaiama.org/ - title: Healthcare Logic - main_url: "https://www.healthcarelogic.com/" - url: "https://www.healthcarelogic.com/" + main_url: https://www.healthcarelogic.com/ + url: https://www.healthcarelogic.com/ featured: false description: >- Revolutionary technology that empowers clinical and managerial leaders to @@ -1188,23 +1188,23 @@ - Healthcare - Technology built_by: Thrive - built_by_url: "https://thriveweb.com.au/" + built_by_url: https://thriveweb.com.au/ - title: Papergov - main_url: "https://papergov.com/" - url: "https://papergov.com/" + main_url: https://papergov.com/ + url: https://papergov.com/ featured: false description: Manage all your government services in a single place categories: - Directory - Government - Technology - source_url: "https://github.com/WeOpenly/localgov.fyi" + source_url: https://github.com/WeOpenly/localgov.fyi built_by: Openly Technologies - built_by_url: "https://papergov.com/about/" + built_by_url: https://papergov.com/about/ - title: Kata.ai Documentation - main_url: "https://docs.kata.ai/" - url: "https://docs.kata.ai/" - source_url: "https://github.com/kata-ai/kata-platform-docs" + main_url: https://docs.kata.ai/ + url: https://docs.kata.ai/ + source_url: https://github.com/kata-ai/kata-platform-docs featured: false description: >- Documentation website for the Kata Platform, an all-in-one platform for @@ -1213,8 +1213,8 @@ - Documentation - Technology - title: goalgetters - main_url: "https://goalgetters.space/" - url: "https://goalgetters.space/" + main_url: https://goalgetters.space/ + url: https://goalgetters.space/ featured: false description: >- goalgetters is a source of inspiration for people who want to change their @@ -1224,10 +1224,10 @@ - Blog - Education built_by: "Stephanie Langers (content), Adrian Wenke (development)" - built_by_url: "https://twitter.com/AdrianWenke" + built_by_url: https://twitter.com/AdrianWenke - title: Zensum - main_url: "https://zensum.se/" - url: "https://zensum.se/" + main_url: https://zensum.se/ + url: https://zensum.se/ featured: false description: >- Borrow money quickly and safely through Zensum. We compare Sweden's leading @@ -1238,10 +1238,10 @@ - Finance - Marketing built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ - title: StatusHub - Easy to use Hosted Status Page Service - main_url: "https://statushub.com/" - url: "https://statushub.com/" + main_url: https://statushub.com/ + url: https://statushub.com/ featured: false description: >- Set up your very own service status page in minutes with StatusHub. Allow @@ -1250,21 +1250,21 @@ - Technology - Marketing built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ - title: Matthias Kretschmann Portfolio - main_url: "https://matthiaskretschmann.com/" - url: "https://matthiaskretschmann.com/" - source_url: "https://github.com/kremalicious/portfolio" + main_url: https://matthiaskretschmann.com/ + url: https://matthiaskretschmann.com/ + source_url: https://github.com/kremalicious/portfolio featured: false description: Portfolio of designer & developer Matthias Kretschmann. categories: - Portfolio - Web Development built_by: Matthias Kretschmann - built_by_url: "https://matthiaskretschmann.com/" + built_by_url: https://matthiaskretschmann.com/ - title: Iron Cove Solutions - main_url: "https://ironcovesolutions.com/" - url: "https://ironcovesolutions.com/" + main_url: https://ironcovesolutions.com/ + url: https://ironcovesolutions.com/ description: >- Iron Cove Solutions is a cloud based consulting firm. We help companies deliver a return on cloud usage by applying best practices @@ -1272,12 +1272,12 @@ - Technology - Web Development built_by: Iron Cove Solutions - built_by_url: "https://ironcovesolutions.com/" + built_by_url: https://ironcovesolutions.com/ featured: false - title: Moetez Chaabene Portfolio / Blog - main_url: "https://moetez.me/" - url: "https://moetez.me/" - source_url: "https://github.com/moetezch/moetez.me" + main_url: https://moetez.me/ + url: https://moetez.me/ + source_url: https://github.com/moetezch/moetez.me featured: false description: Portfolio of Moetez Chaabene categories: @@ -1285,112 +1285,112 @@ - Web Development - Blog built_by: Moetez Chaabene - built_by_url: "https://twitter.com/moetezch" + built_by_url: https://twitter.com/moetezch - title: Nikita description: >- Automation of system deployments in Node.js for applications and infrastructures. - main_url: "https://nikita.js.org/" - url: "https://nikita.js.org/" - source_url: "https://github.com/adaltas/node-nikita" + main_url: https://nikita.js.org/ + url: https://nikita.js.org/ + source_url: https://github.com/adaltas/node-nikita categories: - Documentation - Open Source - Technology built_by: Adaltas - built_by_url: "https://www.adaltas.com" + built_by_url: https://www.adaltas.com featured: false - title: Gourav Sood Blog & Portfolio - main_url: "https://www.gouravsood.com/" - url: "https://www.gouravsood.com/" + main_url: https://www.gouravsood.com/ + url: https://www.gouravsood.com/ featured: false categories: - Blog - Portfolio built_by: Gourav Sood - built_by_url: "https://www.gouravsood.com/" + built_by_url: https://www.gouravsood.com/ - title: Jonas Tebbe Portfolio description: | Hey, I’m Jonas and I create digital products. - main_url: "https://jonastebbe.com" - url: "https://jonastebbe.com" + main_url: https://jonastebbe.com + url: https://jonastebbe.com categories: - Portfolio built_by: Jonas Tebbe - built_by_url: "https://twitter.com/jonastebbe" + built_by_url: https://twitter.com/jonastebbe featured: false - title: Parker Sarsfield Portfolio description: | I'm Parker, a software engineer and sneakerhead. - main_url: "https://parkersarsfield.com" - url: "https://parkersarsfield.com" + main_url: https://parkersarsfield.com + url: https://parkersarsfield.com categories: - Blog - Portfolio built_by: Parker Sarsfield - built_by_url: "https://parkersarsfield.com" + built_by_url: https://parkersarsfield.com - title: Frontend web development with Greg description: | JavaScript, GatsbyJS, ReactJS, CSS in JS... Let's learn some stuff together. - main_url: "https://dev.greglobinski.com" - url: "https://dev.greglobinski.com" + main_url: https://dev.greglobinski.com + url: https://dev.greglobinski.com categories: - Blog - Web Development built_by: Greg Lobinski - built_by_url: "https://github.com/greglobinski" + built_by_url: https://github.com/greglobinski - title: Insomnia description: | Desktop HTTP and GraphQL client for developers - main_url: "https://insomnia.rest/" - url: "https://insomnia.rest/" + main_url: https://insomnia.rest/ + url: https://insomnia.rest/ categories: - Blog built_by: Gregory Schier - built_by_url: "https://schier.co" + built_by_url: https://schier.co featured: false - title: Timeline Theme Portfolio description: | I'm Aman Mittal, a software developer. - main_url: "https://amanhimself.dev/" - url: "https://amanhimself.dev/" + main_url: https://amanhimself.dev/ + url: https://amanhimself.dev/ categories: - Web Development - Portfolio built_by: Aman Mittal - built_by_url: "https://amanhimself.dev/" + built_by_url: https://amanhimself.dev/ - title: Ocean artUp description: > Science outreach site built using styled-components and Contentful. It presents the research project "Ocean artUp" funded by an Advanced Grant of the European Research Council to explore the possible benefits of artificial uplift of nutrient-rich deep water to the ocean’s sunlit surface layer. - main_url: "https://ocean-artup.eu" - url: "https://ocean-artup.eu" - source_url: "https://github.com/janosh/ocean-artup" + main_url: https://ocean-artup.eu + url: https://ocean-artup.eu + source_url: https://github.com/janosh/ocean-artup categories: - Science - Education - Blog built_by: Janosh Riebesell - built_by_url: "https://janosh.io" + built_by_url: https://janosh.io featured: false - title: Ryan Fitzgerald description: | Personal portfolio and blog for Ryan Fitzgerald - main_url: "https://ryanfitzgerald.ca/" - url: "https://ryanfitzgerald.ca/" + main_url: https://ryanfitzgerald.ca/ + url: https://ryanfitzgerald.ca/ categories: - Web Development - Portfolio built_by: Ryan Fitzgerald - built_by_url: "https://github.com/RyanFitzgerald" + built_by_url: https://github.com/RyanFitzgerald featured: false - title: Kaizen description: | Content Marketing, PR & SEO Agency in London - main_url: "https://www.kaizen.co.uk/" - url: "https://www.kaizen.co.uk/" + main_url: https://www.kaizen.co.uk/ + url: https://www.kaizen.co.uk/ categories: - Agency - Blog @@ -1398,13 +1398,13 @@ - Web Development - SEO built_by: Bogdan Stanciu - built_by_url: "https://github.com/b0gd4n" + built_by_url: https://github.com/b0gd4n featured: false - title: HackerOne Platform Documentation description: | HackerOne's Product Documentation Center! - url: "https://docs.hackerone.com/" - main_url: "https://docs.hackerone.com/" + url: https://docs.hackerone.com/ + main_url: https://docs.hackerone.com/ categories: - Documentation - Security @@ -1412,8 +1412,8 @@ - title: Mux Video description: | API to video hosting and streaming - main_url: "https://mux.com/" - url: "https://mux.com/" + main_url: https://mux.com/ + url: https://mux.com/ categories: - Video - API @@ -1422,45 +1422,45 @@ description: > The easiest way for event organizers to instantly connect people, build a community of attendees and exhibitors, and increase revenue over time - main_url: "https://www.swapcard.com/" - url: "https://www.swapcard.com/" + main_url: https://www.swapcard.com/ + url: https://www.swapcard.com/ categories: - Event - Community - Marketing built_by: Swapcard - built_by_url: "https://www.swapcard.com/" + built_by_url: https://www.swapcard.com/ featured: false - title: Kalix description: > Kalix is perfect for healthcare professionals starting out in private practice, to those with an established clinic. - main_url: "https://www.kalixhealth.com/" - url: "https://www.kalixhealth.com/" + main_url: https://www.kalixhealth.com/ + url: https://www.kalixhealth.com/ categories: - Healthcare featured: false - title: Hubba description: | Buy wholesale products from thousands of independent, verified Brands. - main_url: "https://join.hubba.com/" - url: "https://join.hubba.com/" + main_url: https://join.hubba.com/ + url: https://join.hubba.com/ categories: - eCommerce featured: false - title: HyperPlay description: | In Asean's 1st Ever LOL Esports X Music Festival - main_url: "https://hyperplay.leagueoflegends.com/" - url: "https://hyperplay.leagueoflegends.com/" + main_url: https://hyperplay.leagueoflegends.com/ + url: https://hyperplay.leagueoflegends.com/ categories: - Music featured: false - title: Bad Credit Loans description: | Get the funds you need, from $250-$5,000 - main_url: "https://www.creditloan.com/" - url: "https://www.creditloan.com/" + main_url: https://www.creditloan.com/ + url: https://www.creditloan.com/ categories: - Finance featured: false @@ -1469,75 +1469,75 @@ Member-owned, not-for-profit, co-operative whose members receive financial benefits in the form of lower loan rates, higher savings rates, and lower fees than banks. - main_url: "https://fcfcu.com/" - url: "https://fcfcu.com/" + main_url: https://fcfcu.com/ + url: https://fcfcu.com/ categories: - Finance - Nonprofit - Business - Education - built_by: "https://fcfcu.com/" - built_by_url: "https://fcfcu.com/" + built_by: https://fcfcu.com/ + built_by_url: https://fcfcu.com/ featured: false - title: Office of Institutional Research and Assessment description: | Good Data, Good Decisions - main_url: "http://oira.ua.edu/" - url: "http://oira.ua.edu/" + main_url: http://oira.ua.edu/ + url: http://oira.ua.edu/ categories: - Data featured: false - title: The Telegraph Premium description: | Exclusive stories from award-winning journalists - main_url: "https://premium.telegraph.co.uk/" - url: "https://premium.telegraph.co.uk/" + main_url: https://premium.telegraph.co.uk/ + url: https://premium.telegraph.co.uk/ categories: - Media featured: false - title: html2canvas description: | Screenshots with JavaScript - main_url: "http://html2canvas.hertzen.com/" - url: "http://html2canvas.hertzen.com/" - source_url: "https://github.com/niklasvh/html2canvas/tree/master/www" + main_url: http://html2canvas.hertzen.com/ + url: http://html2canvas.hertzen.com/ + source_url: https://github.com/niklasvh/html2canvas/tree/master/www categories: - JavaScript - Documentation built_by: Niklas von Hertzen - built_by_url: "http://hertzen.com/" + built_by_url: http://hertzen.com/ featured: false - title: Dato CMS description: | The API-based CMS your editors will love - main_url: "https://www.datocms.com/" - url: "https://www.datocms.com/" + main_url: https://www.datocms.com/ + url: https://www.datocms.com/ categories: - API featured: false - title: Half Electronics description: | Personal website - main_url: "https://www.halfelectronic.com/" - url: "https://www.halfelectronic.com/" + main_url: https://www.halfelectronic.com/ + url: https://www.halfelectronic.com/ categories: - Blog built_by: Fernando Poumian - built_by_url: "https://github.com/fpoumian/halfelectronic.com" + built_by_url: https://github.com/fpoumian/halfelectronic.com featured: false - title: Frithir Software Development - main_url: "https://frithir.com/" - url: "https://frithir.com/" + main_url: https://frithir.com/ + url: https://frithir.com/ featured: false description: "I DRINK COFFEE, WRITE CODE AND IMPROVE MY DEVELOPMENT SKILLS EVERY DAY." categories: - Design - Web Development built_by: Frithir - built_by_url: "https://Frithir.com/" + built_by_url: https://Frithir.com/ - title: Unow - main_url: "https://www.unow.fr/" - url: "https://www.unow.fr/" + main_url: https://www.unow.fr/ + url: https://www.unow.fr/ categories: - Education - Marketing @@ -1545,44 +1545,44 @@ - title: Peter Hironaka description: | Freelance Web Developer based in Los Angeles. - main_url: "https://peterhironaka.com/" - url: "https://peterhironaka.com/" + main_url: https://peterhironaka.com/ + url: https://peterhironaka.com/ categories: - Portfolio - Web Development built_by: Peter Hironaka - built_by_url: "https://github.com/PHironaka" + built_by_url: https://github.com/PHironaka featured: false - title: Michael McQuade description: | Personal website and blog for Michael McQuade - main_url: "https://giraffesyo.io" - url: "https://giraffesyo.io" + main_url: https://giraffesyo.io + url: https://giraffesyo.io categories: - Blog built_by: Michael McQuade - built_by_url: "https://github.com/giraffesyo" + built_by_url: https://github.com/giraffesyo featured: false - title: Haacht Brewery description: | Corporate website for Haacht Brewery. Designed and Developed by Gafas. - main_url: "https://haacht.com/en/" - url: "https://haacht.com" + main_url: https://haacht.com/en/ + url: https://haacht.com categories: - Marketing built_by: Gafas - built_by_url: "https://gafas.be" + built_by_url: https://gafas.be featured: false - title: StoutLabs description: | Portfolio of Daniel Stout, freelance developer in East Tennessee. - main_url: "https://www.stoutlabs.com/" - url: "https://www.stoutlabs.com/" + main_url: https://www.stoutlabs.com/ + url: https://www.stoutlabs.com/ categories: - Web Development - Portfolio built_by: Daniel Stout - built_by_url: "https://github.com/stoutlabs" + built_by_url: https://github.com/stoutlabs featured: false - title: Chicago Ticket Outcomes By Neighborhood description: | @@ -1595,7 +1595,7 @@ main_url: >- https://projects.propublica.org/graphics/il/il-city-sticker-tickets-maps/ticket-status/?initialWidth=782 built_by: David Eads - built_by_url: "https://github.com/eads" + built_by_url: https://github.com/eads featured: false - title: Chicago South Side Traffic Ticketing rates description: | @@ -1608,14 +1608,14 @@ - Media - Nonprofit built_by: David Eads - built_by_url: "https://github.com/eads" + built_by_url: https://github.com/eads featured: false - title: Otsimo description: > Otsimo is a special education application for children with autism, down syndrome and other developmental disabilities. - main_url: "https://otsimo.com/en/" - url: "https://otsimo.com/en/" + main_url: https://otsimo.com/en/ + url: https://otsimo.com/en/ categories: - Blog - Education @@ -1625,16 +1625,16 @@ Mostly the result of playing with Gatsby and learning about react and graphql. Using the screenshot plugin to showcase the work done for my company in the last 2 years, and a good amount of other experiments. - main_url: "https://mattbag.github.io" - url: "https://mattbag.github.io" + main_url: https://mattbag.github.io + url: https://mattbag.github.io categories: - Portfolio featured: false - title: Lisa Ye's Blog description: | Simple blog/portofolio for a fashion designer. Gatsby_v2 + Netlify cms - main_url: "https://lisaye.netlify.com/" - url: "https://lisaye.netlify.com/" + main_url: https://lisaye.netlify.com/ + url: https://lisaye.netlify.com/ categories: - Blog - Portfolio @@ -1643,19 +1643,19 @@ description: > Little homepage of Artem Sapegin, a frontend developer, passionate photographer, coffee drinker and crazy dogs’ owner. - main_url: "https://sapegin.me/" - url: "https://sapegin.me/" + main_url: https://sapegin.me/ + url: https://sapegin.me/ categories: - Portfolio - Open Source - Web Development built_by: Artem Sapegin - built_by_url: "https://github.com/sapegin" + built_by_url: https://github.com/sapegin featured: false - title: SparkPost Developers - main_url: "https://developers.sparkpost.com/" - url: "https://developers.sparkpost.com/" - source_url: "https://github.com/SparkPost/developers.sparkpost.com" + main_url: https://developers.sparkpost.com/ + url: https://developers.sparkpost.com/ + source_url: https://github.com/SparkPost/developers.sparkpost.com categories: - Documentation - API @@ -1664,32 +1664,32 @@ description: > The portfolio blog of Malik Browne, a full-stack engineer, foodie, and avid blogger/YouTuber. - main_url: "https://www.malikbrowne.com/about" - url: "https://www.malikbrowne.com" + main_url: https://www.malikbrowne.com/about + url: https://www.malikbrowne.com categories: - Blog - Portfolio built_by: Malik Browne - built_by_url: "https://twitter.com/milkstarz" + built_by_url: https://twitter.com/milkstarz featured: false - title: Novatics description: | Digital products that inspire and make a difference - main_url: "https://www.novatics.com.br" - url: "https://www.novatics.com.br" + main_url: https://www.novatics.com.br + url: https://www.novatics.com.br categories: - Portfolio - Technology - Web Development built_by: Novatics - built_by_url: "https://github.com/Novatics" + built_by_url: https://github.com/Novatics featured: false - title: Max McKinney description: > I’m a developer and designer with a focus in web technologies. I build cars on the side. - main_url: "https://maxmckinney.com/" - url: "https://maxmckinney.com/" + main_url: https://maxmckinney.com/ + url: https://maxmckinney.com/ categories: - Portfolio - Web Development @@ -1699,9 +1699,9 @@ - title: Stickyard description: | Make your React component sticky the easy way - main_url: "https://nihgwu.github.io/stickyard/" - url: "https://nihgwu.github.io/stickyard/" - source_url: "https://github.com/nihgwu/stickyard/tree/master/website" + main_url: https://nihgwu.github.io/stickyard/ + url: https://nihgwu.github.io/stickyard/ + source_url: https://github.com/nihgwu/stickyard/tree/master/website categories: - Web Development built_by: Neo Nie @@ -1709,18 +1709,18 @@ - title: Agata Milik description: | Website of a Polish psychologist/psychotherapist based in Gdańsk, Poland. - main_url: "https://agatamilik.pl" - url: "https://agatamilik.pl" + main_url: https://agatamilik.pl + url: https://agatamilik.pl categories: - Marketing - Healthcare built_by: Piotr Fedorczyk - built_by_url: "https://piotrf.pl" + built_by_url: https://piotrf.pl featured: false - title: WebPurple - main_url: "https://www.webpurple.net/" - url: "https://www.webpurple.net/" - source_url: "https://github.com/WebPurple/site" + main_url: https://www.webpurple.net/ + url: https://www.webpurple.net/ + source_url: https://github.com/WebPurple/site description: >- Site of local (Russia, Ryazan) frontend community. Main purpose is to show info about meetups and keep blog. @@ -1731,23 +1731,23 @@ - Blog - Open Source built_by: Nikita Kirsanov - built_by_url: "https://twitter.com/kitos_kirsanov" + built_by_url: https://twitter.com/kitos_kirsanov featured: false - title: Papertrail.io description: | Inspection Management for the 21st Century - main_url: "https://www.papertrail.io/" - url: "https://www.papertrail.io/" + main_url: https://www.papertrail.io/ + url: https://www.papertrail.io/ categories: - Marketing - Technology built_by: Papertrail.io - built_by_url: "https://www.papertrail.io" + built_by_url: https://www.papertrail.io featured: false - title: Matt Ferderer - main_url: "https://mattferderer.com" - url: "https://mattferderer.com" - source_url: "https://github.com/mattferderer/gatsbyblog" + main_url: https://mattferderer.com + url: https://mattferderer.com + source_url: https://github.com/mattferderer/gatsbyblog description: > A blog built with Gatsby that discusses web related tech such as JavaScript, .NET, Blazor & security. @@ -1755,12 +1755,12 @@ - Blog - Web Development built_by: Matt Ferderer - built_by_url: "https://twitter.com/mattferderer" + built_by_url: https://twitter.com/mattferderer featured: false - title: Sahyadri Open Source Community - main_url: "https://sosc.org.in" - url: "https://sosc.org.in" - source_url: "https://github.com/haxzie/sosc-website" + main_url: https://sosc.org.in + url: https://sosc.org.in + source_url: https://github.com/haxzie/sosc-website description: > Official website of Sahyadri Open Source Community for community blog, event details and members info. @@ -1769,44 +1769,44 @@ - Community - Open Source built_by: Musthaq Ahamad - built_by_url: "https://github.com/haxzie" + built_by_url: https://github.com/haxzie featured: false - title: Tech Confessions - main_url: "https://confessions.tech" - url: "https://confessions.tech" - source_url: "https://github.com/JonathanSpeek/tech-confessions" + main_url: https://confessions.tech + url: https://confessions.tech + source_url: https://github.com/JonathanSpeek/tech-confessions description: "A guilt-free place for us to confess our tech sins \U0001F64F\n" categories: - Community - Open Source built_by: Jonathan Speek - built_by_url: "https://speek.design" + built_by_url: https://speek.design featured: false - title: Thibault Maekelbergh - main_url: "https://thibmaek.com" - url: "https://thibmaek.com" - source_url: "https://github.com/thibmaek/thibmaek.github.io" + main_url: https://thibmaek.com + url: https://thibmaek.com + source_url: https://github.com/thibmaek/thibmaek.github.io description: | A nice blog about development, Raspberry Pi, plants and probably records. categories: - Blog - Open Source built_by: Thibault Maekelbergh - built_by_url: "https://twitter.com/thibmaek" + built_by_url: https://twitter.com/thibmaek featured: false - title: LearnReact.design - main_url: "https://learnreact.design" - url: "https://learnreact.design" + main_url: https://learnreact.design + url: https://learnreact.design description: > React Essentials For Designers: A React course tailored for product designers, ux designers, ui designers. categories: - Blog built_by: Linton Ye - built_by_url: "https://twitter.com/lintonye" + built_by_url: https://twitter.com/lintonye - title: Mega House Creative - main_url: "https://www.megahousecreative.com/" - url: "https://www.megahousecreative.com/" + main_url: https://www.megahousecreative.com/ + url: https://www.megahousecreative.com/ description: > Mega House Creative is a digital agency that provides unique goal-oriented web marketing solutions. @@ -1816,30 +1816,30 @@ built_by: Daniel Robinson featured: false - title: Tobie Marier Robitaille - csc - main_url: "https://tobiemarierrobitaille.com/" - url: "https://tobiemarierrobitaille.com/en/" + main_url: https://tobiemarierrobitaille.com/ + url: https://tobiemarierrobitaille.com/en/ description: | Portfolio site for director of photography Tobie Marier Robitaille categories: - Portfolio - Gallery built_by: Mill3 Studio - built_by_url: "https://mill3.studio/en/" + built_by_url: https://mill3.studio/en/ featured: false - title: Bestvideogame.deals - main_url: "https://bestvideogame.deals/" - url: "https://bestvideogame.deals/" + main_url: https://bestvideogame.deals/ + url: https://bestvideogame.deals/ description: | Video game comparison website for the UK, build with GatsbyJS. categories: - eCommerce built_by: Koen Kamphuis - built_by_url: "https://koenkamphuis.com/" + built_by_url: https://koenkamphuis.com/ featured: false - title: Mahipat's Portfolio - main_url: "https://mojaave.com/" - url: "https://mojaave.com" - source_url: "https://github.com/mhjadav/mojaave" + main_url: https://mojaave.com/ + url: https://mojaave.com + source_url: https://github.com/mhjadav/mojaave description: > mojaave.com is Mahipat's portfolio, I have developed it using Gatsby v2 and Bootstrap, To get in touch with people looking for full-stack developer. @@ -1847,11 +1847,11 @@ - Portfolio - Web Development built_by: Mahipat Jadav - built_by_url: "https://mojaave.com/" + built_by_url: https://mojaave.com/ featured: false - title: Insights - main_url: "https://justaskusers.com/" - url: "https://justaskusers.com/" + main_url: https://justaskusers.com/ + url: https://justaskusers.com/ description: > Insights helps user experience (UX) researchers conduct their research and make sense of the findings. @@ -1859,12 +1859,12 @@ - User Experience - Design built_by: Just Ask Users - built_by_url: "https://justaskusers.com/" + built_by_url: https://justaskusers.com/ featured: false - title: Mintfort - main_url: "https://mintfort.com/" - url: "https://mintfort.com/" - source_url: "https://github.com/MintFort/mintfort.com" + main_url: https://mintfort.com/ + url: https://mintfort.com/ + source_url: https://github.com/MintFort/mintfort.com description: > Mintfort, the first crypto-friendly bank account. Store and manage assets on the blockchain. @@ -1872,27 +1872,27 @@ - Technology - Finance built_by: Axel Fuhrmann - built_by_url: "https://axelfuhrmann.com/" + built_by_url: https://axelfuhrmann.com/ featured: false - title: React Native Explorer - main_url: "https://react-native-explorer.firebaseapp.com" - url: "https://react-native-explorer.firebaseapp.com" + main_url: https://react-native-explorer.firebaseapp.com + url: https://react-native-explorer.firebaseapp.com description: | Explorer React Native packages and examples effortlessly. categories: - Education featured: false - title: 500Tech - main_url: "https://500tech.com/" - url: "https://500tech.com/" + main_url: https://500tech.com/ + url: https://500tech.com/ featured: false categories: - Web Development - Agency - Open Source - title: eworld - main_url: "https://eworld.herokuapp.com/" - url: "https://eworld.herokuapp.com/" + main_url: https://eworld.herokuapp.com/ + url: https://eworld.herokuapp.com/ featured: false categories: - eCommerce @@ -1900,8 +1900,8 @@ - title: It's a Date description: > It's a Date is a dating app that actually involves dating. - main_url: "https://www.itsadate.app/" - url: "https://www.itsadate.app/" + main_url: https://www.itsadate.app/ + url: https://www.itsadate.app/ featured: false categories: - App @@ -1911,7 +1911,7 @@ Asynchronous HBase client for NodeJs using REST. main_url: https://hbase.js.org/ url: https://hbase.js.org/ - source_url: "https://github.com/adaltas/node-hbase" + source_url: https://github.com/adaltas/node-hbase categories: - Documentation - Open Source @@ -1947,8 +1947,8 @@ built_by_url: https://twitter.com/geddski featured: false - title: Rung - main_url: "https://rung.com.br/" - url: "https://rung.com.br/" + main_url: https://rung.com.br/ + url: https://rung.com.br/ description: > Rung alerts you about the exceptionalities of your personal and professional life. categories: @@ -1957,9 +1957,9 @@ - Travel featured: false - title: Mokkapps - main_url: "https://www.mokkapps.de/" - url: "https://www.mokkapps.de/" - source_url: "https://github.com/mokkapps/website" + main_url: https://www.mokkapps.de/ + url: https://www.mokkapps.de/ + source_url: https://github.com/mokkapps/website description: > Portfolio website from Michael Hoffmann. Passionate software developer with focus on web-based technologies. categories: @@ -1969,8 +1969,8 @@ - Mobile Development featured: false - title: Premier Octet - main_url: "https://www.premieroctet.com/" - url: "https://www.premieroctet.com/" + main_url: https://www.premieroctet.com/ + url: https://www.premieroctet.com/ description: > Premier Octet is a React-based agency categories: @@ -1979,9 +1979,9 @@ - Mobile Development featured: false - title: Thorium - main_url: "https://www.thoriumsim.com/" - url: "https://www.thoriumsim.com/" - source_url: "https://github.com/thorium-sim/thoriumsim.com" + main_url: https://www.thoriumsim.com/ + url: https://www.thoriumsim.com/ + source_url: https://github.com/thorium-sim/thoriumsim.com description: > Thorium - Open-source Starship Simulator Controls for Live Action Role Play built_by: Alex Anderson @@ -1997,9 +1997,9 @@ - Web Development featured: false - title: Cameron Maske - main_url: "https://www.cameronmaske.com/" - url: "https://www.cameronmaske.com/courses/introduction-to-pytest/" - source_url: "https://github.com/cameronmaske/cameronmaske.com-v2" + main_url: https://www.cameronmaske.com/ + url: https://www.cameronmaske.com/courses/introduction-to-pytest/ + source_url: https://github.com/cameronmaske/cameronmaske.com-v2 description: > The homepage of Cameron Maske, a freelance full-stack developer, who is currently working on a free pytest video course categories: @@ -2014,27 +2014,27 @@ contribute to more equal educational opportunities by providing free tutoring to refugees and children from underprivileged families. The site is built on Gatsby v2, styled-components and Contentful. It supports Google Analytics, fluid typography and Algolia search. - main_url: "https://studenten-bilden-schueler.de" - url: "https://studenten-bilden-schueler.de" - source_url: "https://github.com/StudentenBildenSchueler/homepage" + main_url: https://studenten-bilden-schueler.de + url: https://studenten-bilden-schueler.de + source_url: https://github.com/StudentenBildenSchueler/homepage categories: - Education - Nonprofit - Blog built_by: Janosh Riebesell - built_by_url: "https://janosh.io" + built_by_url: https://janosh.io featured: false - title: Mike's Remote List - main_url: "https://www.mikesremotelist.com" - url: "https://www.mikesremotelist.com" + main_url: https://www.mikesremotelist.com + url: https://www.mikesremotelist.com description: > A list of remote jobs, updated throughout the day. Built on Gatsby v1 and powered by Contentful, Google Sheets, string and sticky tape. categories: - Marketing featured: false - title: Madvoid - main_url: "https://madvoid.com/" - url: "https://madvoid.com/screenshot/" + main_url: https://madvoid.com/ + url: https://madvoid.com/screenshot/ featured: false description: > Madvoid is a team of expert developers dedicated to creating simple, clear, usable and blazing fast web and mobile apps. @@ -2051,8 +2051,8 @@ - title: MOMNOTEBOOK.COM description: > Sharing knowledge and experiences that make childhood and motherhood rich, vibrant and healthy. - main_url: "https://momnotebook.com/" - url: "https://momnotebook.com/" + main_url: https://momnotebook.com/ + url: https://momnotebook.com/ featured: false built_by: Aleksander Hansson built_by_url: https://www.linkedin.com/in/aleksanderhansson/ @@ -2061,33 +2061,33 @@ - title: Pirate Studios description: > Reinventing music studios with 24/7 self service rehearsal, DJ & production rooms available around the world. - main_url: "https://www.piratestudios.co" - url: "https://www.piratestudios.co" + main_url: https://www.piratestudios.co + url: https://www.piratestudios.co featured: false built_by: The Pirate Studios team built_by_url: https://github.com/piratestudios/ categories: - Music - title: Aurora EOS - main_url: "https://www.auroraeos.com/" - url: "https://www.auroraeos.com/" + main_url: https://www.auroraeos.com/ + url: https://www.auroraeos.com/ featured: false categories: - Finance - Marketing - Blog built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: MadeComfy - main_url: "https://madecomfy.com.au/" - url: "https://madecomfy.com.au/" + main_url: https://madecomfy.com.au/ + url: https://madecomfy.com.au/ description: > Short term rental management startup, using Contentful + Gatsby + CircleCI featured: false categories: - Travel built_by: Lucas Vilela - built_by_url: "https://madecomfy.com.au/" + built_by_url: https://madecomfy.com.au/ - title: Tiger Facility Services description: > Tiger Facility Services combines facility management expertise with state of the art software to offer a sustainable and customer oriented cleaning and facility service. @@ -2110,8 +2110,8 @@ - title: Wire • Secure collaboration platform description: > Corporate website of Wire, an open source, end-to-end encrypted collaboration platform - main_url: "https://wire.com" - url: "https://wire.com" + main_url: https://wire.com + url: https://wire.com featured: false categories: - Open Source @@ -2120,76 +2120,76 @@ - Blog - App built_by: Wire team - built_by_url: "https://github.com/orgs/wireapp/people" + built_by_url: https://github.com/orgs/wireapp/people - title: J. Patrick Raftery - main_url: "https://www.jpatrickraftery.com" - url: "https://www.jpatrickraftery.com" + main_url: https://www.jpatrickraftery.com + url: https://www.jpatrickraftery.com description: J. Patrick Raftery is an opera singer and voice teacher based in Vancouver, BC. categories: - Portfolio - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Aria Umezawa - main_url: "https://www.ariaumezawa.com" - url: "https://www.ariaumezawa.com" + main_url: https://www.ariaumezawa.com + url: https://www.ariaumezawa.com description: Aria Umezawa is a director, producer, and writer currently based in San Francisco. Site designed by Stephen Bell. categories: - Portfolio - Music - Entertainment built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Pomegranate Opera - main_url: "https://pomegranateopera.netlify.com" - url: "https://pomegranateopera.netlify.com" + main_url: https://pomegranateopera.netlify.com + url: https://pomegranateopera.netlify.com description: Pomegranate Opera is a lesbian opera written by Amanda Hale & Kye Marshall. Site designed by Stephen Bell. categories: - Gallery - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Daniel Cabena - main_url: "https://www.danielcabena.com" - url: "https://www.danielcabena.com" + main_url: https://www.danielcabena.com + url: https://www.danielcabena.com description: Daniel Cabena is a Canadian countertenor highly regarded in both Canada and Europe for prize-winning performances ranging from baroque to contemporary repertoire. Site designed by Stephen Bell. categories: - Portfolio - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Artist.Center - main_url: "https://artistcenter.netlify.com" - url: "https://artistcenter.netlify.com" + main_url: https://artistcenter.netlify.com + url: https://artistcenter.netlify.com description: The marketing page for Artist.Center, a soon-to-launch platform designed to connect opera singers to opera companies. Site designed by Stephen Bell. categories: - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: DG Volo & Company - main_url: "https://www.dgvolo.com" - url: "https://www.dgvolo.com" + main_url: https://www.dgvolo.com + url: https://www.dgvolo.com description: DG Volo & Company is a Toronto-based investment consultancy. Site designed by Stephen Bell. categories: - Finance built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Shawna Lucey - main_url: "https://www.shawnalucey.com" - url: "https://www.shawnalucey.com" + main_url: https://www.shawnalucey.com + url: https://www.shawnalucey.com description: Shawna Lucey is an American theater and opera director based in New York City. Site designed by Stephen Bell. categories: - Portfolio - Music - Entertainment built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Leyan Lo main_url: https://www.leyanlo.com @@ -2226,9 +2226,9 @@ Personal blog and portfolio of Janosh Riebesell. The site is built with Gatsby v2 and designed entirely with styled-components v4. Much of the layout was achieved with CSS grid. It supports Google Analytics, fluid typography and Algolia search. - main_url: "https://janosh.io" - url: "https://janosh.io" - source_url: "https://github.com/janosh/janosh.io" + main_url: https://janosh.io + url: https://janosh.io + source_url: https://github.com/janosh/janosh.io categories: - Portfolio - Blog @@ -2236,11 +2236,11 @@ - Photography - Travel built_by: Janosh Riebesell - built_by_url: "https://janosh.io" + built_by_url: https://janosh.io featured: false - title: Gold Edge Training - url: "https://www.goldedgetraining.co.uk" - main_url: "https://www.goldedgetraining.co.uk" + url: https://www.goldedgetraining.co.uk + main_url: https://www.goldedgetraining.co.uk description: > AAT approved online distance learning accountancy training provider. Branded landing page / mini brochure promoting competitor differentiators, student testimonials, offers, service benefits and features. Designed to both inform potential students and encourage visits to company eCommerce site or direct company contact. categories: @@ -2250,23 +2250,23 @@ - Business - Finance built_by: Leo Furze-Waddock - built_by_url: "https://www.linkedin.com/in/lfurzewaddock" + built_by_url: https://www.linkedin.com/in/lfurzewaddock - title: Gatsby Manor description: > We build themes for gatsby. We have themes for all projects including personal, portfolio, ecommerce, landing pages and more. We also run an in-house web dev and design studio. If you cannot find what you want, we can build it for you! Email us at gatsbymanor@gmail.com with questions. - main_url: "https://www.gatsbymanor.com" - url: "https://www.gatsbymanor.com" - source_url: "https://github.com/gatsbymanor" + main_url: https://www.gatsbymanor.com + url: https://www.gatsbymanor.com + source_url: https://github.com/gatsbymanor categories: - Web Development - Agency - Technology - Freelance built_by: Steven Natera - built_by_url: "https://stevennatera.com" + built_by_url: https://stevennatera.com - title: Ema Suriano's Portfolio main_url: https://emasuriano.com/ url: https://emasuriano.com/ @@ -2339,14 +2339,14 @@ - title: Fitekran description: > One of the most visited Turkish blogs about health, sports and healthy lifestyle, that has been rebuilt with Gatsby v2 using WordPress. - main_url: "https://www.fitekran.com" - url: "https://www.fitekran.com" + main_url: https://www.fitekran.com + url: https://www.fitekran.com categories: - Science - Healthcare - Blog built_by: Burak Tokak - built_by_url: "https://www.buraktokak.com" + built_by_url: https://www.buraktokak.com - title: Serverless main_url: https://serverless.com url: https://serverless.com @@ -2426,9 +2426,9 @@ built_by: Hudl built_by_url: https://www.hudl.com/ - title: Subtle UI - main_url: "https://subtle-ui.netlify.com/" - url: "https://subtle-ui.netlify.com/" - source_url: "https://github.com/ryanwiemer/subtle-ui" + main_url: https://subtle-ui.netlify.com/ + url: https://subtle-ui.netlify.com/ + source_url: https://github.com/ryanwiemer/subtle-ui description: > A collection of clever yet understated user interactions found on the web. categories: @@ -2436,19 +2436,19 @@ - Open Source - User Experience built_by: Ryan Wiemer - built_by_url: "https://www.ryanwiemer.com/" + built_by_url: https://www.ryanwiemer.com/ featured: false - title: developer.bitcoin.com - main_url: "https://developer.bitcoin.com/" - url: "https://developer.bitcoin.com/" + main_url: https://developer.bitcoin.com/ + url: https://developer.bitcoin.com/ description: > Bitbox based bitcoin.com developer platform and resources. categories: - Finance featured: false - title: Barmej - main_url: "https://app.barmej.com/" - url: "https://app.barmej.com/" + main_url: https://app.barmej.com/ + url: https://app.barmej.com/ description: > An interactive platform to learn different programming languages in Arabic for FREE categories: @@ -2456,7 +2456,7 @@ - Programming - Learning built_by: Obytes - built_by_url: "https://www.obytes.com/" + built_by_url: https://www.obytes.com/ featured: false - title: Emergence main_url: https://emcap.com/ @@ -2493,28 +2493,28 @@ built_by_url: https://twitter.com/jumpalottahigh featured: false - title: Bear Archery - main_url: "https://beararchery.com/" - url: "https://beararchery.com/" + main_url: https://beararchery.com/ + url: https://beararchery.com/ categories: - eCommerce - Sports built_by: Escalade Sports - built_by_url: "https://www.escaladesports.com/" + built_by_url: https://www.escaladesports.com/ featured: false - title: "attn:" - main_url: "https://www.attn.com/" - url: "https://www.attn.com/" + main_url: https://www.attn.com/ + url: https://www.attn.com/ categories: - Media - Entertainment built_by: "attn:" - built_by_url: "https://www.attn.com/" + built_by_url: https://www.attn.com/ featured: false - title: Mirror Conf description: > Mirror Conf is a conference designed to empower designers and frontend developers who have a thirst for knowledge and want to broaden their horizons. - main_url: "https://www.mirrorconf.com/" - url: "https://www.mirrorconf.com/" + main_url: https://www.mirrorconf.com/ + url: https://www.mirrorconf.com/ categories: - Conference - Design @@ -2544,15 +2544,15 @@ built_by_url: https://kikobeats.com/ featured: false - title: Markets.com - main_url: "https://www.markets.com/" - url: "https://www.markets.com/" + main_url: https://www.markets.com/ + url: https://www.markets.com/ featured: false categories: - Finance - title: Kevin Legrand - url: "https://k-legrand.com" - main_url: "https://k-legrand.com" - source_url: "https://github.com/Manoz/k-legrand.com" + url: https://k-legrand.com + main_url: https://k-legrand.com + source_url: https://github.com/Manoz/k-legrand.com description: > Personal website and blog built with love with Gatsby v2 categories: @@ -2610,15 +2610,15 @@ built_by_url: https://github.com/ianbusko featured: false - title: People For Bikes - url: "https://2017.peopleforbikes.org/" - main_url: "https://2017.peopleforbikes.org/" + url: https://2017.peopleforbikes.org/ + main_url: https://2017.peopleforbikes.org/ categories: - Community - Sports - Gallery - Nonprofit built_by: PeopleForBikes - built_by_url: "https://peopleforbikes.org/about-us/who-we-are/staff/" + built_by_url: https://peopleforbikes.org/about-us/who-we-are/staff/ featured: false - title: Wide Eye description: > @@ -2810,16 +2810,16 @@ I enjoy teaching and sharing what I know. I give professional advice to developers and companies. My wife and my children are everything in my life. - main_url: "https://ramonchancay.me/" - url: "https://ramonchancay.me/" - source_url: "https://github.com/devrchancay/personal-site" + main_url: https://ramonchancay.me/ + url: https://ramonchancay.me/ + source_url: https://github.com/devrchancay/personal-site featured: false categories: - Blog - Technology - Web Development built_by: Ramón Chancay - built_by_url: "https://ramonchancay.me/" + built_by_url: https://ramonchancay.me/ - title: BELLHOPS main_url: https://www.getbellhops.com/ url: https://www.getbellhops.com/ @@ -2943,9 +2943,9 @@ built_by_url: https://github.com/JAMstack-paris featured: false - title: DexWallet - The only Wallet you need by Dexlab - main_url: "https://www.dexwallet.io/" - url: "https://www.dexwallet.io/" - source_url: "https://github.com/dexlab-io/DexWallet-website" + main_url: https://www.dexwallet.io/ + url: https://www.dexwallet.io/ + source_url: https://github.com/dexlab-io/DexWallet-website featured: false description: >- DexWallet is a secure, multi-chain, mobile wallet with an upcoming one-click exchange for mobile. @@ -2953,7 +2953,7 @@ - App - Open Source built_by: DexLab - built_by_url: "https://github.com/dexlab-io" + built_by_url: https://github.com/dexlab-io - title: Kings Valley Paving url: https://kingsvalleypaving.com main_url: https://kingsvalleypaving.com @@ -2965,8 +2965,8 @@ built_by_url: https://www.michaeluloth.com featured: false - title: Peter Barrett - url: "https://www.peterbarrett.ca" - main_url: "https://www.peterbarrett.ca" + url: https://www.peterbarrett.ca + main_url: https://www.peterbarrett.ca description: > Peter Barrett is a Canadian baritone from Newfoundland and Labrador who performs opera and concert repertoire in Canada, the U.S. and around the world. Site designed by Stephen Bell. categories: @@ -3026,9 +3026,9 @@ built_by_url: https://www.clearme.com featured: false - title: VS Code Rocks - main_url: "https://vscode.rocks" - url: "https://vscode.rocks" - source_url: "https://github.com/lannonbr/vscode-rocks" + main_url: https://vscode.rocks + url: https://vscode.rocks + source_url: https://github.com/lannonbr/vscode-rocks featured: false description: > VS Code Rocks is a place for weekly news on the newest features and updates to Visual Studio Code as well as trending extensions and neat tricks to continually improve your VS Code skills. @@ -3037,25 +3037,25 @@ - Blog - Web Development built_by: Benjamin Lannon - built_by_url: "https://github.com/lannonbr" + built_by_url: https://github.com/lannonbr - title: Particle - main_url: "https://www.particle.io" - url: "https://www.particle.io" + main_url: https://www.particle.io + url: https://www.particle.io featured: false description: Particle is a fully-integrated IoT platform that offers everything you need to deploy an IoT product. categories: - Marketing - title: freeCodeCamp curriculum - main_url: "https://learn.freecodecamp.org" - url: "https://learn.freecodecamp.org" + main_url: https://learn.freecodecamp.org + url: https://learn.freecodecamp.org featured: false description: Learn to code with free online courses, programming projects, and interview preparation for developer jobs. categories: - Web Development - Learning - title: Tandem - main_url: "https://www.tandem.co.uk" - url: "https://www.tandem.co.uk" + main_url: https://www.tandem.co.uk + url: https://www.tandem.co.uk description: > We're on a mission to free you of money misery. Our app, card and savings account are designed to help you spend less time worrying about money and more time enjoying life. categories: @@ -3065,8 +3065,8 @@ built_by_url: https://github.com/tandembank featured: false - title: Monbanquet.fr - main_url: "https://monbanquet.fr" - url: "https://monbanquet.fr" + main_url: https://monbanquet.fr + url: https://monbanquet.fr description: > Give your corporate events the food and quality it deserves, thanks to the know-how of the best local artisans. categories: @@ -3088,8 +3088,8 @@ built_by_url: https://github.com/v4iv featured: false - title: Wild Drop Surf Camp - main_url: "https://wilddropsurfcamp.com" - url: "https://wilddropsurfcamp.com" + main_url: https://wilddropsurfcamp.com + url: https://wilddropsurfcamp.com description: > Welcome to Portugal's best kept secret and be amazed with our nature. Here you can explore, surf, taste the world's best gastronomy and wine, feel the North Canyon's power with the biggest waves in the world and so many other amazing things. Find us, discover yourself! categories: @@ -3131,7 +3131,7 @@ - Education - Open Source built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com - title: Grooovinger url: https://www.grooovinger.com main_url: https://www.grooovinger.com @@ -3237,7 +3237,7 @@ - Gallery featured: false built_by: LekoArts - built_by_url: "https://github.com/LekoArts" + built_by_url: https://github.com/LekoArts description: > Source from The Movie Database (TMDb) API (v3) in Gatsby. This example is built with react-spring, React hooks and react-tabs and showcases the gatsby-source-tmdb plugin. It also has some client-only paths and uses gatsby-image. - title: LANDR - Creative Tools for Musicians @@ -3264,19 +3264,19 @@ - Documentation featured: false built_by: NearForm - built_by_url: "https://www.nearform.com/" + built_by_url: https://www.nearform.com/ description: > Tools to help diagnose and pinpoint Node.js performance issues. - title: KOBIT - main_url: "https://kobit.in" - url: "https://kobit.in" + main_url: https://kobit.in + url: https://kobit.in description: Automated Google Analytics Report with everything you need and more featured: false categories: - Marketing - Blog built_by: mottox2 - built_by_url: "https://mottox2.com" + built_by_url: https://mottox2.com - title: Aleksander Hansson main_url: https://ahansson.com url: https://ahansson.com @@ -3293,8 +3293,8 @@ built_by: Aleksander Hansson built_by_url: https://www.linkedin.com/in/aleksanderhansson/ - title: Surfing Nosara - main_url: "https://www.surfingnosara.com" - url: "https://www.surfingnosara.com" + main_url: https://www.surfingnosara.com + url: https://www.surfingnosara.com description: Real estate, vacation, and surf report hub for Nosara, Costa Rica featured: false categories: @@ -3303,7 +3303,7 @@ - Gallery - Marketing built_by: Desarol - built_by_url: "https://www.desarol.com" + built_by_url: https://www.desarol.com - title: Crispin Porter Bogusky url: https://cpbgroup.com/ main_url: https://cpbgroup.com/ @@ -3326,8 +3326,8 @@ - Documentation featured: false - title: Engel & Völkers Ibiza Holiday Rentals - main_url: "https://www.ev-ibiza.com/" - url: "https://www.ev-ibiza.com/" + main_url: https://www.ev-ibiza.com/ + url: https://www.ev-ibiza.com/ featured: false built_by: Ventura Digitalagentur description: > @@ -3335,16 +3335,16 @@ categories: - Travel - title: Sylvain Hamann's personal website - url: "https://shamann.fr" - main_url: "https://shamann.fr" - source_url: "https://github.com/sylvhama/shamann-gatsby/" + url: https://shamann.fr + main_url: https://shamann.fr + source_url: https://github.com/sylvhama/shamann-gatsby/ description: > Sylvain Hamann, web developer from France categories: - Portfolio - Web Development built_by: Sylvain Hamann - built_by_url: "https://twitter.com/sylvhama" + built_by_url: https://twitter.com/sylvhama featured: false - title: Luca Crea's portfolio main_url: https://lcrea.github.io @@ -3357,17 +3357,17 @@ built_by_url: https://github.com/lcrea featured: false - title: Escalade Sports - main_url: "https://www.escaladesports.com/" - url: "https://www.escaladesports.com/" + main_url: https://www.escaladesports.com/ + url: https://www.escaladesports.com/ categories: - eCommerce - Sports built_by: Escalade Sports - built_by_url: "https://www.escaladesports.com/" + built_by_url: https://www.escaladesports.com/ featured: false - title: Exposify - main_url: "https://www.exposify.de/" - url: "https://www.exposify.de/" + main_url: https://www.exposify.de/ + url: https://www.exposify.de/ description: > This is our German website built with Gatsby 2.0, Emotion and styled-system. Exposify is a proptech startup and builds technology for real estate businesses. @@ -3379,7 +3379,7 @@ - Agency - Marketing built_by: Exposify - built_by_url: "https://www.exposify.de/" + built_by_url: https://www.exposify.de/ featured: false - title: Steak Point main_url: https://www.steakpoint.at/ @@ -3392,27 +3392,27 @@ built_by_url: https://www.peterkroyer.at/ featured: false - title: Takumon blog - main_url: "https://takumon.com" - url: "https://takumon.com" - source_url: "https://github.com/Takumon/blog" + main_url: https://takumon.com + url: https://takumon.com + source_url: https://github.com/Takumon/blog description: Java Engineer's tech blog. featured: false categories: - Blog built_by: Takumon - built_by_url: "https://twitter.com/inouetakumon" + built_by_url: https://twitter.com/inouetakumon - title: DayThirty - main_url: "https://daythirty.com" - url: "https://daythirty.com" + main_url: https://daythirty.com + url: https://daythirty.com description: DayThirty - ideas for the new year. featured: false categories: - Marketing built_by: Jack Oliver - built_by_url: "https://twitter.com/mrjackolai" + built_by_url: https://twitter.com/mrjackolai - title: TheAgencyProject - main_url: "https://theagencyproject.co" - url: "https://theagencyproject.co" + main_url: https://theagencyproject.co + url: https://theagencyproject.co description: Agency model, without agency overhead. categories: - Agency @@ -3427,67 +3427,67 @@ built_by_url: https://github.com/karenhou featured: false - title: Jean Luc Ponty - main_url: "https://ponty.com" - url: "https://ponty.com" + main_url: https://ponty.com + url: https://ponty.com description: Official site for Jean Luc Ponty, French virtuoso violinist and jazz composer. featured: false categories: - Music - Entertainment built_by: Othermachines - built_by_url: "https://othermachines.com" + built_by_url: https://othermachines.com - title: Rosewood Family Advisors - main_url: "https://www.rfallp.com/" - url: "https://www.rfallp.com/" + main_url: https://www.rfallp.com/ + url: https://www.rfallp.com/ description: Rosewood Family Advisors LLP (Palo Alto) provides a diverse range of family office services customized for ultra high net worth individuals. featured: false categories: - Finance - Business built_by: Othermachines - built_by_url: "https://othermachines.com" + built_by_url: https://othermachines.com - title: Standing By Company - main_url: "https://standingby.company" - url: "https://standingby.company" + main_url: https://standingby.company + url: https://standingby.company description: A brand experience design company led by Scott Mackenzie and Trent Barton. featured: false categories: - Design - Web Development built_by: Standing By Company - built_by_url: "https://standingby.company" + built_by_url: https://standingby.company - title: Ashley Thouret - main_url: "https://www.ashleythouret.com" - url: "https://www.ashleythouret.com" + main_url: https://www.ashleythouret.com + url: https://www.ashleythouret.com description: Official website of Canadian soprano Ashley Thouret. Site designed by Stephen Bell. categories: - Portfolio - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: The AZOOR Society - main_url: "https://www.azoorsociety.org" - url: "https://www.azoorsociety.org" + main_url: https://www.azoorsociety.org + url: https://www.azoorsociety.org description: The AZOOR Society is a UK-based charity committed to promoting awareness of Acute Zonal Occult Outer Retinopathy and assisting further research. Site designed by Stephen Bell. categories: - Community - Nonprofit built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com featured: false - title: Gábor Fűzy pianist - main_url: "https://pianobar.hu" - url: "https://pianobar.hu" + main_url: https://pianobar.hu + url: https://pianobar.hu description: Gábor Fűzy pianist's official website built with Gatsby v2. categories: - Music built_by: Zoltán Bedi - built_by_url: "https://github.com/B3zo0" + built_by_url: https://github.com/B3zo0 featured: false - title: Logicwind - main_url: "https://logicwind.com" - url: "https://logicwind.com" + main_url: https://logicwind.com + url: https://logicwind.com description: Website of Logicwind - JavaScript experts, Technology development agency & consulting. featured: false categories: @@ -3496,32 +3496,32 @@ - Web Development - Consulting built_by: Logicwind - built_by_url: "https://www.logicwind.com" + built_by_url: https://www.logicwind.com - title: ContactBook.app - main_url: "https://contactbook.app" - url: "https://contactbook.app" + main_url: https://contactbook.app + url: https://contactbook.app description: Seamlessly share Contacts with G Suite team members featured: false categories: - Landing Page - Blog built_by: Logicwind - built_by_url: "https://www.logicwind.com" + built_by_url: https://www.logicwind.com - title: Waterscapes - main_url: "https://waterscap.es" - url: "https://waterscap.es/lake-monteynard/" - source_url: "https://github.com/gaelbillon/Waterscapes-Gatsby-site" + main_url: https://waterscap.es + url: https://waterscap.es/lake-monteynard/ + source_url: https://github.com/gaelbillon/Waterscapes-Gatsby-site description: Waterscap.es is a directory of bodies of water (creeks, ponds, waterfalls, lakes, etc) with information about each place such as how to get there, hike time, activities and photos and a map displayed with the Mapbox GL SJ npm package. It was developed with the goal of learning Gatsby. This website is based on the gatsby-contentful-starter and uses Contentful as CMS. It is hosted on Netlify. Hooks are setup with Bitbucket and Contentful to trigger a new build upon code or content changes. The data on Waterscap.es is a mix of original content and informations from the internets gathered and put together. categories: - Directory - Photography - Travel built_by: Gaël Billon - built_by_url: "https://gaelbillon.com" + built_by_url: https://gaelbillon.com featured: false - title: Packrs - url: "https://www.packrs.co/" - main_url: "https://www.packrs.co/" + url: https://www.packrs.co/ + main_url: https://www.packrs.co/ description: > Packrs is a local delivery platform, one spot for all your daily requirements. On a single tap get everything you need at your doorstep. categories: @@ -3529,12 +3529,12 @@ - Landing Page - Entrepreneurship built_by: Vipin Kumar Rawat - built_by_url: "https://github.com/aesthytik" + built_by_url: https://github.com/aesthytik featured: false - title: HyakuninIsshu - main_url: "https://hyakuninanki.net" - url: "https://hyakuninanki.net" - source_url: "https://github.com/rei-m/web_hyakuninisshu" + main_url: https://hyakuninanki.net + url: https://hyakuninanki.net + source_url: https://github.com/rei-m/web_hyakuninisshu description: > HyakuninIsshu is a traditional Japanese card game. categories: @@ -3542,33 +3542,33 @@ - Gallery - Entertainment built_by: Rei Matsushita - built_by_url: "https://github.com/rei-m/" + built_by_url: https://github.com/rei-m/ featured: false - title: WQU Partners - main_url: "https://partners.wqu.org/" - url: "https://partners.wqu.org/" + main_url: https://partners.wqu.org/ + url: https://partners.wqu.org/ featured: false categories: - Marketing - Education - Landing Page built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: Federico Giacone - url: "https://federico.giac.one/" - main_url: "https://federico.giac.one" - source_url: "https://github.com/leopuleo/federico.giac.one" + url: https://federico.giac.one/ + main_url: https://federico.giac.one + source_url: https://github.com/leopuleo/federico.giac.one description: > Digital portfolio for Italian Architect Federico Giacone. categories: - Portfolio - Gallery built_by: Leonardo Giacone - built_by_url: "https://github.com/leopuleo" + built_by_url: https://github.com/leopuleo featured: false - title: Station - url: "https://getstation.com/" - main_url: "https://getstation.com/" + url: https://getstation.com/ + main_url: https://getstation.com/ description: Station is the first smart browser for busy people. A single place for all of your web applications. categories: - Technology @@ -3576,9 +3576,9 @@ - Productivity featured: false - title: Vyron Vasileiadis - url: "https://fedonman.com/" - main_url: "https://fedonman.com" - source_url: "https://github.com/fedonman/fedonman-website" + url: https://fedonman.com/ + main_url: https://fedonman.com + source_url: https://github.com/fedonman/fedonman-website description: Personal space of Vyron Vasileiadis aka fedonman, a Web & IoT Developer, Educator and Entrepreneur based in Athens, Greece. categories: - Portfolio @@ -3586,11 +3586,11 @@ - Web Development - Education built_by: Vyron Vasileiadis - built_by_url: "https://github.com/fedonman" + built_by_url: https://github.com/fedonman - title: Fabien Champigny - url: "https://www.champigny.name/" - main_url: "https://www.champigny.name/" - built_by_url: "https://www.champigny.name/" + url: https://www.champigny.name/ + main_url: https://www.champigny.name/ + built_by_url: https://www.champigny.name/ description: Fabien Champigny's personal blog. Entrepreneur, hacker and loves street photo. categories: - Blog @@ -3798,7 +3798,7 @@ - Marketing - Real Estate built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com - title: Incremental - Loyalty, Rewards and Incentive Programs main_url: https://www.incremental.com.au url: https://www.incremental.com.au @@ -3925,8 +3925,8 @@ built_by: timehackers featured: false - title: Little & Big - main_url: "https://www.littleandbig.com.au/" - url: "https://www.littleandbig.com.au/" + main_url: https://www.littleandbig.com.au/ + url: https://www.littleandbig.com.au/ description: > Little & Big exists with the aim to create Websites, Apps, E-commerce stores that are consistently unique and thoughtfully crafted, every time. @@ -3936,18 +3936,18 @@ - Web Development - Portfolio built_by: Little & Big - built_by_url: "https://www.littleandbig.com.au/" + built_by_url: https://www.littleandbig.com.au/ featured: false - title: Cat Knows - main_url: "https://catnose99.com/" - url: "https://catnose99.com/" + main_url: https://catnose99.com/ + url: https://catnose99.com/ description: > Personal blog built with Gatsby v2. categories: - Blog - Web Development built_by: CatNose - built_by_url: "https://twitter.com/catnose99" + built_by_url: https://twitter.com/catnose99 featured: false - title: just some dev url: https://www.iamdeveloper.com @@ -3981,9 +3981,9 @@ built_by: Daniel Uhlmann built_by_url: https://www.xfuture-blog.com/ - title: Mayne's Blog - main_url: "https://gine.me/" - url: "https://gine.me/page/1" - source_url: "https://github.com/mayneyao/gine-blog" + main_url: https://gine.me/ + url: https://gine.me/page/1 + source_url: https://github.com/mayneyao/gine-blog featured: false categories: - Blog @@ -4115,15 +4115,15 @@ - Documentation - Education - title: Sherpalo Ventures - main_url: "https://www.sherpalo.com/" - url: "https://www.sherpalo.com/" + main_url: https://www.sherpalo.com/ + url: https://www.sherpalo.com/ featured: false categories: - Finance - Business - Technology built_by: Othermachines - built_by_url: "https://othermachines.com" + built_by_url: https://othermachines.com - title: WrapCode url: https://www.wrapcode.com main_url: https://www.wrapcode.com @@ -4181,9 +4181,9 @@ - Government featured: false - title: SpotYou - main_url: "https://spotyou.joshglazer.com" - url: "https://spotyou.joshglazer.com" - source_url: "https://github.com/joshglazer/spotyou" + main_url: https://spotyou.joshglazer.com + url: https://spotyou.joshglazer.com + source_url: https://github.com/joshglazer/spotyou description: > SpotYou allows you to watch your favorite music videos on Youtube based on your Spotify Preferences categories: @@ -4195,9 +4195,9 @@ - title: Hesam Kaveh's blog description: > A blog with great seo that using gatsby-source-wordpress to fetch posts from backend - main_url: "https://hesamkaveh.com/" - url: "https://hesamkaveh.com/" - source_url: "https://github.com/hesamkaveh/sansi" + main_url: https://hesamkaveh.com/ + url: https://hesamkaveh.com/ + source_url: https://github.com/hesamkaveh/sansi featured: false categories: - Blog @@ -4242,9 +4242,9 @@ - title: Jacob Cofman's Blog description: > Personal blog / portfolio about Jacob Cofman. - main_url: "https://jcofman.de/" - url: "https://jcofman.de/" - source_url: "https://github.com/JCofman/jc-website" + main_url: https://jcofman.de/ + url: https://jcofman.de/ + source_url: https://github.com/JCofman/jc-website featured: false categories: - Blog @@ -4252,9 +4252,9 @@ - title: re-geo description: > re-geo is react based geo cities style component. - main_url: "https://re-geo.netlify.com/" - url: "https://re-geo.netlify.com/" - source_url: "https://github.com/sadnessOjisan/re-geo-lp" + main_url: https://re-geo.netlify.com/ + url: https://re-geo.netlify.com/ + source_url: https://github.com/sadnessOjisan/re-geo-lp categories: - Open Source built_by: sadnessOjisan @@ -4263,9 +4263,9 @@ - title: Luis Cestou Portfolio description: > Portfolio of graphic + interactive designer Luis Cestou. - main_url: "https://luiscestou.com" - url: "https://luiscestou.com" - source_url: "https://github.com/lcestou/luiscestou.com" + main_url: https://luiscestou.com + url: https://luiscestou.com + source_url: https://github.com/lcestou/luiscestou.com built_by: Luis Cestou contact@luiscestou.com built_by_url: https://luiscestou.com featured: false @@ -4306,9 +4306,9 @@ built_by_url: https://kaordica.design featured: false - title: We Are Clarks - url: "https://www.weareclarks.com" - main_url: "https://www.weareclarks.com" - source_url: "https://github.com/abeaclark/weareclarks" + url: https://www.weareclarks.com + main_url: https://www.weareclarks.com + source_url: https://github.com/abeaclark/weareclarks description: > A family travel blog. categories: @@ -4318,9 +4318,9 @@ built_by_url: https://www.linkedin.com/in/abrahamclark/ featured: false - title: Guillaume Briday's Blog - main_url: "https://guillaumebriday.fr/" - url: "https://guillaumebriday.fr/" - source_url: "https://github.com/guillaumebriday/guillaumebriday.fr" + main_url: https://guillaumebriday.fr/ + url: https://guillaumebriday.fr/ + source_url: https://github.com/guillaumebriday/guillaumebriday.fr description: > My personal blog built with Gatsby and Tailwind CSS. categories: @@ -4331,9 +4331,9 @@ built_by_url: https://guillaumebriday.fr/ featured: false - title: Jean Regisser's Portfolio - main_url: "https://jeanregisser.com/" - url: "https://jeanregisser.com/" - source_url: "https://github.com/jeanregisser/jeanregisser.com" + main_url: https://jeanregisser.com/ + url: https://jeanregisser.com/ + source_url: https://github.com/jeanregisser/jeanregisser.com featured: false description: > Portfolio of software engineer Jean Regisser. @@ -4341,7 +4341,7 @@ - Portfolio - Mobile Development built_by: Jean Regisser - built_by_url: "https://jeanregisser.com/" + built_by_url: https://jeanregisser.com/ - title: Chase Ohlson url: https://chaseohlson.com main_url: https://chaseohlson.com @@ -4356,14 +4356,14 @@ - title: Zach Schnackel url: https://zslabs.com main_url: https://zslabs.com - source_url: "https://github.com/zslabs/zslabs.com" + source_url: https://github.com/zslabs/zslabs.com description: > Portfolio site for UI/Motion Developer, Zach Schnackel. categories: - Portfolio - Web Development built_by: Zach Schnackel - built_by_url: "https://zslabs.com" + built_by_url: https://zslabs.com - title: Gremlin url: https://www.gremlin.com main_url: https://www.gremlin.com @@ -4385,7 +4385,7 @@ - title: Ouracademy main_url: https://our-academy.org/ url: https://our-academy.org/ - source_url: "https://github.com/ouracademy/website" + source_url: https://github.com/ouracademy/website description: > Ouracademy is an organization that promoves the education in software development through blog posts & videos smiley. categories: @@ -4596,14 +4596,14 @@ - title: Artem Sapegin Photography description: > Photography portfolio and blog of Artem Sapegin, an award-losing photographer living in Berlin, Germany. Landscapes, cityscapes and dogs. - main_url: "https://morning.photos/" - url: "https://morning.photos/" - source_url: "https://github.com/sapegin/morning.photos" + main_url: https://morning.photos/ + url: https://morning.photos/ + source_url: https://github.com/sapegin/morning.photos categories: - Portfolio - Photography built_by: Artem Sapegin - built_by_url: "https://github.com/sapegin" + built_by_url: https://github.com/sapegin - title: Pattyrn main_url: https://pattyrn.com url: https://pattyrn.com @@ -4697,8 +4697,8 @@ built_by_url: https://twitter.com/GeraldM_92 featured: false - title: Becreatives - main_url: "https://becreatives.com" - url: "https://becreatives.com" + main_url: https://becreatives.com + url: https://becreatives.com featured: false description: > Digital software house. Enlights ideas. Think smart execute harder. @@ -4708,7 +4708,7 @@ - Agency - Marketing built_by: Becreatives - built_by_url: "https://becreatives.com" + built_by_url: https://becreatives.com - title: Paul Clifton Photography main_url: https://paulcliftonphotography.com url: https://paulcliftonphotography.com @@ -4820,9 +4820,9 @@ - title: Filipe Santos Correa's Portfolio description: > Filipe's Personal About Me / Portfolio. - main_url: "https://filipesantoscorrea.com/" - url: "https://filipesantoscorrea.com/" - source_url: "https://github.com/Safi1012/filipesantoscorrea.com" + main_url: https://filipesantoscorrea.com/ + url: https://filipesantoscorrea.com/ + source_url: https://github.com/Safi1012/filipesantoscorrea.com featured: false categories: - Portfolio @@ -4837,7 +4837,7 @@ - Government - Education built_by: Alex Holachek - built_by_url: "https://alex.holachek.com/" + built_by_url: https://alex.holachek.com/ - title: Jeff Wolff – Portfolio main_url: https://www.jeffwolff.net url: https://www.jeffwolff.net @@ -4887,7 +4887,7 @@ - Science - Technology built_by: Jonathan Z. Fisher - built_by_url: "https://jonzfisher.com" + built_by_url: https://jonzfisher.com - title: Sal's Pals main_url: https://www.sals-pals.net url: https://www.sals-pals.net @@ -5574,7 +5574,7 @@ - Portfolio - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com - title: Alison Moritz url: https://www.alisonmoritz.com main_url: https://www.alisonmoritz.com @@ -5584,7 +5584,7 @@ - Portfolio - Music built_by: Michael Uloth - built_by_url: "https://www.michaeluloth.com" + built_by_url: https://www.michaeluloth.com - title: Luke Secomb Digital url: https://lukesecomb.digital main_url: https://lukesecomb.digital @@ -5845,8 +5845,8 @@ built_by_url: https://oberon.nl/ featured: false - title: Libra - main_url: "https://libra.org/" - url: "https://libra.org/" + main_url: https://libra.org/ + url: https://libra.org/ description: Libra's mission is to enable a simple global currency and financial infrastructure that empowers billions of people. featured: false categories: @@ -5892,25 +5892,25 @@ built_by_url: https://grantholle.com featured: false - title: Canvas 1839 - main_url: "https://www.canvas1839.com/" - url: "https://www.canvas1839.com/" + main_url: https://www.canvas1839.com/ + url: https://www.canvas1839.com/ description: >- Online store for Canvas 1839 products, including pharmacological-grade CBD oil and relief cream. categories: - eCommerce - Marketing built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: Sparkle Stories - main_url: "https://app.sparklestories.com/" - url: "https://app.sparklestories.com/" + main_url: https://app.sparklestories.com/ + url: https://app.sparklestories.com/ description: >- Sparkle Stories is a streaming audio platform for children with over 1,200 original audio stories. categories: - App - Education built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: nehalist.io main_url: https://nehalist.io url: https://nehalist.io @@ -6000,17 +6000,17 @@ built_by_url: https://github.com/mbifulco featured: false - title: Sankarsan Kampa - main_url: "https://traction.one" - url: "https://traction.one" + main_url: https://traction.one + url: https://traction.one description: Full time programmer, part time gamer, exploring the details of programmable systems and how to stretch their capabilities. featured: false categories: - Portfolio - Freelance - title: AwesomeDocs - main_url: "https://awesomedocs.traction.one/" - url: "https://awesomedocs.traction.one/install" - source_url: "https://github.com/AwesomeDocs/website" + main_url: https://awesomedocs.traction.one/ + url: https://awesomedocs.traction.one/install + source_url: https://github.com/AwesomeDocs/website description: An awesome documentation website generator! featured: false categories: @@ -6019,11 +6019,11 @@ - Technology - Documentation built_by: Sankarsan Kampa - built_by_url: "https://traction.one" + built_by_url: https://traction.one - title: Prism Programming Language - main_url: "https://prism.traction.one/" - url: "https://prism.traction.one/" - source_url: "https://github.com/PrismLang/website" + main_url: https://prism.traction.one/ + url: https://prism.traction.one/ + source_url: https://github.com/PrismLang/website description: Interpreted, high-level, programming language. featured: false categories: @@ -6032,22 +6032,22 @@ - Technology - Documentation built_by: Sankarsan Kampa - built_by_url: "https://traction.one" + built_by_url: https://traction.one - title: Arnondora - main_url: "https://arnondora.in.th/" - url: "https://arnondora.in.th/" - source_url: "https://github.com/arnondora/arnondoraBlog" + main_url: https://arnondora.in.th/ + url: https://arnondora.in.th/ + source_url: https://github.com/arnondora/arnondoraBlog description: Arnondora is a personal blog by Arnon Puitrakul categories: - Blog - Programming - Technology built_by: Arnon Puitrakul - built_by_url: "https://arnondora.in.th/" + built_by_url: https://arnondora.in.th/ featured: false - title: KingsDesign - url: "https://www.kingsdesign.com.au/" - main_url: "https://www.kingsdesign.com.au/" + url: https://www.kingsdesign.com.au/ + main_url: https://www.kingsdesign.com.au/ description: KingsDesign is a Hobart based web design and development company. KingsDesign creates, designs, measures and improves web based solutions for businesses and organisations across Australia. categories: - Agency @@ -6056,10 +6056,10 @@ - Consulting - User Experience built_by: KingsDesign - built_by_url: "https://www.kingsdesign.com.au" + built_by_url: https://www.kingsdesign.com.au - title: EasyFloh | Easy Flows for all - url: "https://www.easyfloh.com" - main_url: "https://www.easyfloh.com" + url: https://www.easyfloh.com + main_url: https://www.easyfloh.com description: > EasyFloh is for creating simple flows for your organisation. An organisation can design own flows with own stages. @@ -6067,7 +6067,7 @@ - Business - Landing Page built_by: Vikram Aroskar - built_by_url: "https://medium.com/@vikramaroskar" + built_by_url: https://medium.com/@vikramaroskar featured: false - title: Home Alarm Report url: https://homealarmreport.com/ @@ -6084,19 +6084,19 @@ built_by: Centerfield Media built_by_url: https://www.centerfield.com - title: Just | FX for treasurers - url: "https://www.gojust.com" - main_url: "https://www.gojust.com" + url: https://www.gojust.com + main_url: https://www.gojust.com description: > Just provides a single centralized view of FX for corporate treasurers. See interbank market prices, and access transaction cost analysis. categories: - Finance - Technology built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ featured: false - title: Bureau for Good | Nonprofit branding, web and print communications - url: "https://www.bureauforgood.com" - main_url: "https://www.bureauforgood.com" + url: https://www.bureauforgood.com + main_url: https://www.bureauforgood.com description: > Bureau for Good helps nonprofits explain why they matter across digital & print media. Bureau for Good crafts purpose-driven identities, websites & print materials for changemakers. categories: @@ -6104,22 +6104,22 @@ - Agency - Design built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ featured: false - title: Atelier Cartier Blumen - url: "https://www.ateliercartier.ch" - main_url: "https://www.ateliercartier.ch" + url: https://www.ateliercartier.ch + main_url: https://www.ateliercartier.ch description: > Im schönen Kreis 6 in Zürich kreiert Nicole Cartier Blumenkompositionen anhand Charaktereigenschaften oder Geschichten zur Person an. Für wen ist Dein Blumenstrauss gedacht? Einzigartige Floristik Blumensträusse, Blumenabos, Events, Shootings. Site designed by https://www.stolfo.co categories: - eCommerce - Design built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ featured: false - title: Veronym – Cloud Security Service Provider - url: "https://www.veronym.com" - main_url: "https://www.veronym.com" + url: https://www.veronym.com + main_url: https://www.veronym.com description: > Veronym is securing your digital transformation. A comprehensive Internet security solution for business. Stay safe no matter how, where and when you connect. categories: @@ -6127,18 +6127,18 @@ - Technology - Business built_by: Bejamas - built_by_url: "https://bejamas.io/" + built_by_url: https://bejamas.io/ featured: false - title: Devahoy - url: "https://devahoy.com/" - main_url: "https://devahoy.com/" + url: https://devahoy.com/ + main_url: https://devahoy.com/ description: > Devahoy is a personal blog written in Thai about software development. categories: - Blog - Programming built_by: Chai Phonbopit - built_by_url: "https://github.com/phonbopit" + built_by_url: https://github.com/phonbopit featured: false - title: Venus Lover url: https://venuslover.com @@ -6335,7 +6335,7 @@ - Nonprofit - eCommerce built_by: Little & Big - built_by_url: "https://www.littleandbig.com.au/" + built_by_url: https://www.littleandbig.com.au/ featured: false - title: Reactgo blog url: https://reactgo.com/ @@ -6348,7 +6348,7 @@ - Programming - Web Development built_by: Sai gowtham - built_by_url: "https://twitter.com/saigowthamr" + built_by_url: https://twitter.com/saigowthamr featured: false - title: City Springs url: https://citysprings.com/ @@ -6418,11 +6418,11 @@ - Web Development featured: false - title: Free & Open Source Gatsby Themes by LekoArts - main_url: "https://themes.lekoarts.de" - url: "https://themes.lekoarts.de" - source_url: "https://github.com/LekoArts/gatsby-themes/tree/master/www" + main_url: https://themes.lekoarts.de + url: https://themes.lekoarts.de + source_url: https://github.com/LekoArts/gatsby-themes/tree/master/www built_by: LekoArts - built_by_url: "https://github.com/LekoArts" + built_by_url: https://github.com/LekoArts description: >- Get high-quality and customizable Gatsby themes to quickly bootstrap your website! Choose from many professionally created and impressive designs with a wide variety of features and customization options. Use Gatsby Themes to take your project to the next level and let you and your customers take advantage of the many benefits Gatsby has to offer. categories: @@ -6503,19 +6503,19 @@ - Photography - Portfolio built_by: Little & Big - built_by_url: "https://www.littleandbig.com.au/" + built_by_url: https://www.littleandbig.com.au/ featured: false - title: Eventos orellana description: >- We are a company dedicated to providing personalized and professional advice for the elaboration and coordination of social and business events. - main_url: "https://eventosorellana.com/" - url: "https://eventosorellana.com/" + main_url: https://eventosorellana.com/ + url: https://eventosorellana.com/ featured: false categories: - Gallery built_by: Ramón Chancay - built_by_url: "https://ramonchancay.me/" + built_by_url: https://ramonchancay.me/ - title: DIA Supermercados main_url: https://dia.com.br url: https://dia.com.br @@ -6739,8 +6739,8 @@ - title: Ronald Langeveld description: > Ronald Langeveld's blog and Web Development portfolio website. - main_url: "https://www.ronaldlangeveld.com" - url: "https://www.ronaldlangeveld.com" + main_url: https://www.ronaldlangeveld.com + url: https://www.ronaldlangeveld.com categories: - Blog - Web Development @@ -6835,9 +6835,9 @@ - Marketing featured: false - title: Hayato KAJIYAMA - Portfolio - main_url: "https://hyakt.dev" - url: "https://hyakt.dev" - source_url: "https://github.com/hyakt/hyakt.github.io" + main_url: https://hyakt.dev + url: https://hyakt.dev + source_url: https://github.com/hyakt/hyakt.github.io featured: false categories: - Portfolio @@ -6955,15 +6955,15 @@ description: >- Recipes and videos with the best of Ecuadorian cuisine. Collectable recipes from Diario El Universo. - main_url: "https://recetas-eu.netlify.com/" - url: "https://recetas-eu.netlify.com/" + main_url: https://recetas-eu.netlify.com/ + url: https://recetas-eu.netlify.com/ featured: false categories: - Blog - WordPress - Food built_by: Ramón Chancay - built_by_url: "https://ramonchancay.me/" + built_by_url: https://ramonchancay.me/ - title: Third and Grove url: https://www.thirdandgrove.com main_url: https://www.thirdandgrove.com @@ -7340,7 +7340,7 @@ url: https://arvind.io source_url: https://github.com/EnKrypt/arvind.io built_by: Arvind Kumar - built_by_url: "https://arvind.io/" + built_by_url: https://arvind.io/ description: > A blog about writing code, making music and studying the skies. featured: false @@ -7369,7 +7369,7 @@ - Community - eCommerce built_by: Little & Big - built_by_url: "https://www.littleandbig.com.au/" + built_by_url: https://www.littleandbig.com.au/ featured: false - title: Guus van de Wal | Drupal Front-end specialist url: https://guusvandewal.nl @@ -7433,7 +7433,7 @@ - Business - Technology built_by: Peter Hironaka - built_by_url: "https://peterhironaka.com" + built_by_url: https://peterhironaka.com featured: false - title: Up Your A11y url: https://www.upyoura11y.com/ @@ -7454,15 +7454,15 @@ - title: Roman Kravets description: > Portfolio of Roman Kravets. Web Developer, HTML & CSS Coder. - main_url: "https://romkravets.netlify.com/" - url: "https://romkravets.netlify.com/" + main_url: https://romkravets.netlify.com/ + url: https://romkravets.netlify.com/ categories: - Portfolio - Open Source - Web Development - Blog built_by: Roman Kravets - built_by_url: "https://github.com/romkravets/dev-page" + built_by_url: https://github.com/romkravets/dev-page featured: false - title: Phil Tietjen Portfolio url: https://www.philtietjen.dev/ @@ -7480,15 +7480,15 @@ - title: Gatsby Bomb description: > A fan made version of the website Giantbomb, fully static and powered by Gatsby JS and the GiantBomb API. - main_url: "https://gatsbybomb.netlify.com" - url: "https://gatsbybomb.netlify.com" + main_url: https://gatsbybomb.netlify.com + url: https://gatsbybomb.netlify.com categories: - App - Entertainment - Media - Video built_by: Phil Tietjen - built_by_url: "https://github.com/Phizzard" + built_by_url: https://github.com/Phizzard featured: false - title: Divyanshu Maithani main_url: https://divyanshu013.dev @@ -7637,15 +7637,15 @@ built_by: Sagar Hani built_by_url: http://sagarhani.in/about - title: Arturo Alviar's Portfolio - main_url: "https://arturoalviar.com" - url: "https://arturoalviar.com" - source_url: "https://github.com/arturoalviar/portfolio" + main_url: https://arturoalviar.com + url: https://arturoalviar.com + source_url: https://github.com/arturoalviar/portfolio categories: - Portfolio - Open Source - Web Development built_by: Arturo Alviar - built_by_url: "https://github.com/arturoalviar" + built_by_url: https://github.com/arturoalviar featured: false - title: Pearly url: https://www.pearlyplan.com @@ -7699,8 +7699,8 @@ built_by: Ender Bonnet built_by_url: https://enbonnet.me/ - title: Edenspiekermann - url: "https://www.edenspiekermann.com/eu/" - main_url: "https://www.edenspiekermann.com/eu/" + url: https://www.edenspiekermann.com/eu/ + main_url: https://www.edenspiekermann.com/eu/ description: > Hello. We are Edenspiekermann, an independent global creative agency. categories: @@ -7710,8 +7710,8 @@ - Portfolio featured: true - title: IBM Design - url: "https://www.ibm.com/design/" - main_url: "https://www.ibm.com/design/" + url: https://www.ibm.com/design/ + main_url: https://www.ibm.com/design/ description: > At IBM, our design philosophy is to help guide people so they can do their best work. Our human-centered design practices help us deliver on that goal. categories: @@ -7734,8 +7734,8 @@ built_by: We Do Plugins built_by_url: https://wedoplugins.com - title: Mevish Aslam, business coach - url: "https://mevishaslam.com/" - main_url: "https://mevishaslam.com/" + url: https://mevishaslam.com/ + main_url: https://mevishaslam.com/ description: > Mevish Aslam helps women build a life they love and coaches women to launch and grow businesses. categories: @@ -7746,12 +7746,12 @@ - Marketing - Portfolio built_by: Rou Hun Fan - built_by_url: "https://flowen.me" + built_by_url: https://flowen.me featured: false - title: Principles of wealth - url: "https://principlesofwealth.net" - main_url: "https://principlesofwealth.net" - source_url: "https://github.com/flowen/principlesofwealth" + url: https://principlesofwealth.net + main_url: https://principlesofwealth.net + source_url: https://github.com/flowen/principlesofwealth description: > Principles of wealth. How to get rich without being lucky, a summary of Naval Ravikant's tweets and podcast.` categories: @@ -7767,7 +7767,7 @@ - Productivity - Science built_by: Rou Hun Fan - built_by_url: "https://flowen.me" + built_by_url: https://flowen.me featured: false - title: Problem studio url: https://problem.studio @@ -7840,21 +7840,21 @@ - Food featured: true - title: Haxzie, Portfolio and Blog - url: "https://haxzie.com/" - main_url: "https://haxzie.com/" - source_url: "https://github.com/haxzie/haxzie.com" + url: https://haxzie.com/ + main_url: https://haxzie.com/ + source_url: https://github.com/haxzie/haxzie.com description: > Haxzie.com is the portfolio and personal blog of Musthaq Ahamad, UX Engineer and Visual Designer categories: - Blog - Portfolio built_by: Musthaq Ahamad - built_by_url: "https://haxzie.com" + built_by_url: https://haxzie.com featured: false - title: GBT - url: "https://yangmuzi.com/" - main_url: "https://yangmuzi.com/" - source_url: "https://github.com/yangnianbing/blog-by-gatsby" + url: https://yangmuzi.com/ + main_url: https://yangmuzi.com/ + source_url: https://github.com/yangnianbing/blog-by-gatsby description: > It is a basic Gatsby site project categories: @@ -7863,16 +7863,16 @@ built_by: yangnianbing featured: false - title: Robin Wieruch's Blog - url: "https://www.robinwieruch.de/" - main_url: "https://www.robinwieruch.de/" + url: https://www.robinwieruch.de/ + main_url: https://www.robinwieruch.de/ categories: - Blog - Education featured: false - title: Roger Ramos Development Journal - url: "https://rogerramos.me/" - main_url: "https://rogerramos.me/" - source_url: "https://github.com/rogerramosme/rogerramos.me/" + url: https://rogerramos.me/ + main_url: https://rogerramos.me/ + source_url: https://github.com/rogerramosme/rogerramos.me/ description: > Personal development journal made with Netlify CMS categories: @@ -7881,8 +7881,8 @@ built_by_url: https://rogerramos.me/ featured: false - title: Global Adviser Alpha - main_url: "https://globaladviseralpha.com" - url: "https://globaladviseralpha.com" + main_url: https://globaladviseralpha.com + url: https://globaladviseralpha.com description: > Lead by David Haintz, Global Adviser Alpha transforms advice business into world class firms. categories: @@ -7960,9 +7960,9 @@ - Education - Blog - title: RegexGuide - main_url: "https://regex.guide" - url: "https://regex.guide/playground" - source_url: "https://github.com/pacdiv/regex.guide" + main_url: https://regex.guide + url: https://regex.guide/playground + source_url: https://github.com/pacdiv/regex.guide description: > The easiest way to learn regular expressions! The RegexGuide is a playground helping developers to discover regular expressions. Trying it is adopting regular expressions! categories: @@ -8054,8 +8054,8 @@ built_by_url: https://twitter.com/_kentaro_m featured: false - title: MotionThat - main_url: "https://motionthat.com.au" - url: "https://motionthat.com.au" + main_url: https://motionthat.com.au + url: https://motionthat.com.au description: > MotionThat was created to fill a void in Tabletop Product shooting, whereby the need for consistency, repetition and flexibility was required to eliminate the many variables and inaccuracies that slow the filming process down. categories: @@ -8067,8 +8067,8 @@ built_by_url: https://www.hellohandsome.com.au featured: false - title: TEN ALPHAS - main_url: "https://tenalphas.com.au" - url: "https://tenalphas.com.au" + main_url: https://tenalphas.com.au + url: https://tenalphas.com.au description: > TEN ALPHAS is a content production company based in Sydney and Wollongong, telling stories through moving image and beautiful design. categories: @@ -8079,8 +8079,8 @@ built_by_url: https://www.hellohandsome.com.au featured: false - title: SalesGP - main_url: "https://salesgp.io" - url: "https://salesgp.io" + main_url: https://salesgp.io + url: https://salesgp.io description: > SalesGP is a specialist Sales and Operations partner offering expert skill-sets and decades of experience to companies entering the Australia, NZ (ANZ) and South East Asian (SEA) markets. categories: @@ -8091,8 +8091,8 @@ built_by_url: https://www.hellohandsome.com.au featured: false - title: Source Separation Systems - main_url: "https://sourceseparationsystems.com.au" - url: "https://sourceseparationsystems.com.au" + main_url: https://sourceseparationsystems.com.au + url: https://sourceseparationsystems.com.au description: > Innovative waste diversion products, designed to connect Australians to a more sustainable world. categories: @@ -8113,8 +8113,8 @@ built_by_url: https://demieville-codes.herokuapp.com/portfolio featured: false - title: Open Techiz - main_url: "https://www.opentechiz.com/" - url: "https://www.opentechiz.com/" + main_url: https://www.opentechiz.com/ + url: https://www.opentechiz.com/ featured: false description: > An agile software development company in Vietnam, providing wide range service from ecommerce development, mobile development, automation testing and cloud deployment with kubernets @@ -8123,7 +8123,7 @@ - Mobile Development - Technology built_by: Open Techiz - built_by_url: "https://www.opentechiz.com/" + built_by_url: https://www.opentechiz.com/ - title: Leave Me Alone url: https://leavemealone.app main_url: https://leavemealone.app @@ -8226,8 +8226,8 @@ - title: Binaria description: > Digital product connecting technics & creativity. - main_url: "https://binaria.com/en/" - url: "https://binaria.com/en/" + main_url: https://binaria.com/en/ + url: https://binaria.com/en/ categories: - Web Development - Agency @@ -8236,7 +8236,7 @@ - Consulting - User Experience built_by: Binaria - built_by_url: "https://binaria.com/" + built_by_url: https://binaria.com/ - title: Quema Labs url: https://quemalabs.com/ main_url: https://quemalabs.com/ @@ -8271,8 +8271,8 @@ built_by_url: https://www.powerboard.co.nz/clients featured: false - title: Wealthsimple - url: "https://www.wealthsimple.com/" - main_url: "https://www.wealthsimple.com/en-us/" + url: https://www.wealthsimple.com/ + main_url: https://www.wealthsimple.com/en-us/ description: > The simple way to grow your money like the world's most sophisticated investors. Zero-maintenance portfolios, expert advisors and low fees. categories: @@ -8283,15 +8283,15 @@ - title: To Be Created description: > tbc is a London based styling agency that champions a modernised minimal aesthetic for both personal clients and brands. - main_url: "https://to-be-created.com" - url: "https://to-be-created.com" + main_url: https://to-be-created.com + url: https://to-be-created.com categories: - Web Development - Agency - Portfolio - Freelance built_by: Sam Goddard - built_by_url: "https://samgoddard.dev/" + built_by_url: https://samgoddard.dev/ - title: Kosmos Platform main_url: https://kosmosplatform.com url: https://kosmosplatform.com @@ -8380,7 +8380,7 @@ - Community - Learning built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ featured: false - title: Anurag Hazra's Portfolio url: https://anuraghazra.github.io/ @@ -8394,7 +8394,7 @@ - Open Source - JavaScript built_by: Anurag Hazra - built_by_url: "https://github.com/anuraghazra" + built_by_url: https://github.com/anuraghazra - title: VeganWorks url: https://veganworks.com/ main_url: https://veganworks.com/ @@ -8415,15 +8415,15 @@ built_by_url: https://codesundar.com featured: false - title: Nordic Microfinance Initiative - url: "https://www.nmimicro.no/" - main_url: "https://www.nmimicro.no/" + url: https://www.nmimicro.no/ + main_url: https://www.nmimicro.no/ description: Nordic Microfinance Initiative's (NMI) vision is to contribute to the empowerment of poor people in developing countries and to the creation of jobs and wealth on a sustainable basis. featured: false categories: - Finance - Business built_by: Othermachines - built_by_url: "https://othermachines.com" + built_by_url: https://othermachines.com - title: Subscribe Pro Documentation url: https://docs.subscribepro.com/ main_url: https://docs.subscribepro.com/ @@ -8449,8 +8449,8 @@ built_by_url: https://github.com/swdotcom/ featured: false - title: WTL Studio Website Builder - main_url: "https://wtlstudio.com/" - url: "https://wtlstudio.com/" + main_url: https://wtlstudio.com/ + url: https://wtlstudio.com/ description: > Cloud-based, SEO focused website builder - helping local businesses and startups reach audiences faster. featured: false @@ -8950,14 +8950,14 @@ Join thousands of developers from everywhere and access to job offers from hundreds of companies worldwide right at your inbox for free. - main_url: "https://reeemoter.com/" - url: "https://reeemoter.com/" + main_url: https://reeemoter.com/ + url: https://reeemoter.com/ featured: false categories: - Technology - Web Development built_by: Ramón Chancay - built_by_url: "https://ramonchancay.me/" + built_by_url: https://ramonchancay.me/ - title: Ananya Neogi main_url: https://ananyaneogi.com url: https://ananyaneogi.com @@ -9005,8 +9005,8 @@ built_by: Nima Habibkhoda featured: false - title: Thomas Wang's Blog - main_url: "https://www.thomaswang.io" - url: "https://www.thomaswang.io" + main_url: https://www.thomaswang.io + url: https://www.thomaswang.io description: >- Technical blog by Thomas Wang built_by: Thomas Wang @@ -9016,8 +9016,8 @@ - Blog - Web Development - title: Engleezi - main_url: "https://www.myengleezi.com" - url: "https://myengleezi.com/teachers/" + main_url: https://www.myengleezi.com + url: https://myengleezi.com/teachers/ description: >- Affordable, accessible and fun, Engleezi is an English tutoring service that aims to make your child a better and more fluent English speaker. Our unique online approach gets your children learning English one-on-one from a native English teacher from the comfort of your home. built_by: Suleiman Mayow @@ -9028,9 +9028,9 @@ - Learning - Technology - title: The Rebigulator - main_url: "https://www.rebigulator.org/" - source_url: "https://github.com/Me4502/Rebigulator/" - url: "https://rebigulator.org/" + main_url: https://www.rebigulator.org/ + source_url: https://github.com/Me4502/Rebigulator/ + url: https://rebigulator.org/ description: A quote-based via game powered by Frinkiac built_by: Matthew Miller built_by_url: https://matthewmiller.dev/ @@ -9163,7 +9163,7 @@ main_url: https://mallik.in url: https://mallik.in built_by: Arvind Kumar - built_by_url: "https://arvind.io/" + built_by_url: https://arvind.io/ description: > Mallikarjun Katakol is an Advertising, Architecture, Editorial, Fashion and Lifestyle Photographer based in Bangalore, India. Shoots Corporate & Business headshots, Portfolios for Models and Actors, Documents Projects for Architects, Fashion & Interior Designers @@ -9422,8 +9422,8 @@ built_by_url: https://github.com/AkashRajpurohit featured: false - title: See Kids Dream - url: "https://seekidsdream.org/" - main_url: "https://seekidsdream.org/" + url: https://seekidsdream.org/ + main_url: https://seekidsdream.org/ description: > A not-for-profit organization dedicated to empower youth with the skills, motivation and confidence. categories: @@ -9664,8 +9664,8 @@ built_by_url: https://github.com/lhorak featured: false - title: Alexandra Thomas - main_url: "https://alexandracthomas.com/" - url: "https://alexandracthomas.com/" + main_url: https://alexandracthomas.com/ + url: https://alexandracthomas.com/ description: > A portfolio site for Alexandra Thomas, a front-end developer with creative super powers based in Charlotte, NC. categories: @@ -9674,8 +9674,8 @@ - Web Development featured: false - title: Storto Productions - main_url: "https://www.storto-productions.com/" - url: "https://www.storto-productions.com/about/" + main_url: https://www.storto-productions.com/ + url: https://www.storto-productions.com/about/ featured: false description: > A portfolio site for a video production company based out of Phoenix, AZ. @@ -9685,7 +9685,7 @@ - Portfolio - Business built_by: Alexandra Thomas - built_by_url: "https://alexandracthomas.com/" + built_by_url: https://alexandracthomas.com/ - title: Zatsuzen Blog url: https://blog.zatsuzen.com main_url: https://blog.zatsuzen.com @@ -9696,14 +9696,14 @@ built_by: Akane built_by_url: https://twitter.com/akanewz - title: Matthew Mesa - url: "https://matthewmesa.com" - main_url: "https://matthewmesa.com" + url: https://matthewmesa.com + main_url: https://matthewmesa.com description: > Portfolio website for freelance digital specialist Matthew Mesa. categories: - Portfolio built_by: Matthew Mesa - built_by_url: "https://matthewmesa.com" + built_by_url: https://matthewmesa.com - title: Taskade main_url: https://taskade.com url: https://taskade.com @@ -9752,8 +9752,8 @@ built_by_url: https://ramonak.io/ featured: false - title: React JS Developer - main_url: "https://reacter.dev/" - url: "https://reacter.dev/" + main_url: https://reacter.dev/ + url: https://reacter.dev/ featured: false categories: - App @@ -9761,7 +9761,7 @@ - Web Development - Agency built_by: App Design - built_by_url: "https://appdesign.dev/" + built_by_url: https://appdesign.dev/ - title: Guillermo Gómez-Peña url: https://www.guillermogomezpena.com/ main_url: https://www.guillermogomezpena.com/ @@ -9823,8 +9823,8 @@ built_by: Alexandre Valsamou-Stanislawski built_by_url: https://www.noima.xyz - title: ProjectManager.tools - main_url: "https://projectmanager.tools/" - url: "https://projectmanager.tools/" + main_url: https://projectmanager.tools/ + url: https://projectmanager.tools/ featured: false categories: - App @@ -9832,7 +9832,7 @@ - Design - Agency built_by: App Design - built_by_url: "https://appdesign.dev/" + built_by_url: https://appdesign.dev/ - title: 1902 Software url: https://1902software.com/ main_url: https://1902software.com/ @@ -9882,14 +9882,14 @@ built_by_url: https://talentpoint.co featured: false - title: Marathon Oil - main_url: "https://www.marathonoil.com/" - url: "https://www.marathonoil.com/" + main_url: https://www.marathonoil.com/ + url: https://www.marathonoil.com/ featured: false categories: - Business - Marketing built_by: Corey Ward - built_by_url: "http://www.coreyward.me/" + built_by_url: http://www.coreyward.me/ - title: Gene url: https://www.geneglobal.com/work main_url: https://www.geneglobal.com @@ -9919,8 +9919,8 @@ built_by: medignition built_by_url: https://medignition.com/ - title: Dynobase - url: "https://dynobase.dev/" - main_url: "https://dynobase.dev/" + url: https://dynobase.dev/ + main_url: https://dynobase.dev/ description: > Professional GUI Client for DynamoDB. categories: @@ -9928,7 +9928,7 @@ - Programming - Web Development built_by: Rafal Wilinski - built_by_url: "https://rwilinski.me/" + built_by_url: https://rwilinski.me/ featured: false - title: Vaktija.eu url: https://vaktija.eu @@ -9960,37 +9960,37 @@ - title: Messi vs Ronaldo description: > The biggest debate in football - but who is the best, Messi or Ronaldo? This website provides all the goals and stats to help you reach your own conclusion. - main_url: "https://www.messivsronaldo.app/" - url: "https://www.messivsronaldo.app/" + main_url: https://www.messivsronaldo.app/ + url: https://www.messivsronaldo.app/ categories: - Sports - Data - App built_by: Stephen Greig - built_by_url: "http://ste.digital/" + built_by_url: http://ste.digital/ - title: Em Em Recipes - url: "https://ememrecipes.com" - main_url: "https://ememrecipes.com" + url: https://ememrecipes.com + main_url: https://ememrecipes.com description: > Finally, a recipe website that gets straight to the point. categories: - Blog - Food built_by: Matthew Mesa - built_by_url: "https://matthewmesa.com" + built_by_url: https://matthewmesa.com - title: Yuuniworks Portfolio / Blog - main_url: "https://www.yuuniworks.com/" - url: "https://www.yuuniworks.com/" - source_url: "https://github.com/junkboy0315/gatsby-portfolio-blog" + main_url: https://www.yuuniworks.com/ + url: https://www.yuuniworks.com/ + source_url: https://github.com/junkboy0315/gatsby-portfolio-blog featured: false categories: - Portfolio - Web Development - Blog - title: Jun Chen Portfolio - url: "https://www.junchenjun.me" - main_url: "https://www.junchenjun.me" - source_url: "https://github.com/junchenjun/junchenjun.me" + url: https://www.junchenjun.me + main_url: https://www.junchenjun.me + source_url: https://github.com/junchenjun/junchenjun.me description: > Get to know Jun. categories: @@ -9998,10 +9998,10 @@ - Blog - Web Development built_by: Jun Chen - built_by_url: "https://www.junchenjun.me" + built_by_url: https://www.junchenjun.me - title: Xavier Mirabelli-Montan - url: "https://xavie.mirmon.co.uk" - main_url: "https://xavie.mirmon.co.uk" + url: https://xavie.mirmon.co.uk + main_url: https://xavie.mirmon.co.uk source_url: https://github.com/xaviemirmon/xavier-developer-site description: > The developer portfolio and blog for Xavier Mirabelli-Montan. Built using TinaCMS Grande hosted on Gatsby Cloud. @@ -10011,8 +10011,8 @@ - Programming featured: false - title: MPG Calculator - url: "https://www.mpg-calculator.co.uk" - main_url: "https://www.mpg-calculator.co.uk" + url: https://www.mpg-calculator.co.uk + main_url: https://www.mpg-calculator.co.uk description: > A website which allows you to calculate the MPG of your vehicle. categories: @@ -10020,7 +10020,7 @@ - Accessibility - Blog built_by: PJ - built_by_url: "https://pjsachdev.me" + built_by_url: https://pjsachdev.me - title: Softblues main_url: https://softblues.io url: https://softblues.io From 7ef06208e0949b096325f7a179241bdb07cdd762 Mon Sep 17 00:00:00 2001 From: Michael <184316+muescha@users.noreply.github.com> Date: Wed, 18 Mar 2020 23:50:59 +0100 Subject: [PATCH 29/50] remove unused import in blog post (#22173) --- .../index.md | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/blog/2019-04-30-how-to-build-a-blog-with-wordpress-and-gatsby-part-2/index.md b/docs/blog/2019-04-30-how-to-build-a-blog-with-wordpress-and-gatsby-part-2/index.md index a59f2907802e1..ac2763414975a 100644 --- a/docs/blog/2019-04-30-how-to-build-a-blog-with-wordpress-and-gatsby-part-2/index.md +++ b/docs/blog/2019-04-30-how-to-build-a-blog-with-wordpress-and-gatsby-part-2/index.md @@ -270,7 +270,6 @@ The code below pulls in the data for blog posts from WordPress and creates a pag // You can delete this file if you're not using it const path = require(`path`) -const { createFilePath } = require(`gatsby-source-filesystem`) exports.createPages = async ({ graphql, actions, reporter }) => { const { createPage } = actions From 49059da2e40b9873278780bfa480130956e54809 Mon Sep 17 00:00:00 2001 From: Jonas Reitmann Date: Wed, 18 Mar 2020 23:52:41 +0100 Subject: [PATCH 30/50] Add link to gatsby-plugin-meta-redirect (#22163) --- packages/gatsby/src/redux/actions/public.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/packages/gatsby/src/redux/actions/public.js b/packages/gatsby/src/redux/actions/public.js index 0751cda1f1937..5a6db72d66266 100644 --- a/packages/gatsby/src/redux/actions/public.js +++ b/packages/gatsby/src/redux/actions/public.js @@ -1367,7 +1367,9 @@ const maybeAddPathPrefix = (path, pathPrefix) => { * of the box. You must have a plugin setup to integrate the redirect data with * your hosting technology e.g. the [Netlify * plugin](/packages/gatsby-plugin-netlify/), or the [Amazon S3 - * plugin](/packages/gatsby-plugin-s3/). + * plugin](/packages/gatsby-plugin-s3/). Alternatively, you can use + * [this plugin](/packages/gatsby-plugin-meta-redirect/) to generate meta redirect + * html files for redirecting on any static file host. * * @param {Object} redirect Redirect data * @param {string} redirect.fromPath Any valid URL. Must start with a forward slash From d2d32d4f61619da5200f2dd15a034cd51f5e9932 Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 15:54:24 -0700 Subject: [PATCH 31/50] chore(release): Publish - gatsby-source-contentful@2.1.100 - gatsby-source-drupal@3.3.30 - gatsby-source-filesystem@2.1.57 - gatsby-source-shopify@3.0.53 - gatsby-source-wordpress@3.1.74 - gatsby-theme-blog-core@1.2.32 - gatsby-theme-blog@1.3.34 - gatsby-theme-notes@1.1.30 - gatsby@2.19.48 --- packages/gatsby-source-contentful/CHANGELOG.md | 4 ++++ packages/gatsby-source-contentful/package.json | 4 ++-- packages/gatsby-source-drupal/CHANGELOG.md | 4 ++++ packages/gatsby-source-drupal/package.json | 4 ++-- packages/gatsby-source-filesystem/CHANGELOG.md | 6 ++++++ packages/gatsby-source-filesystem/package.json | 2 +- packages/gatsby-source-shopify/CHANGELOG.md | 4 ++++ packages/gatsby-source-shopify/package.json | 4 ++-- packages/gatsby-source-wordpress/CHANGELOG.md | 4 ++++ packages/gatsby-source-wordpress/package.json | 4 ++-- packages/gatsby-theme-blog-core/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog-core/package.json | 6 +++--- packages/gatsby-theme-blog/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog/package.json | 6 +++--- packages/gatsby-theme-notes/CHANGELOG.md | 4 ++++ packages/gatsby-theme-notes/package.json | 6 +++--- packages/gatsby/CHANGELOG.md | 4 ++++ packages/gatsby/package.json | 2 +- 18 files changed, 57 insertions(+), 19 deletions(-) diff --git a/packages/gatsby-source-contentful/CHANGELOG.md b/packages/gatsby-source-contentful/CHANGELOG.md index 0b0503eb7abef..7220f3782e248 100644 --- a/packages/gatsby-source-contentful/CHANGELOG.md +++ b/packages/gatsby-source-contentful/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.100](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-contentful@2.1.99...gatsby-source-contentful@2.1.100) (2020-03-18) + +**Note:** Version bump only for package gatsby-source-contentful + ## [2.1.99](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-contentful@2.1.98...gatsby-source-contentful@2.1.99) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby-source-contentful/package.json b/packages/gatsby-source-contentful/package.json index 20aba450e92c9..7d61d470f1841 100644 --- a/packages/gatsby-source-contentful/package.json +++ b/packages/gatsby-source-contentful/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-contentful", "description": "Gatsby source plugin for building websites using the Contentful CMS as a data source", - "version": "2.1.99", + "version": "2.1.100", "author": "Marcus Ericsson (mericsson.com)", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -19,7 +19,7 @@ "fs-extra": "^8.1.0", "gatsby-core-utils": "^1.0.34", "gatsby-plugin-sharp": "^2.4.13", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "is-online": "^8.2.1", "json-stringify-safe": "^5.0.1", "lodash": "^4.17.15", diff --git a/packages/gatsby-source-drupal/CHANGELOG.md b/packages/gatsby-source-drupal/CHANGELOG.md index d24673b83b065..93f074f3b8e5d 100644 --- a/packages/gatsby-source-drupal/CHANGELOG.md +++ b/packages/gatsby-source-drupal/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.3.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.3.29...gatsby-source-drupal@3.3.30) (2020-03-18) + +**Note:** Version bump only for package gatsby-source-drupal + ## [3.3.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-drupal@3.3.28...gatsby-source-drupal@3.3.29) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby-source-drupal/package.json b/packages/gatsby-source-drupal/package.json index 9bb23a6b331a1..0c34b746f7f71 100644 --- a/packages/gatsby-source-drupal/package.json +++ b/packages/gatsby-source-drupal/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-drupal", "description": "Gatsby source plugin for building websites using the Drupal CMS as a data source", - "version": "3.3.29", + "version": "3.3.30", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -11,7 +11,7 @@ "axios": "^0.19.2", "bluebird": "^3.7.2", "body-parser": "^1.19.0", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "lodash": "^4.17.15", "tiny-async-pool": "^1.1.0" }, diff --git a/packages/gatsby-source-filesystem/CHANGELOG.md b/packages/gatsby-source-filesystem/CHANGELOG.md index d262f28506806..bdc896dc09011 100644 --- a/packages/gatsby-source-filesystem/CHANGELOG.md +++ b/packages/gatsby-source-filesystem/CHANGELOG.md @@ -3,6 +3,12 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.1.57](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-filesystem@2.1.56...gatsby-source-filesystem@2.1.57) (2020-03-18) + +### Features + +- **gatsby-source-filesystem:** Unify publicURL ([#22328](https://github.com/gatsbyjs/gatsby/issues/22328)) ([756d386](https://github.com/gatsbyjs/gatsby/commit/756d386)) + ## [2.1.56](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-filesystem@2.1.55...gatsby-source-filesystem@2.1.56) (2020-03-16) **Note:** Version bump only for package gatsby-source-filesystem diff --git a/packages/gatsby-source-filesystem/package.json b/packages/gatsby-source-filesystem/package.json index ff7d83256480b..06c0242c7ad9b 100644 --- a/packages/gatsby-source-filesystem/package.json +++ b/packages/gatsby-source-filesystem/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-filesystem", "description": "Gatsby plugin which parses files within a directory for further parsing by other plugins", - "version": "2.1.56", + "version": "2.1.57", "author": "Kyle Mathews ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" diff --git a/packages/gatsby-source-shopify/CHANGELOG.md b/packages/gatsby-source-shopify/CHANGELOG.md index 7a8150498ddf0..d29f27ad8105a 100644 --- a/packages/gatsby-source-shopify/CHANGELOG.md +++ b/packages/gatsby-source-shopify/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.0.53](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-shopify@3.0.52...gatsby-source-shopify@3.0.53) (2020-03-18) + +**Note:** Version bump only for package gatsby-source-shopify + ## [3.0.52](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-shopify@3.0.51...gatsby-source-shopify@3.0.52) (2020-03-16) **Note:** Version bump only for package gatsby-source-shopify diff --git a/packages/gatsby-source-shopify/package.json b/packages/gatsby-source-shopify/package.json index af49cc7502d24..73f9636e6467e 100644 --- a/packages/gatsby-source-shopify/package.json +++ b/packages/gatsby-source-shopify/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-source-shopify", - "version": "3.0.52", + "version": "3.0.53", "description": "Gatsby source plugin for building websites using Shopfiy as a data source.", "scripts": { "build": "babel src --out-dir . --ignore **/__tests__", @@ -36,7 +36,7 @@ "babel-preset-gatsby-package": "^0.2.18", "chalk": "^2.4.2", "gatsby-node-helpers": "^0.3.0", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "graphql-request": "^1.8.2", "lodash": "^4.17.15", "p-iteration": "^1.1.8", diff --git a/packages/gatsby-source-wordpress/CHANGELOG.md b/packages/gatsby-source-wordpress/CHANGELOG.md index 95254abe31e5c..c2141a1ddd7f3 100644 --- a/packages/gatsby-source-wordpress/CHANGELOG.md +++ b/packages/gatsby-source-wordpress/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [3.1.74](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wordpress@3.1.73...gatsby-source-wordpress@3.1.74) (2020-03-18) + +**Note:** Version bump only for package gatsby-source-wordpress + ## [3.1.73](https://github.com/gatsbyjs/gatsby/compare/gatsby-source-wordpress@3.1.72...gatsby-source-wordpress@3.1.73) (2020-03-18) ### Bug Fixes diff --git a/packages/gatsby-source-wordpress/package.json b/packages/gatsby-source-wordpress/package.json index d93ef13f746f8..11b088d029b41 100644 --- a/packages/gatsby-source-wordpress/package.json +++ b/packages/gatsby-source-wordpress/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-source-wordpress", "description": "Gatsby source plugin for building websites using the WordPress CMS as a data source.", - "version": "3.1.73", + "version": "3.1.74", "author": "Sebastien Fichot ", "bugs": { "url": "https://github.com/gatsbyjs/gatsby/issues" @@ -14,7 +14,7 @@ "bluebird": "^3.7.2", "deep-map": "^1.5.0", "deep-map-keys": "^1.2.0", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "json-stringify-safe": "^5.0.1", "lodash": "^4.17.15", "minimatch": "^3.0.4", diff --git a/packages/gatsby-theme-blog-core/CHANGELOG.md b/packages/gatsby-theme-blog-core/CHANGELOG.md index 5d8fe7ba895f4..b06cd24603393 100644 --- a/packages/gatsby-theme-blog-core/CHANGELOG.md +++ b/packages/gatsby-theme-blog-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.32](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.31...gatsby-theme-blog-core@1.2.32) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog-core + ## [1.2.31](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.30...gatsby-theme-blog-core@1.2.31) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog-core diff --git a/packages/gatsby-theme-blog-core/package.json b/packages/gatsby-theme-blog-core/package.json index c0ef4adc67f05..54dfe0f7c0b81 100644 --- a/packages/gatsby-theme-blog-core/package.json +++ b/packages/gatsby-theme-blog-core/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog-core", - "version": "1.2.31", + "version": "1.2.32", "main": "index.js", "author": "christopherbiscardi (@chrisbiscardi)", "license": "MIT", @@ -24,13 +24,13 @@ "gatsby-remark-copy-linked-files": "^2.1.40", "gatsby-remark-images": "^3.1.50", "gatsby-remark-smartypants": "^2.1.23", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "gatsby-transformer-sharp": "^2.3.19", "remark-slug": "^5.1.2" }, "devDependencies": { "@mdx-js/react": "^1.5.7", - "gatsby": "^2.19.47", + "gatsby": "^2.19.48", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index b1062c2de4720..fee37d1b8ab9c 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.34](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.33...gatsby-theme-blog@1.3.34) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-blog + ## [1.3.33](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.32...gatsby-theme-blog@1.3.33) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 0e5ae6c9c4e70..6a4c88b413d3b 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.3.33", + "version": "1.3.34", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -29,7 +29,7 @@ "gatsby-plugin-react-helmet": "^3.1.24", "gatsby-plugin-theme-ui": "^0.2.53", "gatsby-plugin-twitter": "^2.1.21", - "gatsby-theme-blog-core": "^1.2.31", + "gatsby-theme-blog-core": "^1.2.32", "mdx-utils": "0.2.0", "react-helmet": "^5.2.1", "react-switch": "^5.0.1", @@ -39,7 +39,7 @@ "typography-theme-wordpress-2016": "^0.16.19" }, "devDependencies": { - "gatsby": "^2.19.47", + "gatsby": "^2.19.48", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-notes/CHANGELOG.md b/packages/gatsby-theme-notes/CHANGELOG.md index 04a25d4ce97aa..24f000bc11415 100644 --- a/packages/gatsby-theme-notes/CHANGELOG.md +++ b/packages/gatsby-theme-notes/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.29...gatsby-theme-notes@1.1.30) (2020-03-18) + +**Note:** Version bump only for package gatsby-theme-notes + ## [1.1.29](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.28...gatsby-theme-notes@1.1.29) (2020-03-18) **Note:** Version bump only for package gatsby-theme-notes diff --git a/packages/gatsby-theme-notes/package.json b/packages/gatsby-theme-notes/package.json index ad0845b33f102..324e48a67e61c 100644 --- a/packages/gatsby-theme-notes/package.json +++ b/packages/gatsby-theme-notes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-theme-notes", "description": "Gatsby Theme for adding a notes section to your website", - "version": "1.1.29", + "version": "1.1.30", "author": "John Otander", "license": "MIT", "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-theme-notes#readme", "devDependencies": { - "gatsby": "^2.19.47", + "gatsby": "^2.19.48", "react": "^16.12.0", "react-dom": "^16.12.0" }, @@ -44,7 +44,7 @@ "gatsby-plugin-og-image": "0.0.1", "gatsby-plugin-redirects": "^1.0.0", "gatsby-plugin-theme-ui": "^0.2.53", - "gatsby-source-filesystem": "^2.1.56", + "gatsby-source-filesystem": "^2.1.57", "is-present": "^1.0.0", "react-feather": "^1.1.6", "theme-ui": "^0.2.52", diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index d55b86d625ceb..b04d5b91a6835 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.19.48](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.47...gatsby@2.19.48) (2020-03-18) + +**Note:** Version bump only for package gatsby + ## [2.19.47](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.46...gatsby@2.19.47) (2020-03-18) **Note:** Version bump only for package gatsby diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index 85803152fa15c..ebe7f3e0b7f90 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.19.47", + "version": "2.19.48", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" From 9a783f4334aac08e2bd8c1ecf3732c64a6ad7d88 Mon Sep 17 00:00:00 2001 From: Yuki Takemoto Date: Thu, 19 Mar 2020 13:11:04 +0900 Subject: [PATCH 32/50] chore(gatsby): Convert create-schema-customization to typescript (#22392) --- packages/gatsby/src/bootstrap/index.js | 3 ++- packages/gatsby/src/commands/develop.ts | 2 +- ...tomization.js => create-schema-customization.ts} | 13 ++++++++++--- 3 files changed, 13 insertions(+), 5 deletions(-) rename packages/gatsby/src/utils/{create-schema-customization.js => create-schema-customization.ts} (50%) diff --git a/packages/gatsby/src/bootstrap/index.js b/packages/gatsby/src/bootstrap/index.js index a32983bce70ab..471cf5acc7569 100644 --- a/packages/gatsby/src/bootstrap/index.js +++ b/packages/gatsby/src/bootstrap/index.js @@ -12,6 +12,7 @@ const telemetry = require(`gatsby-telemetry`) const apiRunnerNode = require(`../utils/api-runner-node`) import { getBrowsersList } from "../utils/browserslist" +import { createSchemaCustomization } from "../utils/create-schema-customization" const { store, emitter } = require(`../redux`) const loadPlugins = require(`./load-plugins`) const loadThemes = require(`./load-themes`) @@ -434,7 +435,7 @@ module.exports = async (args: BootstrapArgs) => { parentSpan: bootstrapSpan, }) activity.start() - await require(`../utils/create-schema-customization`)({ + await createSchemaCustomization({ parentSpan: bootstrapSpan, }) activity.end() diff --git a/packages/gatsby/src/commands/develop.ts b/packages/gatsby/src/commands/develop.ts index 23253c8d09901..9e89fe1afcc12 100644 --- a/packages/gatsby/src/commands/develop.ts +++ b/packages/gatsby/src/commands/develop.ts @@ -36,7 +36,7 @@ import bootstrapPageHotReloader from "../bootstrap/page-hot-reloader" import { developStatic } from "./develop-static" import withResolverContext from "../schema/context" import sourceNodes from "../utils/source-nodes" -import createSchemaCustomization from "../utils/create-schema-customization" +import { createSchemaCustomization } from "../utils/create-schema-customization" import websocketManager from "../utils/websocket-manager" import getSslCert from "../utils/get-ssl-cert" import { slash } from "gatsby-core-utils" diff --git a/packages/gatsby/src/utils/create-schema-customization.js b/packages/gatsby/src/utils/create-schema-customization.ts similarity index 50% rename from packages/gatsby/src/utils/create-schema-customization.js rename to packages/gatsby/src/utils/create-schema-customization.ts index bdecb11ef7e30..cd4e28be78a93 100644 --- a/packages/gatsby/src/utils/create-schema-customization.js +++ b/packages/gatsby/src/utils/create-schema-customization.ts @@ -1,7 +1,14 @@ -const apiRunnerNode = require(`./api-runner-node`) -const { store } = require(`../redux`) +import apiRunnerNode from "./api-runner-node" +import { store } from "../redux" +import { Span } from "opentracing" -module.exports = async ({ refresh = false, parentSpan }) => { +export const createSchemaCustomization = async ({ + refresh = false, + parentSpan, +}: { + refresh?: boolean + parentSpan?: Span +}): Promise => { if (refresh) { store.dispatch({ type: `CLEAR_SCHEMA_CUSTOMIZATION` }) } From d4d347b94a6fed0339b2ab55a6f9483c0f63f029 Mon Sep 17 00:00:00 2001 From: Yuki Takemoto Date: Thu, 19 Mar 2020 13:13:11 +0900 Subject: [PATCH 33/50] chore(gatsby): Convert built-in-types to typescript (#22391) --- .../schema/types/{built-in-types.js => built-in-types.ts} | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) rename packages/gatsby/src/schema/types/{built-in-types.js => built-in-types.ts} (94%) diff --git a/packages/gatsby/src/schema/types/built-in-types.js b/packages/gatsby/src/schema/types/built-in-types.ts similarity index 94% rename from packages/gatsby/src/schema/types/built-in-types.js rename to packages/gatsby/src/schema/types/built-in-types.ts index dde7c19faccbd..f538d5a70461e 100644 --- a/packages/gatsby/src/schema/types/built-in-types.js +++ b/packages/gatsby/src/schema/types/built-in-types.ts @@ -1,4 +1,4 @@ -const { parse } = require(`graphql`) +import { parse, DocumentNode } from "graphql" const fileType = ` type File implements Node @infer { @@ -82,9 +82,5 @@ const sitePageType = ` } ` -const builtInTypeDefinitions = () => +export const builtInTypeDefinitions = (): DocumentNode[] => [fileType, directoryType, sitePageType].map(type => parse(type)) - -module.exports = { - builtInTypeDefinitions, -} From 3380e89529675583b370fb918ef0a6046e43da1a Mon Sep 17 00:00:00 2001 From: Blaine Kasten Date: Wed, 18 Mar 2020 23:28:44 -0500 Subject: [PATCH 34/50] chore(gatsby): Increase chances of seeing feedback request 5x (#22393) --- packages/gatsby/src/utils/feedback.ts | 32 +++++++++++++++++++-------- 1 file changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/gatsby/src/utils/feedback.ts b/packages/gatsby/src/utils/feedback.ts index 8c4e42ad5f6fe..1cf5268c9962a 100644 --- a/packages/gatsby/src/utils/feedback.ts +++ b/packages/gatsby/src/utils/feedback.ts @@ -22,14 +22,7 @@ export function showFeedbackRequest(): void { report.log(`\nGive us your feedback here: https://gatsby.dev/feedback\n\n`) } -// We are only showing feedback requests to users in if they pass a few checks: -// 1. They pass a Math.random() check. This is a skateboard version of not sending out all requests in one day. -// 2. They haven't disabled the feedback mechanism -// 3. They don't have the environment variable to disable feedback present -// 4. It's been at least 3 months since the last feedback request -// 5. They are on the most recent version of Gatsby -export async function userPassesFeedbackRequestHeuristic(): Promise { - // Heuristic 1 +const randomChanceToBeTrue = (): boolean => { // This is spreading the request volume over the quarter. // We are grabbing a randomNumber within the spread of a first day // of a quarter, to the last day @@ -41,7 +34,28 @@ export async function userPassesFeedbackRequestHeuristic(): Promise { ) const randomNumberWithinQuarter = randomNumber * currentQuarter - if (randomNumberWithinQuarter !== getDayOfYear(new Date())) { + return randomNumberWithinQuarter === getDayOfYear(new Date()) +} + +// We are only showing feedback requests to users in if they pass a few checks: +// 1. They pass a Math.random() check. This is a skateboard version of not sending out all requests in one day. +// 2. They haven't disabled the feedback mechanism +// 3. They don't have the environment variable to disable feedback present +// 4. It's been at least 3 months since the last feedback request +// 5. They are on the most recent version of Gatsby +export async function userPassesFeedbackRequestHeuristic(): Promise { + // Heuristic 1 + // We originally wrote this to have a single chance of hitting. + // We wanted to up the chance by 5x, so this is our crude - temporary - + // way of giving the user 5 chances to passing. + const randomlyPassingHeuristic = + randomChanceToBeTrue() || + randomChanceToBeTrue() || + randomChanceToBeTrue() || + randomChanceToBeTrue() || + randomChanceToBeTrue() + + if (!randomlyPassingHeuristic) { return false } From e4cd2f135cd2385cc9ba1dd78cb3f3d457c5b6d3 Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Thu, 19 Mar 2020 13:33:10 +0900 Subject: [PATCH 35/50] chore(gatsby): migrate webpack-error-utils to TypeScript (#22278) * chore(gatsby): migrate webpack-error-utils to TypeScript * fix pointed out --- packages/gatsby/src/commands/build.js | 2 +- ...-error-utils.js => webpack-error-utils.ts} | 30 ++++++++++++++++--- 2 files changed, 27 insertions(+), 5 deletions(-) rename packages/gatsby/src/utils/{webpack-error-utils.js => webpack-error-utils.ts} (67%) diff --git a/packages/gatsby/src/commands/build.js b/packages/gatsby/src/commands/build.js index 2cd19207a2ae6..dc4930d7539f6 100644 --- a/packages/gatsby/src/commands/build.js +++ b/packages/gatsby/src/commands/build.js @@ -16,7 +16,7 @@ const { store, readState } = require(`../redux`) const queryUtil = require(`../query`) import * as appDataUtil from "../utils/app-data" import * as WorkerPool from "../utils/worker/pool" -const { structureWebpackErrors } = require(`../utils/webpack-error-utils`) +import { structureWebpackErrors } from "../utils/webpack-error-utils" import { userPassesFeedbackRequestHeuristic, showFeedbackRequest, diff --git a/packages/gatsby/src/utils/webpack-error-utils.js b/packages/gatsby/src/utils/webpack-error-utils.ts similarity index 67% rename from packages/gatsby/src/utils/webpack-error-utils.js rename to packages/gatsby/src/utils/webpack-error-utils.ts index 9a692f1505198..6920af0cbbbf3 100644 --- a/packages/gatsby/src/utils/webpack-error-utils.js +++ b/packages/gatsby/src/utils/webpack-error-utils.ts @@ -1,12 +1,31 @@ const reporter = require(`gatsby-cli/lib/reporter`) +import { Stats } from "webpack" const stageCodeToReadableLabel = { "build-javascript": `Generating JavaScript bundles`, "build-html": `Generating SSR bundle`, develop: `Generating development JavaScript bundle`, -} +} as const + +type Stage = keyof typeof stageCodeToReadableLabel +type StageLabel = typeof stageCodeToReadableLabel[Stage] -const transformWebpackError = (stage, webpackError) => { +interface ITransformedWebpackError { + id: "98123" + filePath?: string + location?: { + start: string + } + context: { + stage: Stage + stageLabel: StageLabel + message?: string + } +} +const transformWebpackError = ( + stage: keyof typeof stageCodeToReadableLabel, + webpackError: any +): ITransformedWebpackError => { return { id: `98123`, filePath: webpackError?.module?.resource, @@ -30,7 +49,10 @@ const transformWebpackError = (stage, webpackError) => { } } -exports.structureWebpackErrors = (stage, webpackError) => { +export const structureWebpackErrors = ( + stage: Stage, + webpackError: any +): ITransformedWebpackError[] | ITransformedWebpackError => { if (Array.isArray(webpackError)) { return webpackError.map(e => transformWebpackError(stage, e)) } @@ -38,7 +60,7 @@ exports.structureWebpackErrors = (stage, webpackError) => { return transformWebpackError(stage, webpackError) } -exports.reportWebpackWarnings = stats => { +export const reportWebpackWarnings = (stats: Stats): void => { stats.compilation.warnings.forEach(webpackWarning => { if (webpackWarning.warning) { // grab inner Exception if it exists From 541c3b96853c734f3c570f9e7de753eb5651d81f Mon Sep 17 00:00:00 2001 From: Kyle Mathews Date: Wed, 18 Mar 2020 21:59:37 -0700 Subject: [PATCH 36/50] chore(release): Publish - gatsby-theme-blog-core@1.2.33 - gatsby-theme-blog@1.3.35 - gatsby-theme-notes@1.1.31 - gatsby@2.19.49 --- packages/gatsby-theme-blog-core/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog-core/package.json | 4 ++-- packages/gatsby-theme-blog/CHANGELOG.md | 4 ++++ packages/gatsby-theme-blog/package.json | 6 +++--- packages/gatsby-theme-notes/CHANGELOG.md | 4 ++++ packages/gatsby-theme-notes/package.json | 4 ++-- packages/gatsby/CHANGELOG.md | 4 ++++ packages/gatsby/package.json | 2 +- 8 files changed, 24 insertions(+), 8 deletions(-) diff --git a/packages/gatsby-theme-blog-core/CHANGELOG.md b/packages/gatsby-theme-blog-core/CHANGELOG.md index b06cd24603393..3a034739f8fa6 100644 --- a/packages/gatsby-theme-blog-core/CHANGELOG.md +++ b/packages/gatsby-theme-blog-core/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.2.33](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.32...gatsby-theme-blog-core@1.2.33) (2020-03-19) + +**Note:** Version bump only for package gatsby-theme-blog-core + ## [1.2.32](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog-core@1.2.31...gatsby-theme-blog-core@1.2.32) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog-core diff --git a/packages/gatsby-theme-blog-core/package.json b/packages/gatsby-theme-blog-core/package.json index 54dfe0f7c0b81..88e54da656f06 100644 --- a/packages/gatsby-theme-blog-core/package.json +++ b/packages/gatsby-theme-blog-core/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog-core", - "version": "1.2.32", + "version": "1.2.33", "main": "index.js", "author": "christopherbiscardi (@chrisbiscardi)", "license": "MIT", @@ -30,7 +30,7 @@ }, "devDependencies": { "@mdx-js/react": "^1.5.7", - "gatsby": "^2.19.48", + "gatsby": "^2.19.49", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-blog/CHANGELOG.md b/packages/gatsby-theme-blog/CHANGELOG.md index fee37d1b8ab9c..4dd8c4c78c31d 100644 --- a/packages/gatsby-theme-blog/CHANGELOG.md +++ b/packages/gatsby-theme-blog/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.3.35](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.34...gatsby-theme-blog@1.3.35) (2020-03-19) + +**Note:** Version bump only for package gatsby-theme-blog + ## [1.3.34](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-blog@1.3.33...gatsby-theme-blog@1.3.34) (2020-03-18) **Note:** Version bump only for package gatsby-theme-blog diff --git a/packages/gatsby-theme-blog/package.json b/packages/gatsby-theme-blog/package.json index 6a4c88b413d3b..5964cb89bbf2d 100644 --- a/packages/gatsby-theme-blog/package.json +++ b/packages/gatsby-theme-blog/package.json @@ -1,6 +1,6 @@ { "name": "gatsby-theme-blog", - "version": "1.3.34", + "version": "1.3.35", "description": "A Gatsby theme for miscellaneous blogging with a dark/light mode", "main": "index.js", "keywords": [ @@ -29,7 +29,7 @@ "gatsby-plugin-react-helmet": "^3.1.24", "gatsby-plugin-theme-ui": "^0.2.53", "gatsby-plugin-twitter": "^2.1.21", - "gatsby-theme-blog-core": "^1.2.32", + "gatsby-theme-blog-core": "^1.2.33", "mdx-utils": "0.2.0", "react-helmet": "^5.2.1", "react-switch": "^5.0.1", @@ -39,7 +39,7 @@ "typography-theme-wordpress-2016": "^0.16.19" }, "devDependencies": { - "gatsby": "^2.19.48", + "gatsby": "^2.19.49", "prettier": "^1.19.1", "react": "^16.12.0", "react-dom": "^16.12.0" diff --git a/packages/gatsby-theme-notes/CHANGELOG.md b/packages/gatsby-theme-notes/CHANGELOG.md index 24f000bc11415..c2b698d7cd5a5 100644 --- a/packages/gatsby-theme-notes/CHANGELOG.md +++ b/packages/gatsby-theme-notes/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [1.1.31](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.30...gatsby-theme-notes@1.1.31) (2020-03-19) + +**Note:** Version bump only for package gatsby-theme-notes + ## [1.1.30](https://github.com/gatsbyjs/gatsby/compare/gatsby-theme-notes@1.1.29...gatsby-theme-notes@1.1.30) (2020-03-18) **Note:** Version bump only for package gatsby-theme-notes diff --git a/packages/gatsby-theme-notes/package.json b/packages/gatsby-theme-notes/package.json index 324e48a67e61c..8ed957443c08a 100644 --- a/packages/gatsby-theme-notes/package.json +++ b/packages/gatsby-theme-notes/package.json @@ -1,7 +1,7 @@ { "name": "gatsby-theme-notes", "description": "Gatsby Theme for adding a notes section to your website", - "version": "1.1.30", + "version": "1.1.31", "author": "John Otander", "license": "MIT", "main": "index.js", @@ -20,7 +20,7 @@ }, "homepage": "https://github.com/gatsbyjs/gatsby/tree/master/packages/gatsby-theme-notes#readme", "devDependencies": { - "gatsby": "^2.19.48", + "gatsby": "^2.19.49", "react": "^16.12.0", "react-dom": "^16.12.0" }, diff --git a/packages/gatsby/CHANGELOG.md b/packages/gatsby/CHANGELOG.md index b04d5b91a6835..8bde7b1f65259 100644 --- a/packages/gatsby/CHANGELOG.md +++ b/packages/gatsby/CHANGELOG.md @@ -3,6 +3,10 @@ All notable changes to this project will be documented in this file. See [Conventional Commits](https://conventionalcommits.org) for commit guidelines. +## [2.19.49](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.48...gatsby@2.19.49) (2020-03-19) + +**Note:** Version bump only for package gatsby + ## [2.19.48](https://github.com/gatsbyjs/gatsby/compare/gatsby@2.19.47...gatsby@2.19.48) (2020-03-18) **Note:** Version bump only for package gatsby diff --git a/packages/gatsby/package.json b/packages/gatsby/package.json index ebe7f3e0b7f90..6f94c5f633319 100644 --- a/packages/gatsby/package.json +++ b/packages/gatsby/package.json @@ -1,7 +1,7 @@ { "name": "gatsby", "description": "Blazing fast modern site generator for React", - "version": "2.19.48", + "version": "2.19.49", "author": "Kyle Mathews ", "bin": { "gatsby": "./dist/bin/gatsby.js" From 19feaa67d8dd170bd036885de8f70e8789acb862 Mon Sep 17 00:00:00 2001 From: shyamlohar-ai <62055498+shyamlohar-ai@users.noreply.github.com> Date: Thu, 19 Mar 2020 14:25:55 +0530 Subject: [PATCH 37/50] chore(starters): Add gatsby-attila-theme-starter to starters (#22175) Co-authored-by: gatsbybot --- docs/starters.yml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 303dc2ea6abdb..639a4e471d8fb 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5588,6 +5588,28 @@ - Robots.txt - Sitemap - PWA +- url: https://gatsby-attila.netlify.com/ + repo: https://github.com/armada-inc/gatsby-attila-theme-starter + description: A Gatsby starter for creating blogs from headless Ghost CMS. + tags: + - Blog + - CMS:Headless + - SEO + - Styling:SCSS + - Pagination + features: + - Attila standard Ghost theme + - Data sourcing from headless Ghost + - Responsive design + - SEO optimized + - OpenGraph structured data + - Twitter Cards meta + - Sitemap Generation + - XML Sitemaps + - Progressive Web App + - Offline Support + - RSS Feed + - Composable and extensible - url: https://gatsby-contentful-portfolio.netlify.com/ repo: https://github.com/wkocjan/gatsby-contentful-portfolio description: Gatsby portfolio theme integrated with Contentful From 61d8feccc96533c5efd776d6b260c96bc0ef61c3 Mon Sep 17 00:00:00 2001 From: Sankarsan Kampa <19631364+k3rn31p4nic@users.noreply.github.com> Date: Thu, 19 Mar 2020 17:55:09 +0530 Subject: [PATCH 38/50] docs(sites): add a site to showcase (#22397) Adding a covid-19 tracker to the site showcase. --- docs/sites.yml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/sites.yml b/docs/sites.yml index 6b1b402086828..ff75d3523f587 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -10077,3 +10077,14 @@ built_by: Kelvin DeCosta built_by_url: https://github.com/kelvindecosta featured: false +- title: Coronavirus (COVID-19) Tracker + url: https://coronavirus.traction.one/ + main_url: https://coronavirus.traction.one/ + description: > + This application shows the near real-time status based on data from JHU CSSE. + categories: + - Data + - Directory + built_by: Sankarsan Kampa + built_by_url: https://traction.one + featured: false From d9c64152bfd937eae2737fc15f36991dfc4963d0 Mon Sep 17 00:00:00 2001 From: Matheus Assis Date: Thu, 19 Mar 2020 09:34:50 -0300 Subject: [PATCH 39/50] Fixed eslint url path (#22399) * Fixed eslint url path * Fixed one more eslint config url --- docs/docs/eslint.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/docs/eslint.md b/docs/docs/eslint.md index 6460c03a4da5f..daf64a3b0345a 100644 --- a/docs/docs/eslint.md +++ b/docs/docs/eslint.md @@ -10,7 +10,7 @@ JavaScript, being a dynamic and loosely-typed language, is especially prone to d Gatsby ships with a built-in [ESLint](https://eslint.org) setup. For _most_ users, our built-in ESlint setup is all you need. If you know however that you'd like to customize your ESlint config e.g. your company has their own custom ESlint setup, this shows how this can be done. -You'll replicate (mostly) the [ESLint config Gatsby ships with](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/eslint-config.js) so you can then add additional presets, plugins, and rules. +You'll replicate (mostly) the [ESLint config Gatsby ships with](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/eslint-config.ts) so you can then add additional presets, plugins, and rules. ```shell @@ -38,7 +38,7 @@ module.exports = { } ``` -Note: When there is no ESLint file Gatsby implicitly adds a barebones ESLint loader. This loader pipes ESLint feedback into the terminal window where you are running or building Gatsby and also to the console in your browser developer tools. This gives you consolidated, immediate feedback on newly-saved files. When you include a custom `.eslintrc` file, Gatsby gives you full control over the ESLint configuration. This means that it will override the built-in `eslint-loader` and you need to enable any and all rules yourself. One way to do this is to use the Community plugin [`gatsby-eslint-plugin`](/packages/gatsby-plugin-eslint/). This also means that the default [ESLint config Gatsby ships with](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/eslint-config.js) will be entirely overwritten. If you would still like to take advantage of those rules, you'll need to copy them to your local file. +Note: When there is no ESLint file Gatsby implicitly adds a barebones ESLint loader. This loader pipes ESLint feedback into the terminal window where you are running or building Gatsby and also to the console in your browser developer tools. This gives you consolidated, immediate feedback on newly-saved files. When you include a custom `.eslintrc` file, Gatsby gives you full control over the ESLint configuration. This means that it will override the built-in `eslint-loader` and you need to enable any and all rules yourself. One way to do this is to use the Community plugin [`gatsby-eslint-plugin`](/packages/gatsby-plugin-eslint/). This also means that the default [ESLint config Gatsby ships with](https://github.com/gatsbyjs/gatsby/blob/master/packages/gatsby/src/utils/eslint-config.ts) will be entirely overwritten. If you would still like to take advantage of those rules, you'll need to copy them to your local file. ### Disabling ESLint From 101e3226572c190bcd2ce445869104b1a477ba7f Mon Sep 17 00:00:00 2001 From: "Ellis Min(Dongbin)" Date: Thu, 19 Mar 2020 08:51:13 -0500 Subject: [PATCH 40/50] chore(starters): add gatsby-minimalistic-dmin (#22375) Co-authored-by: Obinna Ekwuno --- docs/starters.yml | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/docs/starters.yml b/docs/starters.yml index 639a4e471d8fb..ff029aa9e4f2a 100644 --- a/docs/starters.yml +++ b/docs/starters.yml @@ -5658,6 +5658,26 @@ - Styled 404 page - Lightweight - Styled Components +- url: https://gatsby-minimalistic-dmin.netlify.com/ + repo: https://github.com/EllisMin/gatsby-minimalistic-dmin + description: A ready-to-use, customizable personal blog with minimalistic design + tags: + - Blog + - Markdown + - Netlify + - SEO + - Styling:Other + - Documentation + features: + - Simple blog with responsive design + - Light / Dark Mode Switch + - Markdown / HTML to create post & About page + - Code syntax highlighting (Light / Dark) + - Facebook Comments plugin + - Social Media Links & Share buttons + - Googly Analytics Support + - Easy & Highly Customizable + - Styled Components - url: https://gatsby-airtable-listing.netlify.com/ repo: https://github.com/wkocjan/gatsby-airtable-listing description: Airtable theme for Gatsby From 7d7360465c30ea8b02f3adf4a87f38394f9658b9 Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Thu, 19 Mar 2020 23:34:00 +0900 Subject: [PATCH 41/50] chore(gatsby): migrate webpack-hmr-hooks-patch to TypeScript (#22280) * chore(gatsby): migrate webpack-hmr-hooks-patch to TypeScript * fix test * add guard for webpack-hmr-hooks-patch * add description for remaining webpack-hmr-hooks-patch as JS --- packages/gatsby/src/utils/webpack-hmr-hooks-patch.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/packages/gatsby/src/utils/webpack-hmr-hooks-patch.js b/packages/gatsby/src/utils/webpack-hmr-hooks-patch.js index 169718284d486..7aca2012242c2 100644 --- a/packages/gatsby/src/utils/webpack-hmr-hooks-patch.js +++ b/packages/gatsby/src/utils/webpack-hmr-hooks-patch.js @@ -1,3 +1,7 @@ +/** + * This file should remain as JS because the migration to TypeScript break the patch. + * For more details, https://github.com/gatsbyjs/gatsby/pull/22280 + */ const originalFetch = global.fetch delete global.fetch From 0700cd5304b186239c01c2b14c2c6bc171cb1024 Mon Sep 17 00:00:00 2001 From: Daiki Ihara Date: Thu, 19 Mar 2020 23:34:46 +0900 Subject: [PATCH 42/50] chore(gatsby): migrate test-require-error to typescript (#22265) * chore(gatsby): migrate test-require-error to typescript * fix test * fix pointed out --- packages/gatsby/src/bootstrap/get-config-file.js | 5 +++-- packages/gatsby/src/bootstrap/resolve-module-exports.js | 2 +- .../{test-require-error.js => test-require-error.ts} | 2 +- .../utils/{test-require-error.js => test-require-error.ts} | 2 +- 4 files changed, 6 insertions(+), 5 deletions(-) rename packages/gatsby/src/utils/__tests__/{test-require-error.js => test-require-error.ts} (98%) rename packages/gatsby/src/utils/{test-require-error.js => test-require-error.ts} (89%) diff --git a/packages/gatsby/src/bootstrap/get-config-file.js b/packages/gatsby/src/bootstrap/get-config-file.js index eabc24e26c837..dc99ccc5d0b82 100644 --- a/packages/gatsby/src/bootstrap/get-config-file.js +++ b/packages/gatsby/src/bootstrap/get-config-file.js @@ -1,7 +1,7 @@ /* @flow */ const levenshtein = require(`fast-levenshtein`) const fs = require(`fs-extra`) -const testRequireError = require(`../utils/test-require-error`).default +import { testRequireError } from "../utils/test-require-error" const report = require(`gatsby-cli/lib/reporter`) const path = require(`path`) const existsSync = require(`fs-exists-cached`).sync @@ -20,7 +20,8 @@ module.exports = async function getConfigFile( distance: number = 3 ) { const configPath = path.join(rootDir, configName) - let configModule, configFilePath + let configModule + let configFilePath try { configFilePath = require.resolve(configPath) configModule = require(configFilePath) diff --git a/packages/gatsby/src/bootstrap/resolve-module-exports.js b/packages/gatsby/src/bootstrap/resolve-module-exports.js index 0fbc9ffdd0b29..6ad756dde6fc9 100644 --- a/packages/gatsby/src/bootstrap/resolve-module-exports.js +++ b/packages/gatsby/src/bootstrap/resolve-module-exports.js @@ -6,7 +6,7 @@ const { codeFrameColumns } = require(`@babel/code-frame`) const { babelParseToAst } = require(`../utils/babel-parse-to-ast`) const report = require(`gatsby-cli/lib/reporter`) -const testRequireError = require(`../utils/test-require-error`).default +import { testRequireError } from "../utils/test-require-error" const staticallyAnalyzeExports = (modulePath, resolver = require.resolve) => { let absPath diff --git a/packages/gatsby/src/utils/__tests__/test-require-error.js b/packages/gatsby/src/utils/__tests__/test-require-error.ts similarity index 98% rename from packages/gatsby/src/utils/__tests__/test-require-error.js rename to packages/gatsby/src/utils/__tests__/test-require-error.ts index c243f69167ad2..3f7f195f3f086 100644 --- a/packages/gatsby/src/utils/__tests__/test-require-error.js +++ b/packages/gatsby/src/utils/__tests__/test-require-error.ts @@ -1,4 +1,4 @@ -const testRequireError = require(`../test-require-error`).default +import { testRequireError } from "../test-require-error" describe(`test-require-error`, () => { it(`detects require errors`, () => { diff --git a/packages/gatsby/src/utils/test-require-error.js b/packages/gatsby/src/utils/test-require-error.ts similarity index 89% rename from packages/gatsby/src/utils/test-require-error.js rename to packages/gatsby/src/utils/test-require-error.ts index 56fdb35187ad6..ea3cf0463a492 100644 --- a/packages/gatsby/src/utils/test-require-error.js +++ b/packages/gatsby/src/utils/test-require-error.ts @@ -1,6 +1,6 @@ // This module is also copied into the .cache directory some modules copied there // from cache-dir can also use this module. -export default (moduleName, err) => { +export const testRequireError = (moduleName: string, err: any): boolean => { // PnP will return the following code when a require is allowed per the // dependency tree rules but the requested file doesn't exist if ( From 43ad0854168f24da317e785bfc53e2eba6a181f7 Mon Sep 17 00:00:00 2001 From: Yuki Takemoto Date: Fri, 20 Mar 2020 00:21:56 +0900 Subject: [PATCH 43/50] chore(gatsby): Convert local-eslint-config-finder to typescript (#22403) --- ...ebpack-eslint-graphql-schema-reload-plugin.js | 2 +- ...g-finder.js => local-eslint-config-finder.ts} | 16 +++++++++------- packages/gatsby/src/utils/webpack.config.js | 2 +- 3 files changed, 11 insertions(+), 9 deletions(-) rename packages/gatsby/src/utils/{local-eslint-config-finder.js => local-eslint-config-finder.ts} (53%) diff --git a/packages/gatsby/src/utils/gatsby-webpack-eslint-graphql-schema-reload-plugin.js b/packages/gatsby/src/utils/gatsby-webpack-eslint-graphql-schema-reload-plugin.js index 6a82dc62fa7c6..bc118355cacd2 100644 --- a/packages/gatsby/src/utils/gatsby-webpack-eslint-graphql-schema-reload-plugin.js +++ b/packages/gatsby/src/utils/gatsby-webpack-eslint-graphql-schema-reload-plugin.js @@ -6,7 +6,7 @@ */ const { store } = require(`../redux`) const eslintConfig = require(`./eslint-config`) -const hasLocalEslint = require(`./local-eslint-config-finder`) +const { hasLocalEslint } = require(`./local-eslint-config-finder`) const isEslintRule = rule => { const options = rule && rule.use && rule.use[0] && rule.use[0].options diff --git a/packages/gatsby/src/utils/local-eslint-config-finder.js b/packages/gatsby/src/utils/local-eslint-config-finder.ts similarity index 53% rename from packages/gatsby/src/utils/local-eslint-config-finder.js rename to packages/gatsby/src/utils/local-eslint-config-finder.ts index 083e80e93b316..20cf8beb627c6 100644 --- a/packages/gatsby/src/utils/local-eslint-config-finder.js +++ b/packages/gatsby/src/utils/local-eslint-config-finder.ts @@ -1,11 +1,13 @@ -const path = require(`path`) -const glob = require(`glob`) -const debug = require(`debug`)(`gatsby:webpack-eslint-config`) -const report = require(`gatsby-cli/lib/reporter`) +import path from "path" +import glob from "glob" +import debug from "debug" +import report from "gatsby-cli/lib/reporter" -module.exports = directory => { +const log = debug(`gatsby:webpack-eslint-config`) + +export const hasLocalEslint = (directory: string): boolean => { try { - debug(`Attempting to load package.json for eslint config check`) + log(`Attempting to load package.json for eslint config check`) const pkg = require(path.resolve(directory, `package.json`)) if (pkg.eslintConfig) { @@ -15,7 +17,7 @@ module.exports = directory => { report.error(`There was a problem processing the package.json file`, err) } - debug(`Checking for eslint config file`) + log(`Checking for eslint config file`) const eslintFiles = glob.sync(`.eslintrc?(.js|.json|.yaml|.yml)`, { cwd: directory, }) diff --git a/packages/gatsby/src/utils/webpack.config.js b/packages/gatsby/src/utils/webpack.config.js index c90f50d9ef545..97f0da1154d16 100644 --- a/packages/gatsby/src/utils/webpack.config.js +++ b/packages/gatsby/src/utils/webpack.config.js @@ -14,7 +14,7 @@ const getGatsbyDependents = require(`./gatsby-dependents`) const apiRunnerNode = require(`./api-runner-node`) const createUtils = require(`./webpack-utils`) -const hasLocalEslint = require(`./local-eslint-config-finder`) +import { hasLocalEslint } from "./local-eslint-config-finder" // Four stages or modes: // 1) develop: for `gatsby develop` command, hot reload and CSS injection into page From 39282ca97c2b74c2d50ef0f55c87bc8beb4c63af Mon Sep 17 00:00:00 2001 From: Michael <184316+muescha@users.noreply.github.com> Date: Thu, 19 Mar 2020 17:58:15 +0100 Subject: [PATCH 44/50] fix(docs): 404 link to workers.dev (#22365) * fix 404 link to workers.dev * remove word with Co-authored-by: gatsbybot --- docs/docs/deploying-to-cloudflare-workers.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/deploying-to-cloudflare-workers.md b/docs/docs/deploying-to-cloudflare-workers.md index bc88ffa1f179e..54ec3bbfea9cf 100644 --- a/docs/docs/deploying-to-cloudflare-workers.md +++ b/docs/docs/deploying-to-cloudflare-workers.md @@ -2,7 +2,7 @@ title: Deploying to Cloudflare Workers --- -[Cloudflare Workers](https://workers.cloudflare.com/) is a serverless platform for creating entirely new applications or augmenting existing ones without configuring or maintaining infrastructure. With [Workers Sites](https://developers.cloudflare.com/workers/sites/start-from-existing/) you can deploy any static site including your Gatsby projects to a domain on Cloudflare or for free with on your [workers.dev](workers.dev) subdomain. +[Cloudflare Workers](https://workers.cloudflare.com/) is a serverless platform for creating entirely new applications or augmenting existing ones without configuring or maintaining infrastructure. With [Workers Sites](https://developers.cloudflare.com/workers/sites/start-from-existing/) you can deploy any static site including your Gatsby projects to a domain on Cloudflare or for free on your [workers.dev](https://workers.dev) subdomain. To enable the KV store required to serve the Gatsby files, you'll need the [Workers Unlimited plan](https://developers.cloudflare.com/workers/about/pricing/) for \$5/month. From 3ce7083831ca1f83215cc7ce9c599e4eed62121f Mon Sep 17 00:00:00 2001 From: Yury Shkoda Date: Thu, 19 Mar 2020 13:13:07 -0400 Subject: [PATCH 45/50] Showcase erudicat update (#22407) * Site Showcase submission request * Site Showcase submission request * Update sites.yml * Updated showcase description * Site Showcase submission request * Site Showcase submission request * Updated showcase description --- docs/sites.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/sites.yml b/docs/sites.yml index ff75d3523f587..eec053d55ef07 100644 --- a/docs/sites.yml +++ b/docs/sites.yml @@ -9299,7 +9299,7 @@ main_url: https://www.erudicat.com url: https://www.erudicat.com description: > - ErudiCAT is an educational platform created to help PMP certification candidates to prepare for the exam. There are hundreds of sample questions and PMP mock exam. + ErudiCAT is an educational platform created to help PMP certification candidates to prepare for the exam. There are 1k+ sample questions and PMP Exam Simulator. Upon completion, there are statistics and performance chart available. Performance reports are saved in users' accounts and may be used later to review questions. The PMP Exam Simulator has a unique feature of Time Acceleration. It makes the Mock Exam even tougher and makes training even more advanced. categories: - Education - Web Development From 5496e6b190b8a7c335b2af65290f45fd8bf24e5e Mon Sep 17 00:00:00 2001 From: Daryl Chan <6095637+dvrylc@users.noreply.github.com> Date: Fri, 20 Mar 2020 03:13:37 +0800 Subject: [PATCH 46/50] fix(gatsby): Incorrect PackageJson type (#22406) * Fix PackageJson type * Fix typo --- packages/gatsby/index.d.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/gatsby/index.d.ts b/packages/gatsby/index.d.ts index aa3bcaf47fa62..7af526d86170d 100644 --- a/packages/gatsby/index.d.ts +++ b/packages/gatsby/index.d.ts @@ -1193,11 +1193,11 @@ export interface PackageJson { email: string } license?: string - dependencies?: Array> - devDependencies?: Array> - peerDependencies?: Array> - optionalDependencies?: Array> - bundledDependecies?: Array> + dependencies?: Record + devDependencies?: Record + peerDependencies?: Record + optionalDependencies?: Record + bundledDependencies?: Array keywords?: string[] } From a55329bd61728ca88b049b77f6e3dd46aa7b026d Mon Sep 17 00:00:00 2001 From: Leandro Facchinetti Date: Thu, 19 Mar 2020 15:22:00 -0400 Subject: [PATCH 47/50] Fix the setup() function in the documentation (#22368) https://github.com/gatsbyjs/gatsby/issues/16018 --- docs/docs/adding-an-rss-feed.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/docs/adding-an-rss-feed.md b/docs/docs/adding-an-rss-feed.md index 053d9f500902e..8aa93c6e5a570 100644 --- a/docs/docs/adding-an-rss-feed.md +++ b/docs/docs/adding-an-rss-feed.md @@ -159,7 +159,8 @@ module.exports = { } `, /* highlight-start */ - setup: () => ({ + setup: options => ({ + ...options, custom_namespaces: { itunes: 'http://www.itunes.com/dtds/podcast-1.0.dtd', }, From 341cc5b439194d7d4de00a2feda5e3e4118c4574 Mon Sep 17 00:00:00 2001 From: Michelle Gienow Date: Thu, 19 Mar 2020 15:49:10 -0400 Subject: [PATCH 48/50] Blog post feature flags (#22405) * Create index.md * add image file * create images folder and move image * Update index.md * Update index.md * Update index.md * Update index.md * Update index.md * changed date on post * change date in frontmatter --- .../images/feature-flags-dashboard.png | Bin 0 -> 221955 bytes .../index.md | 73 ++++++++++++++++++ 2 files changed, 73 insertions(+) create mode 100644 docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/images/feature-flags-dashboard.png create mode 100644 docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/index.md diff --git a/docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/images/feature-flags-dashboard.png b/docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/images/feature-flags-dashboard.png new file mode 100644 index 0000000000000000000000000000000000000000..51d758fcabca49db07e597a2a097165abe60e4ff GIT binary patch literal 221955 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 @mL>KJM9dFs~4TEt+et|Gcc0z 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%0AAR~P@~G2>7suA4pE&N5S-6#x4*^1@DP$IZkI96 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쒼U7vUw`19tHmZK~a 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 Ji^UE7{y*$4d;0(Y literal 0 HcmV?d00001 diff --git a/docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/index.md b/docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/index.md new file mode 100644 index 0000000000000..c040777457a5a --- /dev/null +++ b/docs/blog/2020-03-23-Flying-Feature-Flags-with-New-LaunchDarkly-plugin/index.md @@ -0,0 +1,73 @@ +--- +title: Flying Feature Flags with LaunchDarkly’s New Plugin for Gatsby +date: 2020-03-23 +author: "Rich Manalang" +excerpt: "Feature flags grant developers exquisite control over how and when new features are revealed to customers. LaunchDarkly’s new plugin for Gatsby makes using them exquisitely easy!" +tags: + - cloud + - plugins +--- + + A few months ago we decided to migrate our [public-facing documentation site](https://docs.launchdarkly.com) from a managed documentation service to Gatsby. We wanted greater control of the site and a git-based workflow. Additional goals were to scale to a larger set of internal authors and also accept contributions from our community. During the development of this new site, we realized that it might be useful to hide certain sections of the site from certain groups of people; for example, limit access to beta users or a specified group of reviewers. + +Here at [LaunchDarkly](https://launchdarkly.com/), we know a thing or two about using feature flags to control and manage the release of features. First, though, you might be wondering, [“What *are* feature flags, anyway?”](https://martinfowler.com/articles/feature-toggles.html). In simple terms, a feature flag is a decision point in your code that can change the behavior of your application. LaunchDarkly is a feature management system. It lets you ship code to production without revealing it to your customers, gradually release that code to an expanding group of customers, and easily roll back to an earlier version if you find a bug. + +Our first experiment in using LaunchDarkly with our own new site was to hide navigation items that aren’t quite ready for the world to see—while still allowing a limited set of people to access those hidden pages with the direct URL. When it’s appropriate, we can toggle a flag to show those navigation items to the world instantly. + +Sounds simple enough, right? There are a whole host of use cases where you might want to use feature flags on your Gatsby site: +* Gradually roll out new sections or features of your site +* Release a brand redesign across multiple properties and products by toggling a single flag, rather than coordinating manual, time-sensitive deploys +* Target specific users or user segments with the new feature +* [Experiment with an A/B/n test](https://launchdarkly.com/features/experimentation/) to find the best-performing variation of a feature + +We did all of the above in on our new Gatsby-based docs site! We had such a positive outcome from combining LaunchDarkly’s feature flag capabilities with Gatsby builds that it occurred to us others might want to do the same thing. So we got to work creating a plugin to make it super simple to use feature flags with Gatsby. + +The [LaunchDarkly plugin for Gatsby](https://www.gatsbyjs.org/packages/gatsby-plugin-launchdarkly/) makes it easy to start using feature flags in any Gatsby site. This plugin is powered by the [LaunchDarkly React SDK](https://docs.launchdarkly.com/docs/react-sdk-reference). This SDK uses [server-sent events](https://en.wikipedia.org/wiki/Server-sent_events) to stream feature flag updates to your site in realtime. With it you can control feature availability instantly without your users having to refresh the page. + +Here’s a quick demo of this plugin in action: + +[![LaunchDarkly feature flag plugin](https://res.cloudinary.com/marcomontalbano/image/upload/v1583779053/video_to_markdown/images/youtube--kCidJJf75CA-c05b58ac6eb4c4700831b2b3070cd403.jpg)](https://www.youtube.com/embed/kCidJJf75CA "LaunchDarkly feature flag plugin") + + The example in the video shows a simple page from the Gatsby default starter using the LaunchDarkly plugin. Here’s the code: + + +```import React from "react" +import { Link } from "gatsby" + +import Layout from "../components/layout" +import Image from "../components/image" +import SEO from "../components/seo" + +import { useFlags } from 'gatsby-plugin-launchdarkly' + +const IndexPage = () => { + const flags = useFlags() + return ( + + +

{ flags.helloWorld ? 'Hello World!' : '' }

+

Welcome to your new Gatsby site.

+

Now go build something great.

+
+ +
+ Go to page 2 +
+ ) +} + +export default IndexPage +``` + +In this example, the `flags` object returned by the `useFlags()` hook is a simple object that contains all of the client-side feature flags available in your LaunchDarkly project. As the values of these flags change, components that rely on them re-render automatically. + +Here, we’re looking for a flag called `helloWorld`. This particular `helloWorld` flag is a boolean flag, but you can create flags that are multivariate strings, integers, or even JSON. + + +![Feature flags dashboard](./images/feature-flags-dashboard.png) + +I’ll leave it to your imagination for how you might use this, but the plugin is very flexible, and the sky’s the limit. You can use it to hide and reveal navigation items like we’re doing. You can use it to test out a new visual design. + +However you use it, we’d love to hear about it. Tweet to [@launchdarkly](https://twitter.com/launchdarkly) and [@gatsbyjs](https://twitter.com/gatsbyjs) and let us know what you think! + +One last thing: [this plugin is open source](https://github.com/launchdarkly-labs/gatsby-plugin-launchdarkly). We’d love your contributions! From 9b7b6bb71f42061873c7d4cc0b427e6bafca0bd6 Mon Sep 17 00:00:00 2001 From: Michal Piechowiak Date: Thu, 19 Mar 2020 21:27:42 +0100 Subject: [PATCH 49/50] chore: adjust renovate config (#22355) --- renovate.json5 | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/renovate.json5 b/renovate.json5 index fed10b3c9da11..6d795edf5545c 100644 --- a/renovate.json5 +++ b/renovate.json5 @@ -46,6 +46,37 @@ "react-docgen", ], }, + { + // minor updates in packages <1.0.0 - need master issue approval + // not grouped + masterIssueApproval: true, + updateTypes: ["minor"], + packageNames: [ + // below is list of packages that use 0.X version range, any minor bump there can contain breaking changes, so we just ignore minor bumps for those packages and will need to bump them manually + "@reach/skip-nav", + "@theme-ui/prism", + "@theme-ui/typography", + "axios", + "babel-preset-gatsby", + "sharp", + "gatsby-plugin-theme-ui", + "graphiql-explorer", + "guess-webpack", + "jest-silent-reporter", + "js-combinatorics", + "jscodeshift", + "mini-css-extract-plugin", + "react-refresh", + "scroll-behavior", + "theme-ui", + "webpack-stats-plugin", + "xlsx", + "zipkin", + "zipkin-transport-http", + // below is list of packages that we use alpha/beta/next/canary, where it's not really safe to bump automatically and need extra caution + "react-docgen", + ], + }, { groupName: "patch updates in packages", updateTypes: ["patch"], From 2205811f298ff4e670e54a449012d294f8695834 Mon Sep 17 00:00:00 2001 From: Erez Rokah Date: Thu, 19 Mar 2020 23:41:41 +0200 Subject: [PATCH 50/50] fix(plugin-netlify-cms): use 'netlify-identity.js' instead of 'netlify-identity-widget.js' (#22387) --- packages/gatsby-plugin-netlify-cms/src/gatsby-node.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/gatsby-plugin-netlify-cms/src/gatsby-node.js b/packages/gatsby-plugin-netlify-cms/src/gatsby-node.js index 1ef0a7965735e..7fd07dad548d7 100644 --- a/packages/gatsby-plugin-netlify-cms/src/gatsby-node.js +++ b/packages/gatsby-plugin-netlify-cms/src/gatsby-node.js @@ -175,8 +175,8 @@ exports.onCreateWebpackConfig = ( name: `netlify-identity-widget`, global: `netlifyIdentity`, assetDir: `build`, - assetName: `netlify-identity-widget.js`, - sourceMap: `netlify-identity-widget.js.map`, + assetName: `netlify-identity.js`, + sourceMap: `netlify-identity.js.map`, }) }