-
+const ChildSection = ({ sections }) =>
+ sections.map(section => {
+ return (
+
+ {section.title}
+
+
+ );
+ });
+
+const BackItem = props => (
+
+
+
+
+ Back
+
);
-const Section = ({ section, visible, isLast, isFirst, setVisible, ...rest }: any) => {
- const isVisible = section.title === visible?.title;
+const NewNav = () => {
+ const [selected, setSelected] = React.useState({
+ type: 'default',
+ items: nav.sections,
+ selected: undefined,
+ });
- return (
-
- {section.title ? (
- setVisible(section)}
- _hover={{
- cursor: 'pointer',
- }}
- >
- {section.title}
-
-
-
-
- ) : null}
- {isVisible && }
-
- );
+ const handleClick = (page: any) => {
+ if (page.pages) {
+ setSelected({
+ type: 'page',
+ items: page,
+ });
+ } else {
+ setSelected({
+ type: 'default',
+ items: nav.sections,
+ selected: page.path,
+ });
+ }
+ };
+
+ const handleBack = () =>
+ setSelected({
+ type: 'default',
+ items: nav.sections,
+ });
+
+ if (selected.type === 'page') {
+ return (
+
+
+ {convertToTitle(selected.items.path)}
+
+ {selected.items ? : null}
+ {selected.items?.sections ? (
+ ({
+ ...section,
+ path: selected.items.path,
+ }))}
+ />
+ ) : null}
+
+
+ );
+ }
+
+ if (selected.type === 'default') {
+ return selected.items.map((section, i) => {
+ const itemProps =
+ i === 0
+ ? {
+ color: color('text-title'),
+ mb: space('tight'),
+ fontSize: '16px',
+ _hover: {
+ color: color('accent'),
+ cursor: 'pointer',
+ },
+ }
+ : {};
+ return (
+
+ {section.title ? (
+
+ {section.title}
+
+
+
+
+ ) : null}
+ {section.pages.map(page => {
+ const path = page.pages
+ ? `${page.path}${page.pages[0].path}`
+ : section?.title
+ ? '/' + slugify(section?.title) + page.path
+ : page.path;
+
+ return (
+
+
+ handleClick(page)}
+ >
+ {convertToTitle(page.path)}
+
+
+
+ );
+ })}
+
+ );
+ });
+ }
};
export const SideNav: React.FC = ({
containerProps,
...rest
}) => {
- const router = useRouter();
- const { pathname } = router;
- const active = routes.find(section =>
- section.routes.find(route => pathname === `/${route.path}`)
- );
- const [visible, setVisible] = React.useState(active);
- const handleSectionClick = (section: any) => {
- if (section?.title === active?.title) {
- setVisible(false);
- } else {
- setVisible(section);
- }
+ // const router = useRouter();
+ // const { pathname } = router;
+ // const active = routes.find(section =>
+ // section.routes.find(route => pathname === `/${route.path}`)
+ // );
+ // const [visible, setVisible] = React.useState(active);
+ // const handleSectionClick = (section: any) => {
+ // if (section?.title === active?.title) {
+ // setVisible(false);
+ // } else {
+ // setVisible(section);
+ // }
+ // };
+
+ const getFlatMap = navigation => {
+ return navigation.sections.flatMap(section =>
+ section.pages.flatMap(page => {
+ if (page.pages) {
+ let sectionPages = [];
+ if (page.sections) {
+ sectionPages = page.sections.flatMap(_section =>
+ _section.pages.flatMap(sectionPage => `${page.path}${sectionPage.path}`)
+ );
+ }
+ const pages = page.pages.flatMap(_page => {
+ if (_page.pages) {
+ return _page.pages.flatMap(p => `${page.path}${_page.path}${p.path}`);
+ } else {
+ return `${page.path}${_page.path}`;
+ }
+ });
+ return [...pages, ...sectionPages];
+ } else {
+ return `${section?.title ? '/' + slugify(section.title) : ''}${page.path}`;
+ }
+ })
+ );
};
+
return (
- {routes.map((section, sectionKey, arr) => (
-
- ))}
+
+ {/*{routes.map((section, sectionKey, arr) => (*/}
+ {/* */}
+ {/*))}*/}
);
};
diff --git a/src/components/typography.tsx b/src/components/typography.tsx
index e054dea5..b8a02523 100644
--- a/src/components/typography.tsx
+++ b/src/components/typography.tsx
@@ -28,7 +28,7 @@ export const SectionTitle: React.FC = props => (
export const Pre = React.forwardRef((props: BoxProps, ref) => (
{
const { isHome } = pageProps;
return (
<>
-
diff --git a/src/pages/_document.tsx b/src/pages/_document.tsx
index f1924777..43b08079 100755
--- a/src/pages/_document.tsx
+++ b/src/pages/_document.tsx
@@ -33,6 +33,41 @@ export default class MyDocument extends Document {
+
-
-
-
- ```
-
- Blockstack apps are identified by their domain names. The endpoint will
- receive a get request with the query parameter `authResponse=XXXX` and
- should redirect the browser to `myblockstackapp:XXXX`.
-
- `myblockstackapp:` is custom protocol handler. The handler should be unique
- to your application. Your app's web-based authentication uses this handler
- to redirect the user back to your iOS app. Later, you'll add a reference
- to this handler in your iOS application.
-
-1. Close and save the `redirect.html` file.
-1. Ensure your Blockstack app compiles successfully.
-
- The `npm` process should detect and compile your change.
-
-## Build the hello-blockstack-ios
-
-Now, you build an iOS application that can work with your Blockstack web
-application on a mobile device.
-
-### Create an XCode Project
-
-This tutorial uses XCode 11.1, you can use another version but be aware that some
-menu items and therefore these procedures may be differœent on your version.
-
-1. Launch the XCode interface.
-2. Choose **Create a new XCode project**.
-3. Select **iOS**.
-4. Select **Single View App**.
-
- ![](images/single-view-app.png)
-
-5. On the **Choose options for your new project** dialog, set the following:
-
-| Product Name | `hello-blockstack-ios` |
-| ----------------- | ---------------------- |
-| Organization Name | USERNAME |
-| User Interface | Storyboard |
-
-![](images/choose-new-options.png)
-
-6. Press **Next**.
-
- The system prompts you for a location to store your code.
-
-7. Save your project in your `hello-blockstack-ios` directory.
-
-8. Close XCode.
-
-### Add and edit a Podfile
-
-To use CocoaPods you need to define the XCode target to link them to.
-So, for exampleM if you are writing an iOS app, it would be the name of your app.
-Create a target section by writing target `$TARGET_NAME do` and an `end` a few
-lines after.
-
-1. Open a terminal window on your workstation.
-2. Change directory into your new project directory where your `hello-blockstack-ios.xcodeproj` file was created.
-
- ```swift
- $ cd hello-blockstack-ios
- ```
-
-3. Create a Podfile.
-
- ```bash
- $ pod init
- ```
-
- The command creates a `Podfile` in the directory.
-
-4. Open the `Podfile` for editing.
-5. Add a line stating the Blockstack dependency.
-
- ```
- # Uncomment the next line to define a global platform for your project
- # platform :ios, '9.0'
-
- target 'hello-blockstack-ios' do
- s
- !
-
- s
- '
-
- o
- s
- g
- d
- end
- ```
-
-6. Save and close the `Podfile`.
-
-### Install Blockstack SDK and open the pod project
-
-1. Close your new XCode project if you haven't already.
-2. In terminal, make sure it is open to the root of your `hello-blockstack-ios` project.
-3. Initialize the project with Cocoapods via the `pod install` command.
-
- ```bash
- $ pod install
- Analyzing dependencies
- Downloading dependencies
- Installing Blockstack (1.0.1)
- Installing CryptoSwift (0.15.0)
- Installing PromisesObjC (1.2.8)
- Installing PromisesSwift (1.2.8)
- Installing STRegex (2.1.0)
- Generating Pods project
- Integrating client project
-
- [!] Please close any current XCode sessions and use `hello-blockstack-ios.xcworkspace` for this project from now on.
- Sending stats
- Pod installation complete! There is 1 dependency from the Podfile and 2 total pods installed.
-
- [!] Automatically assigning platform `ios` with version `11.3` on target `hello-blockstack-ios` because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
- ```
-
- This command creates a number of files
-
-4. Review the files that the `pod` installation created:
-
- ```bash
- $ ls
- Podfile hello-blockstack-ios hello-blockstack-iosTests
- Podfile.lock hello-blockstack-ios.xcodeproj
- Pods hello-blockstack-ios.xcworkspace
- ```
-
-5. Start XCode and choose **Open another project**.
-6. Choose the `.xcworkspace` file created in your project folder.
-
- ![](images/open-xcworkspace.png)
-
- When you open the workspace, the system will begin indexing the project. Then, after indexing, you **may** see a warning indicator at the top in the
- project title. If you see the warning, continue to step 7. Otherwise, go to the next section.
-
-7. Click the signal to reveal the warning.
-8. Click **Next**.
-
- ![](images/indicator.png)
-
-9. Select all the targets and press **Next** and **Continue** when prompted.
-
- Make sure you have no errors; warnings are acceptable to continue.
-
-### Choose a custom protocol handler
-
-You'll need to choose a custom protocol handler that is unique to your app. This
-is so that your app's web-based authentication `redirect.html` endpoint can redirect
-the user back to your iOS app. In this example, you use `myblockstackapp://`.
-
-1. Open the `.xcworkspace` file in XCode if it isn't open already.
-2. Select the top node of your project.
-3. Select the **Info** tab in XCode.
-4. Scroll to **URL Types** and press **+** (plus) sign.
-5. Enter an **Identifier** and **URL Schemes** value.
-
- | **Identifier** | `MyBlockstackApp` |
- | **URL Schemes** | `myblockstackapp` |
-
-6. Set the **Role** to **Editor**.
-
- When you are done the **URL Types** appears as follows:
-
- ![](images/url-type.png)
-
-### Add a splash screen
-
-All iOS applications require a splash page.
-
-1. Select `Assets.xcassets`
-2. Move your cursor into the area below Appicon.
-3. Right click and choose **New Image Set**
-
- ![](images/image-set-0.png)
-
-4. Download the Blockstack icon.
-
- ![](images/blockstack-icon.png)
-
-5. Drag the downloaded file into the **3X** position in your new Images folder.
-
- ![](images/image-set-1.png)
-
-6. Select the `LaunchScreen.storyboard`.
-7. Choose **Open As > Source Code**.
-
- ![](images/open-as.png)
-
-8. Replace the content of the `` element with the following:
-
- ```
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- ```
-
-9. Immediately after scenes but before the close of the `` tag add the following ``.
-
- ```xml
- >
-
- >
- >
- ```
-
-10. Choose **Run > Run app** in the emulator.
-
- The emulator now contains a new splash screen.
-
- ![](images/splash.png)
-
-### Update the Main.storyboard
-
-Rather than have you build up your own UI in the interface builder, this section has you copy and paste a layout into the XML file source code for the **Main.storyboard** file.
-
-1. Select the `Main.storyboard` file.
-2. Choose **Open As > Source Code**
-
- The `hello-blockstack-ios/Base.lproj/Main.storyboard` file
- defines the graphical elements, and their functionality will be defined in
- a respective `.swift` file.
-
-3. Within the `` element, replace the existing `` sub-element with the following:
-
- ```xml
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- `
- ```
-
-4. Select the Main.storyboard and choose **Open as > Interface Builder - Storyboard**.
-
- ![](images/main-storyboard.png)
-
- You should see the following:
-
- ![](images/new-storyboard.png)
-
-### Add the UI variables to the ViewController file.
-
-In this section, you edit the `ViewController.swift` file using the storyboard as a starting point.
-
-1. Select the **Main.storyboard** and choose **Open As > Interface Builder - storyboard**.
-
-2. With the interface builder open, choose **Editor > Assistant** to edit the `ViewController.swift` file.
-
- ![](images/view-editors.png)
-
-3. In the storyboard, select the **Sign into Blockstack** button.
-
-4. Control-drag from the button to the code display in the editor on the right, stopping the drag at the line below controller's `viewDidLoad()` statement.
-
- ![](images/add-action.gif)
-
-5. Set the **Connection** to `Outlet`.
-6. Name the new section `signInButton`.
-
- ![](images/signinbutton.png)
-
-7. Press **Connect**.
-8. Repeat with purple **hello-blockstack-ios** label, name it `nameLabel.
-
-9. Add an import statement for the `Blockstack` and another for the `SafariServices` module.
-
- When you are done, your `ViewController.swift` file contains the following:
-
- ```swift
- import UIKit
- import Blockstack
- import SafariServices
-
- class ViewController: UIViewController {
-
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view.
- }
-
- @IBOutlet weak var nameLabel: UILabel!
- @IBOutlet var signInButton: UIButton!
-
- }
- ```
-
- And XCode has added two outlines to the `Main.storyboard` source.
-
- ```xml
-
-
-
-
- ```
-
- Your connectors will have their own `destination` and `id` values.
-
-### Edit the ViewController.swift file
-
-Now, you are ready to connect your application with your Blockstack Web
-Application. Normally, after building your Web application you would have
-registred it with Blockstack and the app would be available on the Web. This
-example skips this registration step and uses an example application we've
-already created for you:
-
-`https://heuristic-brown-7a88f8.netlify.app/redirect.html`
-
-This web application already has a redirect in place for you. You'll reference
-this application in your mobile add for now. In XCode, do the following;
-
-1. Open the `ViewController.swift` file.
-2. Add an import both for `Blockstack`.
-
- ```
- t
- k
- `
-
- ```
-
-3. Add a private `updateUI()` function.
-
- This function takes care of loading the user data from Blockstack.
-
- ```swift
- private func updateUI() {
- DispatchQueue.main.async {
- if Blockstack.shared.isUserSignedIn() {
- // Read user profile data
- let retrievedUserData = Blockstack.shared.loadUserData()
- print(retrievedUserData?.profile?.name as Any)
- let name = retrievedUserData?.profile?.name ?? "Nameless Person"
- self.nameLabel?.text = "Hello, \(name)"
- self.nameLabel?.isHidden = false
- self.signInButton?.setTitle("Sign Out", for: .normal)
- print("UI update SIGNED_IN")
- } else {
- self.nameLabel?.text = "hello-blockstack-ios"
- self.signInButton?.setTitle("Sign into Blockstack", for: .normal)
- print("UI update SIGNED_OUT")
- }
- }
- }
- ```
-
- The function uses the `Blockstack.shared.isUserSignedIn()` method to determine if
- the user is already logged into Blockstack or not. It then uses the
- `Blockstack.shared.loadUserData()` method to load the user data and update
- the application display with the username.
-
-4. Replace the content of the `viewDidLoad()` function so that it calls this private function.
-
- ```swift
- override func viewDidLoad() {
- super.viewDidLoad()
- // Do any additional setup after loading the view, typically from a nib.
- self.updateUI()
- }
- `
-
- ```
-
-5. Create a `signIn()` function that handles both sign in and out.
-
- The function uses the `Blockstack.shared.signIn()` and
- `Blockstack.shared.signUserOut()` methods to sign the user into the application.
-
- ```swift
- @IBAction func signIn(_ sender: UIButton) {
- if Blockstack.shared.isUserSignedIn() {
- print("Currently signed in so signing out.")
- Blockstack.shared.signUserOut()
- self.updateUI()
- } else {
- print("Currently signed out so signing in.")
- // Address of deployed example web app
- Blockstack.shared.signIn(redirectURI: URL(string: "https://heuristic-brown-7a88f8.netlify.app/redirect.html")!,
- appDomain: URL(string: "https://heuristic-brown-7a88f8.netlify.app")!) { authResult in
- switch authResult {
- case .success(let userData):
- print("Sign in SUCCESS", userData.profile?.name as Any)
- self.updateUI()
- case .cancelled:
- print("Sign in CANCELLED")
- case .failed(let error):
- print("Sign in FAILED, error: ", error ?? "n/a")
- }
- }
- }
-
- }
- ```
-
-## Troubleshooting your build in XCode
-
-XCode builds can retain old data. To ensure your builds are clean, try the following:
-
-1. Reset the simulator by choosing **Hardware -> Erase all content and settings** from the menu.
-2. In XCode, clean the project by choosing **Product > Clean** from the menu or press `Command + Shift + K` on your keyboard.
-3. Clean the build folder by pressing `Command + Option + Shift + K` on your keyboard.
-4. Run the code on the simulator again.
diff --git a/src/pages/mining.md b/src/pages/mining.md
new file mode 100644
index 00000000..e58f08b1
--- /dev/null
+++ b/src/pages/mining.md
@@ -0,0 +1,6 @@
+---
+title: Mine Stacks Token
+description: Run a node, earn STX, and learn how Proof of Transfer (PoX) works
+---
+
+# Mine Stacks Token
diff --git a/src/pages/core/naming/architecture.md b/src/pages/naming-services/architecture.md
similarity index 100%
rename from src/pages/core/naming/architecture.md
rename to src/pages/naming-services/architecture.md
diff --git a/src/pages/core/naming/search.md b/src/pages/naming-services/build-profile-search-index.md
similarity index 100%
rename from src/pages/core/naming/search.md
rename to src/pages/naming-services/build-profile-search-index.md
diff --git a/src/pages/core/naming/pickname.md b/src/pages/naming-services/choose-name.md
similarity index 100%
rename from src/pages/core/naming/pickname.md
rename to src/pages/naming-services/choose-name.md
diff --git a/src/pages/core/naming/comparison.md b/src/pages/naming-services/comparison.md
similarity index 100%
rename from src/pages/core/naming/comparison.md
rename to src/pages/naming-services/comparison.md
diff --git a/src/pages/core/naming/creationhowto.md b/src/pages/naming-services/create-namespace.md
similarity index 100%
rename from src/pages/core/naming/creationhowto.md
rename to src/pages/naming-services/create-namespace.md
diff --git a/src/pages/core/naming/did.md b/src/pages/naming-services/did.md
similarity index 100%
rename from src/pages/core/naming/did.md
rename to src/pages/naming-services/did.md
diff --git a/src/pages/core/naming/forks.md b/src/pages/naming-services/forks.md
similarity index 100%
rename from src/pages/core/naming/forks.md
rename to src/pages/naming-services/forks.md
diff --git a/src/pages/core/naming/manage.md b/src/pages/naming-services/manage-names.md
similarity index 100%
rename from src/pages/core/naming/manage.md
rename to src/pages/naming-services/manage-names.md
diff --git a/src/pages/core/naming/namespaces.md b/src/pages/naming-services/namespaces.md
similarity index 100%
rename from src/pages/core/naming/namespaces.md
rename to src/pages/naming-services/namespaces.md
diff --git a/src/pages/core/naming/introduction.md b/src/pages/naming-services/overview.md
similarity index 100%
rename from src/pages/core/naming/introduction.md
rename to src/pages/naming-services/overview.md
diff --git a/src/pages/core/naming/register.md b/src/pages/naming-services/register-name.md
similarity index 100%
rename from src/pages/core/naming/register.md
rename to src/pages/naming-services/register-name.md
diff --git a/src/pages/core/naming/resolving.md b/src/pages/naming-services/resolve-name.md
similarity index 100%
rename from src/pages/core/naming/resolving.md
rename to src/pages/naming-services/resolve-name.md
diff --git a/src/pages/core/naming/tutorial_subdomains.md b/src/pages/naming-services/subdomains-tutorial.md
similarity index 100%
rename from src/pages/core/naming/tutorial_subdomains.md
rename to src/pages/naming-services/subdomains-tutorial.md
diff --git a/src/pages/core/naming/subdomains.md b/src/pages/naming-services/subdomains.md
similarity index 100%
rename from src/pages/core/naming/subdomains.md
rename to src/pages/naming-services/subdomains.md
diff --git a/src/pages/org/whitepaper-blockchain.md b/src/pages/org/whitepaper-blockchain.md
deleted file mode 100644
index 0cebc95f..00000000
--- a/src/pages/org/whitepaper-blockchain.md
+++ /dev/null
@@ -1,6 +0,0 @@
----
-title: Blockstack Technical Whitepaper
-layout: externalurl
-
-redirect_url: https://blockstack.org/whitepaper.pdf
----
diff --git a/src/pages/core/cmdLineRef.md b/src/pages/references/blockstack-cli-reference.md
similarity index 100%
rename from src/pages/core/cmdLineRef.md
rename to src/pages/references/blockstack-cli-reference.md
diff --git a/src/pages/core/smart/clarityRef.md b/src/pages/references/clarity-reference.md
similarity index 100%
rename from src/pages/core/smart/clarityRef.md
rename to src/pages/references/clarity-reference.md
diff --git a/src/pages/develop/deploy-tips.md b/src/pages/references/deploy-tips.md
similarity index 100%
rename from src/pages/develop/deploy-tips.md
rename to src/pages/references/deploy-tips.md
diff --git a/src/pages/faqs/allFAQS.md b/src/pages/references/faqs.md
similarity index 100%
rename from src/pages/faqs/allFAQS.md
rename to src/pages/references/faqs.md
diff --git a/src/pages/org/terms.md b/src/pages/references/glossary.md
similarity index 100%
rename from src/pages/org/terms.md
rename to src/pages/references/glossary.md
diff --git a/src/pages/common/core_ref.md b/src/pages/references/stacks-blockchain-reference.md
similarity index 100%
rename from src/pages/common/core_ref.md
rename to src/pages/references/stacks-blockchain-reference.md
diff --git a/src/pages/core/smart/rpc-api.md b/src/pages/references/stacks-rpc-api-reference.md
similarity index 100%
rename from src/pages/core/smart/rpc-api.md
rename to src/pages/references/stacks-rpc-api-reference.md
diff --git a/src/pages/core/smart/cli-wallet-quickstart.md b/src/pages/smart-contracts/cli-wallet-quickstart.md
similarity index 100%
rename from src/pages/core/smart/cli-wallet-quickstart.md
rename to src/pages/smart-contracts/cli-wallet-quickstart.md
diff --git a/src/pages/core/smart/tutorial-counter.md b/src/pages/smart-contracts/counter-tutorial.md
similarity index 97%
rename from src/pages/core/smart/tutorial-counter.md
rename to src/pages/smart-contracts/counter-tutorial.md
index 4b77794f..1375e4af 100644
--- a/src/pages/core/smart/tutorial-counter.md
+++ b/src/pages/smart-contracts/counter-tutorial.md
@@ -1,12 +1,11 @@
---
-description: Learn how to write a simple smart contract in the Clarity language
+description: Learn how to write a simple smart contract in the Clarity language.
+experience: intermediate
+duration: 30 minutes
---
# Counter smart contract
-| Experience | | **Intermediate** |
-| Duration | | **30 minutes** |
-
In this tutorial, you learn how to implement a smart contract that stores and manipulates an integer value on the Stacks 2.0 blockchain. By the end of this tutorial, you will ...
- Have experienced test-driven development with Clarity
@@ -173,7 +172,3 @@ With the completion of this tutorial, you:
- Experienced test-driven development with Clarity
- Understood more Clarity language design principles
- Developed a working Clarity counter smart contract
-
-## Where to go next
-
-- Clarity language reference
diff --git a/src/pages/core/smart/tutorial.md b/src/pages/smart-contracts/hello-world-tutorial.md
similarity index 100%
rename from src/pages/core/smart/tutorial.md
rename to src/pages/smart-contracts/hello-world-tutorial.md
diff --git a/src/pages/core/smart/install-source.md b/src/pages/smart-contracts/install-source.md
similarity index 100%
rename from src/pages/core/smart/install-source.md
rename to src/pages/smart-contracts/install-source.md
diff --git a/src/pages/core/smart/overview.md b/src/pages/smart-contracts/overview.md
similarity index 100%
rename from src/pages/core/smart/overview.md
rename to src/pages/smart-contracts/overview.md
diff --git a/src/pages/core/smart/principals.md b/src/pages/smart-contracts/principals.md
similarity index 100%
rename from src/pages/core/smart/principals.md
rename to src/pages/smart-contracts/principals.md
diff --git a/src/pages/core/smart/testnet-node.md b/src/pages/smart-contracts/running-testnet-node.md
similarity index 100%
rename from src/pages/core/smart/testnet-node.md
rename to src/pages/smart-contracts/running-testnet-node.md
diff --git a/src/pages/develop/connect/use-with-clarity.md b/src/pages/smart-contracts/signing-transactions.md
similarity index 100%
rename from src/pages/develop/connect/use-with-clarity.md
rename to src/pages/smart-contracts/signing-transactions.md
diff --git a/src/pages/core/smart/tutorial-test.md b/src/pages/smart-contracts/testing-contracts.md
similarity index 100%
rename from src/pages/core/smart/tutorial-test.md
rename to src/pages/smart-contracts/testing-contracts.md
diff --git a/src/pages/core/atlas/howitworks.md b/src/pages/stacks-blockchain/atlas/how-atlas-works.md
similarity index 100%
rename from src/pages/core/atlas/howitworks.md
rename to src/pages/stacks-blockchain/atlas/how-atlas-works.md
diff --git a/src/pages/core/atlas/overview.md b/src/pages/stacks-blockchain/atlas/overview.md
similarity index 100%
rename from src/pages/core/atlas/overview.md
rename to src/pages/stacks-blockchain/atlas/overview.md
diff --git a/src/pages/core/atlas/howtouse.md b/src/pages/stacks-blockchain/atlas/usage.md
similarity index 100%
rename from src/pages/core/atlas/howtouse.md
rename to src/pages/stacks-blockchain/atlas/usage.md
diff --git a/src/pages/core/best-practices.md b/src/pages/stacks-blockchain/best-practices.md
similarity index 98%
rename from src/pages/core/best-practices.md
rename to src/pages/stacks-blockchain/best-practices.md
index 26fa084e..a31ca7d0 100644
--- a/src/pages/core/best-practices.md
+++ b/src/pages/stacks-blockchain/best-practices.md
@@ -1,3 +1,9 @@
+---
+title: Best practices
+---
+
+# Best practices
+
## Hardware and OS requirements
- A 64-bit CPU running at at least 1 GHz is _highly_ recommended (but not strictly required)
diff --git a/src/pages/core/install-api.md b/src/pages/stacks-blockchain/install-api.md
similarity index 100%
rename from src/pages/core/install-api.md
rename to src/pages/stacks-blockchain/install-api.md
diff --git a/src/pages/core/memcached.md b/src/pages/stacks-blockchain/installing-memcached.md
similarity index 100%
rename from src/pages/core/memcached.md
rename to src/pages/stacks-blockchain/installing-memcached.md
diff --git a/src/pages/stacks-blockchain/overview.md b/src/pages/stacks-blockchain/overview.md
new file mode 100644
index 00000000..3e2a4fbe
--- /dev/null
+++ b/src/pages/stacks-blockchain/overview.md
@@ -0,0 +1,5 @@
+---
+title: Overview
+---
+
+# Overview
diff --git a/src/pages/core/wire-format.md b/src/pages/stacks-blockchain/wire-format.md
similarity index 100%
rename from src/pages/core/wire-format.md
rename to src/pages/stacks-blockchain/wire-format.md
diff --git a/src/pages/org/wallet-install.md b/src/pages/stacks-wallet/install.md
similarity index 100%
rename from src/pages/org/wallet-install.md
rename to src/pages/stacks-wallet/install.md
diff --git a/src/pages/org/wallet-intro.md b/src/pages/stacks-wallet/overview.md
similarity index 100%
rename from src/pages/org/wallet-intro.md
rename to src/pages/stacks-wallet/overview.md
diff --git a/src/pages/org/secureref.md b/src/pages/stacks-wallet/security.md
similarity index 100%
rename from src/pages/org/secureref.md
rename to src/pages/stacks-wallet/security.md
diff --git a/src/pages/org/wallet-troubleshoot.md b/src/pages/stacks-wallet/troubleshooting.md
similarity index 100%
rename from src/pages/org/wallet-troubleshoot.md
rename to src/pages/stacks-wallet/troubleshooting.md
diff --git a/src/pages/org/wallet-use.md b/src/pages/stacks-wallet/usage.md
similarity index 100%
rename from src/pages/org/wallet-use.md
rename to src/pages/stacks-wallet/usage.md
diff --git a/src/pages/storage/amazon-s3-deploy.md b/src/pages/storage-hubs/amazon-s3-deploy.md
similarity index 100%
rename from src/pages/storage/amazon-s3-deploy.md
rename to src/pages/storage-hubs/amazon-s3-deploy.md
diff --git a/src/pages/storage/config-schema.md b/src/pages/storage-hubs/config-schema.md
similarity index 100%
rename from src/pages/storage/config-schema.md
rename to src/pages/storage-hubs/config-schema.md
diff --git a/src/pages/storage/digital-ocean-deploy.md b/src/pages/storage-hubs/digital-ocean-deploy.md
similarity index 100%
rename from src/pages/storage/digital-ocean-deploy.md
rename to src/pages/storage-hubs/digital-ocean-deploy.md
diff --git a/src/pages/storage/gaia-admin.md b/src/pages/storage-hubs/gaia-admin.md
similarity index 99%
rename from src/pages/storage/gaia-admin.md
rename to src/pages/storage-hubs/gaia-admin.md
index 70f04972..b1a57d09 100644
--- a/src/pages/storage/gaia-admin.md
+++ b/src/pages/storage-hubs/gaia-admin.md
@@ -1,4 +1,5 @@
---
+title: Gaia admin
description: 'Storing user data with Blockstack'
---
diff --git a/src/pages/storage/hello-hub-choice.md b/src/pages/storage-hubs/hello-hub-choice.md
similarity index 100%
rename from src/pages/storage/hello-hub-choice.md
rename to src/pages/storage-hubs/hello-hub-choice.md
diff --git a/src/pages/storage/hub-operation.md b/src/pages/storage-hubs/overview.md
similarity index 98%
rename from src/pages/storage/hub-operation.md
rename to src/pages/storage-hubs/overview.md
index 31122c3a..4379f028 100644
--- a/src/pages/storage/hub-operation.md
+++ b/src/pages/storage-hubs/overview.md
@@ -1,6 +1,5 @@
---
-description: 'Storing user data with Blockstack'
-
+title: Overview
redirect_from:
- /storage/hello-hub-choice.html
---
diff --git a/yarn.lock b/yarn.lock
index 8c23d6f3..c94ca4d3 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1452,10 +1452,10 @@
resolved "https://registry.yarnpkg.com/@next/mdx/-/mdx-9.5.0.tgz#c2bd7ed76b16294171db830b7714a0133b89756f"
integrity sha512-ixBgQTSpStGh+KiMal9q+g1m/6UhpBq1dhaXGbACjmUF2wGny+J08BJtoPlx2QtNM87dRJ32PZf4i8tYkWxdTw==
-"@next/react-dev-overlay@9.5.1-canary.0":
- version "9.5.1-canary.0"
- resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-9.5.1-canary.0.tgz#10ab52e81e4c9a17b26390bc6ae9d60971687e37"
- integrity sha512-eCtqI1Hn99pG4cHIBMV52Jw1w1xkxjbvFMkpNTbLu1buYS7X6JiiGkJT4jFirnS/uNhP91yOBhYljU3JTqf1yg==
+"@next/react-dev-overlay@9.5.2-canary.1":
+ version "9.5.2-canary.1"
+ resolved "https://registry.yarnpkg.com/@next/react-dev-overlay/-/react-dev-overlay-9.5.2-canary.1.tgz#1ac1a6987435f90c192cec6bce2f89667533fd37"
+ integrity sha512-HDhNmaPyccTJqYU2tQOsvA+wtqzoeK4Tp7k6FZsuQz8C4sow66iuvWpT7Giq0mgI4cuaIeAzuHkM+dgIcxe/xQ==
dependencies:
"@babel/code-frame" "7.8.3"
ally.js "1.4.1"
@@ -1468,10 +1468,10 @@
stacktrace-parser "0.1.10"
strip-ansi "6.0.0"
-"@next/react-refresh-utils@9.5.1-canary.0":
- version "9.5.1-canary.0"
- resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-9.5.1-canary.0.tgz#03caef0597fb05c41aa9edce5411183bc91b7bac"
- integrity sha512-cjWvza5oRHj3MXTQEW+xqFiIDdVj2TZKXXb6lPeKB2kw07Xerny7b36hKacXFAQyuaHgxc7UNHHrnJEyM3jPDA==
+"@next/react-refresh-utils@9.5.2-canary.1":
+ version "9.5.2-canary.1"
+ resolved "https://registry.yarnpkg.com/@next/react-refresh-utils/-/react-refresh-utils-9.5.2-canary.1.tgz#075c22f7a6deefed556ca71301a491629fce3e59"
+ integrity sha512-0XPNmYWUjDE8GEWp06rMNCCoji+HKYH5cf2jMvxLYi9dJuWZPi1gZ+FmyUJ2BiajJ+2z/wmD+Xkyn+KSJ7qOzg==
"@popperjs/core@^2.4.0":
version "2.4.4"
@@ -4391,6 +4391,14 @@ file-entry-cache@^5.0.1:
dependencies:
flat-cache "^2.0.1"
+file-loader@^2.0.0:
+ version "2.0.0"
+ resolved "https://registry.yarnpkg.com/file-loader/-/file-loader-2.0.0.tgz#39749c82f020b9e85901dcff98e8004e6401cfde"
+ integrity sha512-YCsBfd1ZGCyonOKLxPiKPdu+8ld9HAaMEvJewzz+b2eTF7uL5Zm/HdBF6FjCrpCMRq25Mi0U1gl4pwn2TlH7hQ==
+ dependencies:
+ loader-utils "^1.0.2"
+ schema-utils "^1.0.0"
+
file-uri-to-path@1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz#553a7b8446ff6f684359c445f1e37a05dacc33dd"
@@ -5705,7 +5713,7 @@ loader-utils@2.0.0, loader-utils@^2.0.0:
emojis-list "^3.0.0"
json5 "^2.1.2"
-loader-utils@^1.1.0, loader-utils@^1.2.3:
+loader-utils@^1.0.2, loader-utils@^1.1.0, loader-utils@^1.2.3, loader-utils@^1.4.0:
version "1.4.0"
resolved "https://registry.yarnpkg.com/loader-utils/-/loader-utils-1.4.0.tgz#c579b5e34cb34b1a74edc6c1fb36bfa371d5a613"
integrity sha512-qH0WSMBtn/oHuwjy/NucEgbx5dbxxnxup9s4PVXJUDHZBQY+s0NWA9rJf53RBnQZxfch7euUui7hpoAPvALZdA==
@@ -6031,6 +6039,11 @@ mime@1.6.0:
resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1"
integrity sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==
+mime@^2.0.3:
+ version "2.4.6"
+ resolved "https://registry.yarnpkg.com/mime/-/mime-2.4.6.tgz#e5b407c90db442f2beb5b162373d07b69affa4d1"
+ integrity sha512-RZKhC3EmpBchfTGBVb8fb+RL2cWyw/32lshnsETttkBAyAUXSGHxbEJWWRXc751DrIxG1q04b8QwMbAwkRPpUA==
+
min-document@^2.19.0:
version "2.19.0"
resolved "https://registry.yarnpkg.com/min-document/-/min-document-2.19.0.tgz#7bd282e3f5842ed295bb748cdd9f1ffa2c824685"
@@ -6217,6 +6230,14 @@ neo-async@^2.5.0, neo-async@^2.6.1:
resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.2.tgz#b4aafb93e3aeb2d8174ca53cf163ab7d7308305f"
integrity sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==
+next-fonts@^1.4.0:
+ version "1.4.0"
+ resolved "https://registry.yarnpkg.com/next-fonts/-/next-fonts-1.4.0.tgz#9a5f9c6b484c8503010f58508e9638b55004e2c4"
+ integrity sha512-oJ//gjqQkEYodSBGIzGA55bP8cbCY0hh810pawj6ubpXGknrmbZRkC1KblisiOcL+a6SvHqBSEW7C/v3ahum7w==
+ dependencies:
+ file-loader "^2.0.0"
+ url-loader "^1.1.1"
+
next-google-fonts@^1.1.0:
version "1.2.1"
resolved "https://registry.yarnpkg.com/next-google-fonts/-/next-google-fonts-1.2.1.tgz#0b517cff3f34b8f7836f81eb9427973c8b4ac03e"
@@ -6247,10 +6268,10 @@ next-transpile-modules@^4.0.2:
micromatch "^4.0.2"
slash "^3.0.0"
-next@^9.5.1-canary.0:
- version "9.5.1-canary.0"
- resolved "https://registry.yarnpkg.com/next/-/next-9.5.1-canary.0.tgz#8871f3eb7ecff822f0fe35669a7a6a38827d0d7a"
- integrity sha512-/UgY154sO3DNHjfxN9Y7pg/ZYjaIjPdaRACEKaLVcgOTBW2Co2QTlbp1G/RSPABdIXSQtLrOBqfblaKVOWxcKQ==
+next@^9.5.2-canary.1:
+ version "9.5.2-canary.1"
+ resolved "https://registry.yarnpkg.com/next/-/next-9.5.2-canary.1.tgz#4837796f0407d1527d4d49091617974110f8ed7a"
+ integrity sha512-3EwSl6RjH4QH67h5tHHL4Kir1JiXMkpjo/o7xFK3NVHJYZkRKNsFDJhgLJlVOMYjFn69fPkIAqgpmRVd2NbPkA==
dependencies:
"@ampproject/toolbox-optimizer" "2.5.14"
"@babel/code-frame" "7.8.3"
@@ -6270,8 +6291,8 @@ next@^9.5.1-canary.0:
"@babel/preset-typescript" "7.9.0"
"@babel/runtime" "7.9.6"
"@babel/types" "7.9.6"
- "@next/react-dev-overlay" "9.5.1-canary.0"
- "@next/react-refresh-utils" "9.5.1-canary.0"
+ "@next/react-dev-overlay" "9.5.2-canary.1"
+ "@next/react-refresh-utils" "9.5.2-canary.1"
ast-types "0.13.2"
babel-plugin-syntax-jsx "6.18.0"
babel-plugin-transform-define "2.0.0"
@@ -7560,6 +7581,11 @@ readdirp@~3.4.0:
dependencies:
picomatch "^2.2.1"
+reading-time@^1.2.0:
+ version "1.2.0"
+ resolved "https://registry.yarnpkg.com/reading-time/-/reading-time-1.2.0.tgz#ced71c06715762f805506328dcc1fd45d8249ac4"
+ integrity sha512-5b4XmKK4MEss63y0Lw0vn0Zn6G5kiHP88mUnD8UeEsyORj3sh1ghTH0/u6m1Ax9G2F4wUZrknlp6WlIsCvoXVA==
+
reduce@^1.0.1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/reduce/-/reduce-1.0.2.tgz#0cd680ad3ffe0b060e57a5c68bdfce37168d361b"
@@ -9389,6 +9415,15 @@ urix@^0.1.0:
resolved "https://registry.yarnpkg.com/urix/-/urix-0.1.0.tgz#da937f7a62e21fec1fd18d49b35c2935067a6c72"
integrity sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=
+url-loader@^1.1.1:
+ version "1.1.2"
+ resolved "https://registry.yarnpkg.com/url-loader/-/url-loader-1.1.2.tgz#b971d191b83af693c5e3fea4064be9e1f2d7f8d8"
+ integrity sha512-dXHkKmw8FhPqu8asTc1puBfe3TehOCo2+RmOOev5suNCIYBcT626kxiWg1NBVkwc4rO8BGa7gP70W7VXuqHrjg==
+ dependencies:
+ loader-utils "^1.1.0"
+ mime "^2.0.3"
+ schema-utils "^1.0.0"
+
url@^0.11.0:
version "0.11.0"
resolved "https://registry.yarnpkg.com/url/-/url-0.11.0.tgz#3838e97cfc60521eb73c525a8e55bfdd9e2e28f1"
@@ -9781,7 +9816,15 @@ yallist@^4.0.0:
resolved "https://registry.yarnpkg.com/yallist/-/yallist-4.0.0.tgz#9bb92790d9c0effec63be73519e11a35019a3a72"
integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==
-yaml@^1.7.2:
+yaml-loader@^0.6.0:
+ version "0.6.0"
+ resolved "https://registry.yarnpkg.com/yaml-loader/-/yaml-loader-0.6.0.tgz#fe1c48b9f4803dace55a59a1474e790ba6ab1b48"
+ integrity sha512-1bNiLelumURyj+zvVHOv8Y3dpCri0F2S+DCcmps0pA1zWRLjS+FhZQg4o3aUUDYESh73+pKZNI18bj7stpReow==
+ dependencies:
+ loader-utils "^1.4.0"
+ yaml "^1.8.3"
+
+yaml@^1.7.2, yaml@^1.8.3:
version "1.10.0"
resolved "https://registry.yarnpkg.com/yaml/-/yaml-1.10.0.tgz#3b593add944876077d4d683fee01081bd9fff31e"
integrity sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==