Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Design Concept & Initial Launch Plan #1

Open
arcticicestudio opened this issue May 12, 2018 · 0 comments
Open

Design Concept & Initial Launch Plan #1

arcticicestudio opened this issue May 12, 2018 · 0 comments

Comments

@arcticicestudio
Copy link
Contributor

arcticicestudio commented May 12, 2018

This epic documents the project concept and serves as a plan for the initial launch. It defines the web design process in several steps this project will go through. It is also the main issue to track all related sub-epics that contain detailed documentations about the concepts described in this issue.

🚧 This is a living document which means it is work in progress, not completed yet and will be extended!

Project Justification

The main reason to start this project is to create a „single source of truth“ for information, assets and resources of the Nord project and all of its ports. There are currently more than 35 repositories providing ports of Nord to various applications and platforms where each project is mostly self-contained regarding its source and documentation. However, there is always a correlation to the main project, the color palette itself, that makes it necessary to link between repositories or even include some assets of these.

On the other hand, the main repository need to keep references to all of its port projects making it time consuming to adapt to changes like documentations. Many port project repositories currently include both the code and documentation sources and even host them at the same time e.g. with GitHub Pages through a dedicated gh-pages branch.

Another important reason is the fact that there are currently no clear communication channels to publish information and news about the project. Instead, these are distributed across different media like Twitter, Slack, Reddit and Keybase (Chat). These channels will also get more attention to build up a more connected community where users can help each other. This should improve the current situation where users need to open a “support“ issue on the repository to get help with e.g. their setup problems. Instead, they can join one of the channels and in the best case get immediate help. I also hope to reduce the support / management overhead I currently have to deal with (which costs almost 80% of the time I can work on the projects) and concentrate more on development.

The site will be created as the the „single source of truth“ and bundle all information. The listed channels above and a new project blog are then used to announce and link new site content. This will also allow to create extensive and customized content instead of being limited to the possibilities of the respective platform.

Goals

This section contains what goals the site needs to fulfill and what its purpose. It should…

  1. …clearly convey the brand core message including the brand design of the creator.
  2. …aim to inform the user about the Nord project and all of its ports.
  3. …serve as a "single source of truth" for all project documentations, assets and resources.
  4. …include a blog to allow to publish content and news about the project.

Architecture

Please read the “JAMstack” design concept for all details and information.

Nord Docs will be designed and compliant to JAMstack, a modern web development architecture based on client-side JavaScript, reusable APIs, and prebuilt Markup.
The detailed design concept and all tracked implementation issues are documented in #24.

Technologies

This section lists the technologies that will be used to build the site. The detailed design concepts are documented in the related epics linked in each section.

UI

Please read the “JAMstack” & [“Gatsby”][gh-25] design concepts for all details and information.

Nord Docs UI will be build with Gatsby, the blazing fast modern site generator to build secure, modern and blazing fast websites and apps with React. It is fully compliant to JAMstack which is the web development architecture used to built Nord Docs as documented in #24.
The detailed design concept and all tracked implementation issues are documented in #25.

Styling

Since the website will be build with React the whole styling with the CSS-in-JS technique using one of the most popular libraries styled-components.

Content

Please read the “JAMstack” design concept for all details and information.

To use the great power of React, Nord Docs will make use of the MDX specification, a new language and abstract syntax tree definition. It be integrated through the official implementation, a fully-featured MDX parser, loader and JSX renderer to allow to seamlessly use JSX in Markdown documents by importing components and export metadata or any other ECMAScript compliant data structures like frontmatter.
The detailed design concept and all tracked implementation issues are documented in #24 in the Markup section.

Data Sources

Thanks to GraphQL API provide by Gatsby, every data source can be used whether it is from headless CMSs, SaaS services, APIs, databases or the file system: It can be pulled directly into the pages using GraphQL.

When it comes to fire up dynamic REST API requests (not during build time), the popular axios library will be used.

Hosting

Please read the “Hosting & Continuous Deployment” design concept for all details and information.

The website will be hosted on a dedicated domain with Netlify, the all-in-one workflow that combines global deployment, continuous integration, and automatic HTTPS to build, deploy, and manage modern web projects. It's a awesome provider that invests a lot into the open source community and sets new standards for web development for JAMstack based projects.
The detailed design concept and all tracked implementation issues are documented in #46.

UI Design and Branding

A detailed and extensive design documentation will be linked as soon as it is available, but a short description is that the site will follow a simple, uncluttered and clear design.

Resources

There are a lot of resources, information and inspirations that can be found in the web, whether it's other great websites, well-written articles/blogs or other awesome OSS projects.

This is a listing of some of the resource that have been used for the planing and concept processes described in this issue:

@arcticicestudio arcticicestudio self-assigned this May 12, 2018
arcticicestudio added a commit to nordtheme/nord that referenced this issue Mar 16, 2019
I'm hyped and happy that the initial launch (1) of Nord Docs, the shiny
new website and documentation of Nord, was finally announced (2).
The release 0.10.0 (3) marks the last version before the next release
(0.11.0) that'll be deployed to the production environment/domain at
https://www.nordtheme.com.

>> Time To Say Goodbye

The previously used website (4) (https://arcticicestudio.github.io/nord)
was hosted by GitHub Pages (5) using an deprecated GitBook version with
an bare template. It was created some time ago to provide at least a
simple website instead of only documenting the project in the README,
but this was always planned as a transitional solution.

>> Shiny New Home

Starting from version 0.11.0, all documentations and content assets are
located and served from Nord Docs, the new single-source-of-truth.
At the same time with the initial launch of the new website the old site
will be wiped completely and replaced by a simple `index.html` file that
includes a `<meta http-equiv="refresh" />` element to redirect all users
to the new domain.

>> Other changes

There are also some other changes that took place with this transition:

>>> No rendered SassDoc anymore

The Sass color palettes of Nord were documented with SassDoc from which
a static HTML was generated. Nord's build tools allowed to run this
generation and also uses a custom theme for the resulting HTML site.
Starting from the transition, the generation of the SassDoc files have
been removed from Nord including the development dependency for the
custom documentation theme!
Since the sources itself are not changed the used documentation syntax
is still used and there is no breaking change.

This comes with three advantages:

1. Nord maintainers are not responsible for also keeping these docs
   up-to-date as well as developing a documentation theme that matches
   Nord's style.
2. Users are able to simply generate it on their own using their
   preferred custom documentation theme.
3. The build process has been simplified and the additional step of
   deploying the generated docs manually to GitHub Pages is not
   necessary anymore.

According to the statistics the traffic hits for the SassDoc page was
almost dead (95% are search engines and bots) so the impact is almost
invisible.

>>> No optimized CSS module anymore

Previously it was possible to build a optimized CSS module (6) using the
`npm run optimize:css` command. This was done by using the clean-css (7)
package to optimize, clean and minify the CSS module and saving it as
`build/nord.css`. This also required to adjust the import path from
`node_modules/nord/src/nord.css` to `node_modules/nord/dist/nord.css`.

Since most users are building projects using a bundler like Webpack (8),
which takes care of optimizing the CSS module including the addition of
vendor prefixes, it is not necessary to provide such an optimized CSS
module. The result of the bundlers are generally more accurate,
up-to-date, matches the users preferred optimization rules and ensures
it fits the projects data processing flow.

Removing the optimized CSS module comes with the positive effects of
also removing more development dependencies.

>>> Lightweight And Simpler

Since all documentations will be served by Nord Docs there is no more
need for the `docs:dev` and `docs:build` npm commands and the logic
that behind them. This includes the deletion of the deprecated GitBooks
(dev)dependency and the whole `docs` directory with the actual Markdown
documentation source files.

There are also currently a lot of assets for Nord and all of its port
project included in the repository (9). Most of them have also been
moved to Nord Docs (or will be replaced by already existing ones) while
many have been deleted since they are not used and required anymore.

All these changes made Nord more lightweight with and cleaner structure
and simplified the build stack enormously.

>> Statistic Comparison

```raw
| Name                         | Value     | Level of concern          |
| ---------------------------- | --------- | ------------------------- |
| Overall repository size      |           |                           |
| * Commits                    |           |                           |
|   * Count                    |   173     |                           |
|   * Total size               |  67.4 KiB |                           |
| * Trees                      |           |                           |
|   * Count                    |   332     |                           |
|   * Total size               |   183 KiB |                           |
|   * Total tree entries       |  4.19 k   |                           |
| * Blobs                      |           |                           |
|   * Count                    |   387     |                           |
|   * Total size               |  58.7 MiB |                           |
| * Annotated tags             |           |                           |
|   * Count                    |     2     |                           |
| * References                 |           |                           |
|   * Count                    |    12     |                           |
|                              |           |                           |
| Biggest objects              |           |                           |
| * Commits                    |           |                           |
|   * Maximum size         [1] |  1.30 KiB |                           |
|   * Maximum parents      [2] |     2     |                           |
| * Trees                      |           |                           |
|   * Maximum entries      [3] |    96     |                           |
| * Blobs                      |           |                           |
|   * Maximum size         [4] |  3.48 MiB |                           |
|                              |           |                           |
| History structure            |           |                           |
| * Maximum history depth      |   154     |                           |
| * Maximum tag depth      [5] |     1     |                           |
|                              |           |                           |
| Biggest checkouts            |           |                           |
| * Number of directories  [6] |    18     |                           |
| * Maximum path depth     [6] |     4     |                           |
| * Maximum path length    [6] |    51 B   |                           |
| * Number of files        [7] |   141     |                           |
| * Total size of files    [7] |  49.9 MiB |                           |
| * Number of symlinks         |     0     |                           |
| * Number of submodules       |     0     |                           |
```

The report has been generated using GitHub's awesome git-sizer (11):
`git-sizer --verbose`

References:
  (1) nordtheme/web#1
  (2) https://twitter.com/arcticicestudio/status/1104494647383068673
  (3) https://github.com/arcticicestudio/nord-docs/releases/tag/v0.10.0
  (4) https://arcticicestudio.github.io/nord
  (5) https://pages.github.com
  (6) https://arcticicestudio.github.io/nord/development/building.html#optimized-css-module
  (7) https://www.npmjs.com/package/clean-css
  (8) https://webpack.js.org
  (9) https://github.com/arcticicestudio/nord/tree/develop/assets
  (10) https://github.com/github/git-sizer

GH-112
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant