0.1.0
Changelog for the official Nord website and documentation
This is the initial release version of Nord Docs!
It represents the basic project setup, structure and development workflow with an deployable state. There are many initial implementations and configurations for the documented design concepts. They are covered in the following sections of this version changelog to introduce used technologies and explain why several decisions have been made.
To get an overview of the general project plan, read the “Design Concept & Initial Launch Plan” documentation which describes the project's justification, it's goals, the architecture, the tech stack and the “UI Design & Branding“ concept.
Features
Basic Project Setup
NPM configuration file — #4 (⊶ f4df27c)
↠ Added the NPM .npmrc
file to ensure specific configurations are set project-wide for all core team members and contributors. This includes the usage of the lockfile and exact (dev)dependency package versions.
Git mail mapping — #9 (⊶ e562910)
↠ Added a Git mailmap file to link to in documentations and allow contributors to send mails regarding security issues. This prevents unnecessary overhead of updating all documents when new core team and members and contributors are added and additionally adds the main functionality of the file: Mapping commits when someone uses a different email address.
EditorConfig — #11 (⊶ 4fa30ce)
↠ Added the EditorConfig file to define and maintain consistent coding styles between different editors and IDEs.
GitHub code owners — #7 (⊶ 05ded0c)
↠ Adapted to GitHub's code owners feature to define matching pattern for project paths to automatically add all required reviewers of the core team and contributors to new PRs. Read the GitHub Help article for more details.
GitHub Open Source community standards — #8 ⇄ #12 (⊶ 262f731)
↠ Inspired Nord Docs project philosophy using GitHub's features for recommended community standards. It adheres to the great Open Source Guides and adapted to the recommendations to complete the projects community profile.
To facilitate a healthy and constructive community behavior, Nord Docs also introduced and enforces a code of conduct.
Read the GitHub Help article for more details about the provided integrations.
The added contribution guidelines help to build a community that encourages people to use, contribute to, and evangelize the project.
It includes sections about
- how to get started
- bug reports
- enhancement suggestions
- pull requests
- style guides
- credits
Read the GitHub introduction blog post and the GitHub Help article for more details about the provided integrations.
GitHub issue and pull request templates — #10 ⇄ #13 (⊶ c3c7b8a)
↠ Integrated GitHub's feature to define multiple issue templates while the initial template file is used as a fallback/generic template to link to the specific ones.
Read the GitHub Help article for more details about issue and pull request templates. Also check out how to manually create issue templates, a pull request template. and the guide on how to create the (deprecated) fallback/generic issue template.
Introducing remark-lint — #14 ⇄ #19 (⊶ 1d2959c)
↠ Integrated remark-lint, a linter built on remark, the powerful Markdown processor powered by plugins such as remark-lint.
It is used through remark-cli with remark-preset-lint-arcticicestudio, the custom preset that implements the Arctic ice Studio Markdown Style Guide.
To lint all Markdown sources within the project the lint:md
NPM script has been added which will be picked up by the main lint
script.
Introducing ESLint — #15 ⇄ #20 (⊶ d4bd783)
↠ Integrated ESLint, the pluggable and de-facto standard linting utility for JavaScript using the configuration preset eslint-config-arcticicestudio which implements the Arctic Ice Studio JavaScript Style.
Read #15 for more details about the configuration and setup as well as included plugins.
To lint all JavaScript sources within the project the lint:js
NPM script has been added which will be picked up by the main lint
script. The second script format:js
allows to make use of ESLint's great auto-fixing feature.
Introducing Prettier — #16 ⇄ #21 (⊶ 39af1da)
↠ Integrated Prettier, the opinionated code formatter with support for many languages and integrations with most editors. It ensures that all outputted code conforms to a consistent style and provides the best and recommended style configurations of-out-the-box™.
Read #16 for more details about the configuration and setup as well as included plugins.
To format all compatible sources within the project the format:pretty
NPM script has been added which will be picked up by the main format
script.
Introducing lint-staged — #17 ⇄ #22 (⊶ 6ab1091)
↠ Integrated lint-staged to run linters against staged Git files and prevent adding code that violates any style guide into the code base.
Read #17 for more details about the configuration and setup.
Introducing Husky — #18 ⇄ #23 (⊶ 16e90c3)
↠ Integrated Husky, the tool that make Git hooks easy and can prevent bad Git commits, pushes and more woof!
Read #18 for more details about the configuration and setup.
Project repository README — #49 (⊶ f856150)
↠ Wrote the project's repository README that initially contains the hero and various badges provided by the great shields.io project. Further documentations about the design concept, architecture and technologies as well as guides for contributions to develop, run and maintain the project will be documented within the docs itself. Minimal instructions might be added later on within a “Getting Started” / “Quick Start” section.
Design Concept: JAMstack
The following sections include details about implemented requirements for the three key criteria of the “JAMstack” design concept.
The “Gatsby” design concept defines process steps and aspects for the static site generator that is used to build Nord Docs like the Gatsby core configuration, Gatsby API implementations, required Gatsby plugins, custom configurations for Babel and Webpack and many more.
Gatsby initial configuration — #27 ⇄ #28 (⊶ 3cda262)
↠ Initially implemented the core configuration of Gatsby through the gatsby-config.js
file. It defines project-wide site metadata that can be used through the GraphQL API and configures all used plugins.
Read #27 for more details about the configuration and setup as well as included plugins. There have also been some tickets for bug fixe
Babel configuration — #29 ⇄ #30 (⊶ b288bef)
↠ Implemented the configuration for Babel even when Gatsby comes with an already optimized setup to create SSR “static” websites and apps, but there are also use cases that require to modify and extend this configuration to e.g. add a new Babel plugin for the latest syntax feature/proposal support.
Read #29 for more details about the configuration and setup as well as included plugins.
Webpack configuration — #31 ⇄ #32 (⊶ 7734d05)
↠ Implemented the configuration for Webpack to add useful production bundle plugins and development workflow optimizations by using Gatsby's Node API.
Read #31 for more details about the configuration and setup as well as included plugins.
Introduce React — #33 (⊶ 24aecae)
↠ Initially added React's currently latest stable version 16.6.3. Since Gatsby v2, React and React DOM are a peer dependencies which allows users to freely choose the version they'd like to use.
Introduce React “prop-types” — #35 (⊶ 4fe5473)
↠ To support type validation and checking, Nord Docs initially uses React prop types through the prop-types package. This technique is sufficient for the beginning of the project and might be revised and refactored later on by migrating to TypeScript or integrating Flow.
Design Concept: Component & Project Structure
The following sections include details about implemented requirements for the “Component & Project Structure” design concept.
Implemented the Root
core container component (data provider) — #36 ⇄ #37 (⊶ 0465f37)
↠ The Root
core container is the first and one of the important main data provider React components of this project. It represents the base element and entry point that wraps the all custom application components and serves as a data provider later on. Some of the tasks in the future will be to
- provide context props and functions for the global styled-components theme through the
ThemeProvider
component - inject global styles through styled-components
createglobalstyle
function including typography (#2) related data like application-wide used fonts - possibly data stores for state management libraries like MobX
This initial implementation only renders a React.Fragment
.
Design Concept: Testing
The following sections include details about implemented requirements for the “Testing” design concept.
Set up the basic testing setup — #39 ⇄ #42 (⊶ 7a4d356)
↠ To start writing tests the basic testing environment has been set up. This includes the Gatsby specific configurations, the base setup for Jest as well as the fantastic react-testing-library and just-dom's custom matchers.
Read #39 for more details about the configuration and setup as well as included plugins.
Design Concept: Continuous Integration & Testing
The following sections include details about implemented requirements of the workflow for the “Continuous Integration & Testing” design concept.
Basic continuous integration & testing setup — #44 ⇄ #45 (⊶ 2d0000e)
↠ To ensure a great project quality, the stable and proven continuous integration & testing providers Circle CI and Codecov have been set up to automate the CI process pipelines and provide code coverage reports.
Read #44 for more details about the configuration and setup as well as available automated pipelines.
Design Concept: Hosting & Continuous Deployment
The following sections include details about implemented requirements of the workflow for the “Hosting & Continuous Deployment” design concept.
Basic Netlify configuration — #48 (⊶ f03dc82)
↠ Implemented Netlify's configuration file to define the command
and publish
path for production builds.
Read #48 and the design concept for more details about the configuration and setup as well as automated deployment pipelines.
Bug Fixes
Added missing “React Helmet” dependency — #34 (⊶ b63bab3)
↠ Implemented the configuration for Babel even when Gatsby comes with an already optimized setup to create SSR “static” websites and apps, but there are also use cases that require to modify and extend this configuration to e.g. add a new Babel plugin for the latest syntax feature/proposal support.
During the initial implementation of Gatsby (#27) the gatsby-plugin-react-helmet has been added, but the required react-helmet main package was accidentally forgotten to be added too.
Fix invalid Webpack resolve alias for pages
— #40 (⊶ d2e72e3)
↠ Fixed the Webpack resolve alias pages
for Gatsby pages that was configured to the invalid src/components/pages
path instead of the correct src/pages
path.
Fixed overridden ESLint import/no-extraneous-dependencies
rule — #41 (⊶ 7eccff4)
↠ The import/no-extraneous-dependencies rule allows to define a array of glob pattern that are allowed to define import devDependencies
. In #15 the rule was overridden to include the project specific path **/.gatsby/**
which whitelists all Gatsby specific scripts. Unfortunately this removed all glob pattern defined in the used eslint-config-arcticicestudio (rule is defined in the -base
package) resulting in errors in other projects paths like tests.
It has been fixed by importing the paths defined in the preset from the eslint-config-arcticicestudio-base package and merge it with the additional **/.gatsby/**
path.
Tasks
NPM package initialization — #3 (⊶ ff99b86)
↠ Initialized the NPM package.json
file that contains the project's metadata and dependency definitions.
Dependency update including security incident — #47 (⊶ 43204f0)
↠ Performed the first regular batch update for outdated dependencies that includes an important update since it for the hijacked package event-stream that includes malicious code which has been revealed yesterday. Nord Docs was affected passively because the package was a traverse dependency of the used package npm-run-all. The maintainer has reacted quickly and released the fix version 4.1.5.
Note that packages marked with an double exclamation mark ‼
have been affected by the security incident!
Production Dependencies
- gatsby
2.0.50
➔2.0.55
- gatsby-source-filesystem
2.0.8
➔2.0.9
Development Dependencies
- husky
1.1.4
➔1.2.0
- lint-staged
8.0.5
➔8.1.0
- ‼ npm-run-all
4.1.3
➔4.1.50
MIT license — #5 (⊶ a6b4e4e)
↠ Added the LICENSE.md
file for the MIT license.
Git ignore and attribute pattern — #6 (⊶ 6b26545)
↠ Added the .gitattributes
and .gitignore
configuration files to define the pattern.
Using binary
Git attribute for “Adobe Illustrator” artwork project files — #50 (⊶ f524be0)
↠ “Adobe Illustrator“ .ai
artwork project files have been changed to be handled with the binary
Git attribute instead of “normal” plain text to prevent encoding problems and noisy diff views.
The full changelog is available here