You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 

11 KiB

README: Overview Documentation Repository

How the Documentation is Organized

Directories that contain information used to build content.

Directory Purpose Technical Repo(s)
_android SDK tutorial. Part of the developer menu. https://github.com/blockstack/blockstack-android
_browser Information for end-users about our identity, Storage, and using the browser. There are also three of the original tutorials in there. User docs controlled by in the the user menu. The three tutorials that appear in the developer menu There is an outstanding issue to move these. https://github.com/blockstack/blockstack-browser
_common Contains several shell files that redirect to our reference documentation sites such as Javascript, IOS, and so forth. The reference docs are linked from the developer, core, and Gaia menus. Each of these references are generated by their respective repos, core.blockstack.org from blockstack-core, Javascript docs from the blockstack.js and so forth.
_core Information for wallet, blockchain, or Clarity developers -- including Atlas, BNS, and so forth. This content STILL needs to be synced with the master docs subdirectory in blockstack-core. blockstack-core
_develop Information for application miners covers using the Javascript library, our mobile SDKs, and the concepts hat support them. Navigation controlled by developer menu This information was never associated with a single repo. Much of it does rely heavily on https://github.com/blockstack/blockstack.js.
_faqs Contains files for single-sourcing all the FAQs. The Blockstack docs has a single page that lists all the faqs; then several pages in different sections re-use this information. See the FAQs section below for detail about how these files figure into FAQS. Not related to repo.
_includes Information reused (markdown or html) in many places, common html used in pages and notes. These files don't correspond to a repository.
_ios SDK tutorial. Part of the developer menu. https://github.com/blockstack/blockstack-ios
_org Information for Stacks holders and people curious about what Blockstack does. Appear in the the organization menu Not associated with any repository.
_storage Information for developers using storage in their apps or creating Gaia servers. Appear in the the storage menu https://github.com/blockstack/blockstack-gaia
Directory Purpose Notes
_data Source files for the FAQS.
_includes
_layouts
_plugins
_posts
_sass
assets
exclude

Run locally

To run locally:

  1. Get the content from the downstream repos.

    ./get-content.sh
    
  2. Build and serve locally.

    bundle exec jekyll serve --config _config.yml,staticman.yml
    

    Use this format to turn on production features:

    JEKYLL_ENV=production bundle exec jekyll serve --config _config.yml
    

Deploy via Netlify

To deploy to Netlify:

  1. Build the site.

    JEKYLL_ENV=production bundle exec jekyll build --config _config.yml
    
  2. Force add the _site directory.

    git push -f origin
    

Test a Deploy with Surge

cd _site
surge
surge --domain raspy-songs.surge.sh

To generate the CLI json manually

The _data/cliRef.json file is generated from the blockstack-cli subcommand docs. This data file is consumed by the _includes/commandline.md file which is used to serve up the reference.

  1. Install the latest version of the cli according to the instructions at: https://github.com/blockstack/cli-blockstack

  2. Generate the json for the cli in the docs.blockstack repo.

    $ blockstack-cli docs | python -m json.tool > _data/cliRef.json 
    
  3. Make sure the generated docs are clean by building the documentation.

    If you run into any problem in the generation usually it results from a problem in the repo. You can make a pull request back to the repo to fix anything.

Clarity Reference

As of 8/12/19 Clarity is in the develop branch of core. You can build the Clarity command line from the Docker image. core/src/vm/docs/mod.rs

  1. Pull the latest developer preview from the Docker Hub.

    $ docker pull blockstack/blockstack-core:clarity-developer-preview
    
  2. Build the lastest JSON.

    docker run -it blockstack/blockstack-core:clarity-developer-preview blockstack-core docgen | jsonpp > ~/repos/docs.blockstack/_data/clarityRef.json
    
  3. Build the documentation and verify the Clarity reference is building correctly.

  4. Make changes in core

  5. Build the docker image

  6. Run doc gen with the new image

    $ docker run --name docsbuild -it blockstack-test blockstack-core docgen | jsonpp > ~/repos/docs.blockstack/_data/clarityRef.json
    

To view the clarity cli

You can view the source code.

  1. Pull the Blockstack core clarity-developer-preview image from Docker Hub.

     $ docker pull blockstack/blockstack-core:clarity-developer-preview
    
  2. Start the Blockstack Core test environment with a Bash shell.

    $ docker run -it -v $HOME/blockstack-dev-data:/data/ blockstack/blockstack-core:clarity-developer-preview bash
    

    The command launches a container with the Clarity test environment and opens a bash shell into the container.

  3. Run the clarity-cli in the shell.

    root@5b9798633251:/src/blockstack-core# clarity-cli
    Usage: clarity-cli [command]
    where command is one of:
    
    initialize         to initialize a local VM state database.
    mine_block         to simulated mining a new block.
    get_block_height   to print the simulated block height.
    check              to typecheck a potential contract definition.
    launch             to launch a initialize a new contract in the local state database.
    eval               to evaluate (in read-only mode) a program in a given contract context.
    eval_raw           to typecheck and evaluate an expression without a contract or database context.
    repl               to typecheck and evaluate expressions in a stdin/stdout loop.
    execute            to execute a public function of a defined contract.
    generate_address   to generate a random Stacks public address for testing purposes.
    

Understand how the shared FAQs work

The FAQ system servers single-sourced content that support the FAQs that appear in blockstack.org, app.co, and stacks.com site. We have FAQs that fall into these categories:

  • general
  • appusers
  • dappdevs
  • appminers
  • coredevs
  • opensource
  • miscquest
  • wallet (Wallet users)
  • tokens (Stacks owners)

FAQ content is created by the Jekyll build and served throughout the documentation site. Single sourcing the content ensures that FAQs are the same regardless of where and on which property they appear in. These files participate in the FAQ:

File Contains Purpose
_faqs/allfaqs.json Liquid to generate JSON from theFAQS.json Serves up the FAQs that are consumed by the blockstack.org and stacks.com sites.
_develop/faq-data.json Liquid to generate JSON from appFAQ.json. Serves up the FAQs that are consumed by the app.co site.

NOTE: App.co was never changed to pull from the same file as blockstack.org.
_faqs/allFAQs.md Liquid and headings. Reads the _data/theFAQs.json and produces a Markdown file for display in our site.
_data/theFAQs.json JSON for the FAQS. Source file for all the FAQs.
_data/appFAQ.json JSON for the app mining FAQs. Source file for the application mining FAQs.
_develop/appMiningFAQ.md Liquid to extract the app mining FAQs from the allFAQs.json file. Display just the app mining FAQs in the docs.

FAQs are usually written internally by a team that are unfamiliar with markdown or HTML used in websites. So, FAQs are produced using this process:

  1. Draft new or revised FAQs in a Google or Paper document.
  2. Review the drafts and approve them.
  3. Convert the FAQ document to HTML.
  4. Strip out the unnecessary codes such as id or class designations. This leaves behind plain html.
  5. Add the new FAQs to the _data/theFAQS.json file. Currently this is manually done through cut and paste.
  6. Copy the JSON for appminers categories to the _data/appFAQ.json file.

Technology Reference