Build book-like internationalized, indexed, searcheable websites using React made easy
Overview
This is a hands-on deep-dive introduction to installing and using Docusaurus as a static (JAM stack) website builder.
NOTE: Content here are my personal opinions, and not intended to represent any employer (past or present). “PROTIP:” here highlight information I haven’t seen elsewhere on the internet because it is hard-won, little-know but significant facts based on my personal research and experience.
- 
    
Visit https://v2.docusaurus.io
Docusauraus2 provides several features not provided by GitHub Pages:
- Layout using React Redux MDX rather than static markdown
 - Document versioning
 - Content Search (using Algolia service)
 - Translations (Internationalization, abbreviated as “i18n”)
 
 - 
    
https://pester.dev/docs/additional-resources/articles
Searcheable Table in a sample Docusaurus (React) site
This takes advantage of React, not possible with plain static GitHub Markdown alone.
 - 
    
    
NOTE that Docusaurus does not support Windows IE11 (Internet Explorer).
Docusaurus is not just for documentation websites.
Due Diligence
 - 
    
https://github.com/facebook/docusaurus
Docusaurus was created and now maintained by Facebook, as a free open-source resource.
22-07-09 had 326 watchers and 34,700 Stars
21-03-19 had 264 watchers and 22,400 Stars - 
    
https://github.com/facebook/docusaurus/issues
Evaluate the repo for due diligence.
At time of writing, there are 192 issues and 1315 closed.
The oldest open issue goes back to May 5, 2018.
 - 
    
https://github.com/facebook/docusaurus/pulse
21 authors have pushed 35 commits to master and 68 commits to all branches.
Sebastien Lorber is the major contributor and owner, a contractor at Facebook. His personal website https://sebastienlorber.com has an icon to switch between dark and light themes.
 - 
    
<a target=”_blank” href=”https://twitter.com/docusaurus
Docusaurus1 began in 2017. It now has 2,438 Followers.
On Mar 9, 2021 “Docusaurus2 now has full feature parity with v1”
So stay away from version 1 documentation at
https://docusaurus.io/docs/en/installation - 
    
(Based on https://v2.docusaurus.io/blog/2017/12/14/introducing-docusaurus)
“We created Docusaurus … provide a consistent look and feel across all our open source projects”.
 - 
    
https://openbase.com/js/docusaurus
Trend of weekly downloads and reviews in OpenBase.com
 - 
    
https://stackshare.io/docusaurus
Who’s using Docusaurus?
 - 
    
https://v2.docusaurus.io/showcase
What some Docusaurus-based sites look like.
 - 
    
https://opencollective.com/docusaurus#category-BUDGET
Support Docusaurus financially.
View Sample Online
 - 
    
https://new.docusaurus.io refers you to
https://codesandbox.io/s/docusaurusIt’s an online sandbox, showing the same site contents as after local install below:

v2 local install
 - 
    
https://v2.docusaurus.io/docs/installation
There are two ways to get started:
A. npm package
B. docusaurus-init package. That’s what this site describes.
 - 
    
Install NodeJs
 - 
    
Install Yarn
 - 
    
Navigate to or create a container folder for your GitHub account where a new folder will be created by init program. The example here is:
”~/gmail_acct/Supersite”
Where gmail_acct is the GitHub organization account I use, “Supersite” is the name of the repo and fake product name.
PROTIP: I would like to have the documentation in the “Docs” folder to travel with the app’s source code.
 - 
    
Generate scaffold after changing DOC_SITE_NAME value:
DOC_SITE_NAME="Supersite" DOC_TEMPLATE="classic" npx @docusaurus/init@latest init "$DOC_SITE_NAME" "$DOC_TEMPLATE"
 - 
    
Type “y” to answer:
Need to install the following packages: @docusaurus/init@latest Ok to proceed? (y) y
 - 
    
Navigate into generated:
cd $DOC_SITE_NAME pwd
For me, I’m at
~/gmail_acct/Supersite/Supersite - 
    
See folders generated:
cd docs tree -L 2
├── README.md ├── babel.config.js ├── blog ├── docs ├── docusaurus.config.js ├── node_modules ├── package.json ├── sidebars.js ├── src ├── static └── yarn.lock
View site locally
 - 
    
Start the development server:
yarn run start
or
npx docusaurus start
The above command opens on your default browser
http://localhost:3000Back on the CLI, no other commands can be added until you press control+C to cancel the localhost running.
 
Below is a correspondance of the documentation and visuals associated with files:
| Folder /File | Visual | Description | 
|---|---|---|
| docusaurus.config.js (formerly siteConfig.js) | the "start" in CLI command "run start" | scripts invoked by the NodeJs package manager. | 
| docs folder | Docs menu on init page |  where you add your markdown that represents your documentation. Files:
   create-a-blog-post.md create-a-document.md create-a-page.md getting-started.md markdown-features.mdx thank-you.md  | 
| blogs folder | Blog menu on init page |  where you add your markdown for your dated blog posts. Files:
   2019-05-28-hola.md 2019-05-29-hello-world.md 2019-05-30-welcome.md  | 
| build folder | not displayed | minified js assets, html, etc. served to users, created by yarn build: 404.html, assets, blog, docs, img, index.html, markdown-page, sitemap.xml | 
| package.json | Text editor | List of NodeJs modules to be downloaded into node_modules folderl | 
| node_modules | not displayed | holds folders of libraries NodeJs downloads | 
| sidebars.js (formerly sidebars.json) | not displayed | where you maintain the layout and content of the sidebar (left-side menu) | 
| src folder | Within a text editor |  index.js is what NodeJs invokes to load React.js, the "brains" of Docusauraus. css files define the layout. Files:
   src
├── css
│   └── custom.css
└── pages
    ├── index.js
    ├── markdown-page.md
    └── styles.module.css
  
    | 
| static/img | Referenced in html & css |  static images. Files:
   docusaurus.png favicon.ico logo.svg undraw_docusaurus_mountain.svg undraw_docusaurus_react.svg undraw_docusaurus_tree.svgThese get built into the build/img folder.  | 
Configure docusaurus.config.js
- 
    
https://v2.docusaurus.io/docs/docusaurus.config.js lists each configuration item.
https://luctst.github.io/docusaurus-starter-pack/docs/siteconfig.html
Configure cname
 - 
    
Add the domain name that you obtained for your site:
cname: 'docs.mydomain.com',
This setting updates the GitHub Pages Custom domain entered in the GitHub repo’s settings. Without that line, the setting is cleared from GitHub’s GUI on every build.
Code Sortable Tables
 - 
    
https://docs.theochu.com/docusaurus/sortable-tables
Code theme styling
 - 
    
https://docusaurus-template-no-style.netlify.app
Add Content Search
 - 
    
https://docs.theochu.com/docusaurus/search
Add plug-ins
 - 
    
https://v2.docusaurus.io/docs/api/plugins
Localization
 - 
    
https://docusaurus.io/docs/en/translation
via CrowdIn.
Generate html static files
 - 
    
List files, then build:
ls -al yarn build
[en] Creating an optimized production build... ✔ Client Compiled successfully in 10.57s ✔ Server Compiled successfully in 12.26s Success! Generated static files in build. Use `npm run serve` to test your build locally. ✨ Done in 16.98s.
 - 
    
List files, then build:
ls -al build npm run serve ls -al
Publish to GitHub
yarn deploy
 
References
https://blog.logrocket.com/easy-documentation-with-docusaurus
More on front-end software development
This is one of several topics:
- UI Design Systems
 - Text Editors
 - Markdown text for GitHub from HTML
 - gRPC (g___ Remote Procedure Call)
 - Front-end UI creation options
 - Docusaurus static website generator
 - Static websites
 - JAM Stack Website Project Plan
 - Jekyll Site Development
 - Website styles
 - Website Styling
 - 
    
Protractor to automate testing of Angular and other web pages
 - Email from website
 - Search within Hyde format Jekyll websites
 - Data Visualization using Tableau