Skip to content
This repository has been archived by the owner on Apr 17, 2023. It is now read-only.

stacks-archive/blockstack.org

Repository files navigation

Blockstack.org

The official website for the latest information on Blockstack
blockstack.org

Contribute · Explore


Blockstack.org

Discord PRs Welcome

A live version of this site can be found online at https://blockstack.org.

Technology

This is a react application built using next.js. It is statically exported to markup + javascript. It is using redux-bundler (an abstraction on top of redux + reselect) for state management. Most of the content is written in Markdown, parsed using MDX.

Contributing

Be sure to have node + npm/yarn installed before getting started.

Fork the repo and pull it down to your machine, and then in the directory run:

npm install
npm run dev

OR

yarn install
yarn dev

Running the dev task will launch a local instance of the site with all the modern advantages of front end work (hot module reloading, etc).

Adding pages / routes

Next.js is first and foremost a directory/file based framework. If you look in the pages directory, you should get a pretty good idea of the routes contained within this project. To add a new route, simply create a file or folder with the route you want to add, and start coding! Files can be *.js or *.mdx

The blog gets its data from an external source (Ghost) and is parsed via /blog and /blog/single. Even though the data is external, you can still get some insight into how the routes work via the directory structure.

Exporting new pages

Because we are exporting the react application to run in places only static sites can, we have to pass our routes to the next.config.js file. We have a routes.js file that contains our static and dynamic routes. When adding a new page, make sure to add the path to this file.

Next.js has a function called exportPathMap in the next.config.js which allows the export to know what to export! You can also fetch data at this point to generate dynamic pages. Take a look at next.config.js to see an example.

Sitemap