Website architecture


We use Gatsby for static site generation because sites built with it are very fast.

This framework uses React and JavaScript/TypeScript.

Source Code

The website lives in docs/ directory of golangci-lint repository.


Initially the site is based on @rocketseat theme. Later we've merged its code into src/@rocketseat because we needed too much changes and gatsby shadowing doesn't allow shadowing gatsby-node.js or gatsby-config.js.

Left menu is configured in src/config/sidebar.yml.


Articles are located in src/docs/ in *.mdx files. MDX is markdown allowing to use React components.


We use templates like {.SomeField} inside our mdx files. There templates are expanded by running make expand_website_templates in the root of the repository. It runs script scripts/expand_website_templates/main.go that rewrites mdx files with replaced templates.


We use GitHub Pages as static website hosting and CD.

GitHub deploys the website to production after merging anything to a master branch.

Local Testing


npm install
npm run start

And navigate to http://localhost:8000 after successful Gatsby build. There is no need to restart Gatsby server almost for all changes: it supports hot reload. Also, there is no need to refresh a webpage: hot reload updates changed content on the open page.

Website Build

To do it run:

go run ./scripts/expand_website_templates/main.go
Edit this page on GitHub