+ );
+};
diff --git a/src/components/ThemeToggle.tsx b/src/components/ThemeToggle.tsx
new file mode 100644
index 0000000..cb9c64a
--- /dev/null
+++ b/src/components/ThemeToggle.tsx
@@ -0,0 +1,40 @@
+import { useEffect, useState } from "react";
+import { useTheme } from "nextra-theme-docs";
+
+import { MoonIcon } from "../icons/Moon";
+import { SunIcon } from "../icons/Sun";
+
+export const ThemeToggle = () => {
+ const { resolvedTheme, setTheme } = useTheme();
+ const [isMounted, setIsMounted] = useState(false);
+
+ const onToggleTheme = () => {
+ if (resolvedTheme == "dark") {
+ setTheme("light");
+ } else {
+ setTheme("dark");
+ }
+ };
+
+ /**
+ * This is not ideal, but it's best solution we have to avoid rendering the button
+ * with the wrong color
+ */
+ useEffect(() => {
+ setIsMounted(true);
+ }, [setIsMounted]);
+
+ if (!isMounted) {
+ return null;
+ }
+
+ return (
+
+ );
+};
diff --git a/src/components/Toc.tsx b/src/components/Toc.tsx
new file mode 100644
index 0000000..41b2efc
--- /dev/null
+++ b/src/components/Toc.tsx
@@ -0,0 +1,56 @@
+import Link from "next/link";
+
+import { PencilIcon } from "@/icons/Pencil";
+import { ThumpUpIcon } from "@/icons/ThumpUp";
+import { URLS } from "@/utils/urls";
+
+interface Heading {
+ id: string;
+ depth: number;
+ value: string;
+}
+
+interface TocProps {
+ headings: Heading[];
+}
+
+export const Toc: React.FC = ({ headings }) => {
+ return (
+
+ {headings.length > 0 && (
+
+
+ On this page
+
+
+
+ {headings.map(({ id, value }) => (
+
+
+ {value}
+
+
+ ))}
+
+
+ )}
+
+
+
+ Give feedback on Discord
+
+
+
+
+ Edit this page on Github
+
+
+
+ );
+};
diff --git a/src/fonts.ts b/src/fonts.ts
new file mode 100644
index 0000000..cdedcd6
--- /dev/null
+++ b/src/fonts.ts
@@ -0,0 +1,13 @@
+import { Inter, Plus_Jakarta_Sans } from "next/font/google";
+
+export const inter = Inter({
+ subsets: ["latin"],
+ variable: "--font-inter",
+ display: "swap",
+});
+
+export const plus_jakarta_sans = Plus_Jakarta_Sans({
+ subsets: ["latin"],
+ variable: "--font-plus-jakarta-sans",
+ display: "swap",
+});
diff --git a/src/globals.css b/src/globals.css
new file mode 100644
index 0000000..17a18e4
--- /dev/null
+++ b/src/globals.css
@@ -0,0 +1,64 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+
+@layer utilities {
+ body {
+ background-color: blue;
+ font-family: var(--font-plus-jakarta-sans), var(--font-inter), -apple-system, BlinkMacSystemFont, "Segoe UI", Helvetica, "Apple Color Emoji", Arial, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+ }
+}
+
+@layer base {
+ h1,
+ h2,
+ h3,
+ h4 {
+ @apply !text-magic-deep-purple dark:!text-magic-white;
+ }
+
+ a:not(.nextra-sidebar-container a):not(nav a):not(.toc-link) {
+ @apply !text-magic-purple dark:!text-magic-soft-pink !underline hover:!text-magic-purple/80 dark:hover:!text-magic-soft-pink/80;
+ }
+
+ nav > a {
+ @apply !text-ink-grey-400 dark:!text-magic-white dark:hover:!text-ink-grey-400 hover:!text-ink-grey-700 !no-underline;
+ }
+
+ nav > a > svg {
+ @apply !fill-magic-black dark:!fill-magic-white;
+ }
+
+ nav {
+ @apply bg-white dark:bg-magic-black;
+ }
+
+ pre {
+ @apply !bg-magic-semi-deep-purple/15;
+ }
+
+ .toc-link {
+ @apply cursor-pointer !text-ink-grey-400 dark:!text-magic-white group-hover:!text-ink-grey-700 dark:group-hover:!text-ink-grey-700;
+ }
+
+ /* We need to override the underline for nav links and sidebar items */
+ nav > a,
+ a:has(div.ink-sidebar-item),
+ .toc-link {
+ @apply no-underline;
+ }
+}
+
+/* Some custom hacks to override some issues with Nextra */
+.nextra-nav-container-blur {
+ display: none !important ;
+}
+
+/* Remove the padding from the sidebar link, so that we can pply our own style */
+a:has(div.ink-sidebar-item) {
+ padding: 0 !important;
+ background-color: transparent !important;
+}
diff --git a/src/icons/InkLogo.tsx b/src/icons/InkLogo.tsx
new file mode 100644
index 0000000..12163d5
--- /dev/null
+++ b/src/icons/InkLogo.tsx
@@ -0,0 +1,17 @@
+interface InkLogoProps {
+ className?: string;
+}
+
+export const InkLogo: React.FC = ({
+ className = "text-magic-purple",
+}) => {
+ return (
+
+ );
+};
diff --git a/src/icons/Moon.tsx b/src/icons/Moon.tsx
new file mode 100644
index 0000000..4c6a7a8
--- /dev/null
+++ b/src/icons/Moon.tsx
@@ -0,0 +1,23 @@
+interface MoonIconProps {
+ className?: string;
+}
+
+export const MoonIcon: React.FC = ({
+ className = "w-6 h-6",
+}) => {
+ return (
+
+ );
+};
diff --git a/src/icons/Pencil.tsx b/src/icons/Pencil.tsx
new file mode 100644
index 0000000..53cd1d4
--- /dev/null
+++ b/src/icons/Pencil.tsx
@@ -0,0 +1,22 @@
+interface PencilProps {
+ className?: string;
+}
+
+export const PencilIcon: React.FC = ({ className = "size-6" }) => {
+ return (
+
+ );
+};
diff --git a/src/icons/Sun.tsx b/src/icons/Sun.tsx
new file mode 100644
index 0000000..a1fd5af
--- /dev/null
+++ b/src/icons/Sun.tsx
@@ -0,0 +1,21 @@
+interface SunIconProps {
+ className?: string;
+}
+
+export const SunIcon: React.FC = ({ className = "w-6 h-6" }) => {
+ return (
+
+ );
+};
diff --git a/src/icons/ThumpUp.tsx b/src/icons/ThumpUp.tsx
new file mode 100644
index 0000000..87cd88b
--- /dev/null
+++ b/src/icons/ThumpUp.tsx
@@ -0,0 +1,24 @@
+interface ThumpUpProps {
+ className?: string;
+}
+
+export const ThumpUpIcon: React.FC = ({
+ className = "size-6",
+}) => {
+ return (
+
+ );
+};
diff --git a/src/images/add_network.png b/src/images/add_network.png
new file mode 100644
index 0000000..a0ebfa6
Binary files /dev/null and b/src/images/add_network.png differ
diff --git a/src/images/blockscout_verif_1.png b/src/images/blockscout_verif_1.png
new file mode 100644
index 0000000..e2c8f93
Binary files /dev/null and b/src/images/blockscout_verif_1.png differ
diff --git a/src/images/blockscout_verif_2.png b/src/images/blockscout_verif_2.png
new file mode 100644
index 0000000..8fcd884
Binary files /dev/null and b/src/images/blockscout_verif_2.png differ
diff --git a/src/images/blockscout_verif_3.png b/src/images/blockscout_verif_3.png
new file mode 100644
index 0000000..4952a92
Binary files /dev/null and b/src/images/blockscout_verif_3.png differ
diff --git a/src/images/gas_fees.png b/src/images/gas_fees.png
new file mode 100644
index 0000000..769494c
Binary files /dev/null and b/src/images/gas_fees.png differ
diff --git a/src/images/ink-banner.png b/src/images/ink-banner.png
new file mode 100644
index 0000000..48359bd
Binary files /dev/null and b/src/images/ink-banner.png differ
diff --git a/src/images/vrf.png b/src/images/vrf.png
new file mode 100644
index 0000000..65ed097
Binary files /dev/null and b/src/images/vrf.png differ
diff --git a/src/pages/404.mdx b/src/pages/404.mdx
new file mode 100644
index 0000000..0a1a13e
--- /dev/null
+++ b/src/pages/404.mdx
@@ -0,0 +1,5 @@
+# Page Not Found
+
+#### Return [home](/).
+
+#### Please help by [submitting an issue](https://github.com/inkonchain/docs/issues/new) for the broken link. 💜
\ No newline at end of file
diff --git a/src/pages/500.mdx b/src/pages/500.mdx
new file mode 100644
index 0000000..5f762e9
--- /dev/null
+++ b/src/pages/500.mdx
@@ -0,0 +1,11 @@
+# Unexpected Error
+
+
+
+## Something isn't quite right. Let's start again on the [homepage](index).
+
+#### Please help by [submitting an issue](https://github.com/inkonchain/docs/issues/new) for the broken link. ❤️
+
+# CHANGE
+
+\n
diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx
new file mode 100644
index 0000000..87822f5
--- /dev/null
+++ b/src/pages/_app.tsx
@@ -0,0 +1,19 @@
+// These styles apply to every route in the application
+import type { AppProps } from "next/app";
+import { ThemeProvider } from "next-themes";
+
+import { inter, plus_jakarta_sans } from "../fonts";
+
+import "../globals.css";
+
+export default function App({ Component, pageProps }: AppProps) {
+ return (
+
+
+
+
+
+
+
+ );
+}
diff --git a/src/pages/_badges.mdx b/src/pages/_badges.mdx
new file mode 100644
index 0000000..ce34347
--- /dev/null
+++ b/src/pages/_badges.mdx
@@ -0,0 +1,70 @@
+# Badges
+
+## Welcome To Ink
+
+> Awarded for bridging Ethereum to Ink.
+
+To bridge Ethereum, you can use the `L1StandardBridge` on the sepolia network crafted for Ink.
+
+There are two ways to do it:
+
+### Gelato Bridge app
+
+The app provides a very simple UI to deposit or withdraw SepoliaETH from and to Sepolia Ink.
+
+Here is the app: [https://testnet-bridge.gelato.network/bridge/ink-sepolia](https://testnet-bridge.gelato.network/bridge/ink-sepolia)
+
+Connect your wallet, select the amount to transfer, and that's it!
+
+### Directly calling the contract
+
+You can call the `bridgeETH` method in the contract here: [https://sepolia.etherscan.io/address/0xC0d337f71aD19a8f17a1b297cDb3a86c5EEf9Eec#writeProxyContract](https://sepolia.etherscan.io/address/0xC0d337f71aD19a8f17a1b297cDb3a86c5EEf9Eec#writeProxyContract)
+
+For instance, if you want to bridge 1 Sepolia ETH into 1 Sepolia "Ink" ETH:
+
+1. Connect your Wallet using the "Connect to Wallet" button
+2. Expand the `bridgeETH` method and enter `bridgeETH: 1`
+3. Enter `_minGasLimit: 1000` (or whatever suits you)
+4. Enter `_extraData: 0x00`
+5. Click "Write", then validate the transaction in MetaMask, then sign it to complete the transaction.
+
+## Wrapped ETH
+
+> Awarded for wrapping Ethereum into WETH.
+
+To create Wrapped ETH tokens (WETH), you can interact with the `deposit` method in the contract here: [https://explorer-sepolia.inkonchain.com/token/0x47d1f931eaff721549cc0ad57da81729baa8b4b2?tab=write\_contract](https://explorer-sepolia.inkonchain.com/token/0x47d1f931eaff721549cc0ad57da81729baa8b4b2?tab=write_contract)
+
+1. Connect your Wallet using the button
+2. Expand the `deposit` method and enter `Send native ETH: 10 000 000 000 000 000`.
+
+* This is equivalent to 0.01 ETH, adjust as needed
+
+3. Click "Write", then validate the transaction in MetaMask, then sign it to complete the transaction.
+
+If you want the token to appear in MetaMask, click on the MetaMask button at the top of the page
+
+## ERC20 Interactions
+
+> Awarded for minting, sending, and receiving ERC20 tokens.
+
+*coming soon*
+
+## NFT Interactions
+
+> Awarded for minting, sending, and receiving NFTs.
+
+*coming soon*
+
+## Faucet User
+
+> Awarded for using the Ink faucet.
+
+Get here: [https://mystery-faucet.demo.inkonchain.com/](https://mystery-faucet.demo.inkonchain.com/)
+
+Enter your address, enter the captcha, that's it!
+
+## Smart Contract Deployer
+
+> Awarded for deploying a smart contract.
+
+*coming soon*
diff --git a/src/pages/_meta.json b/src/pages/_meta.json
new file mode 100644
index 0000000..9496f19
--- /dev/null
+++ b/src/pages/_meta.json
@@ -0,0 +1,130 @@
+{
+ "index": {
+ "title": "Getting Started",
+ "display": "hidden",
+ "theme": {
+ "breadcrumb": false,
+ "footer": true,
+ "sidebar": true,
+ "toc": true,
+ "pagination": false
+ }
+ },
+
+ "404": {
+ "title": "404",
+ "display": "hidden",
+ "theme": {
+ "layout": "full",
+ "breadcrumb": false,
+ "footer": true,
+ "sidebar": true,
+ "toc": false,
+ "pagination": false
+ }
+ },
+
+ "500": {
+ "title": "500",
+ "display": "hidden",
+ "theme": {
+ "layout": "full",
+ "breadcrumb": false,
+ "footer": true,
+ "sidebar": true,
+ "toc": false,
+ "pagination": false
+ }
+ },
+
+
+ "header_status": {
+ "title": "Status Page",
+ "type": "page",
+ "href": "https://status.inkonchain.com/",
+ "newWindow": true
+ },
+ "header_faucet": {
+ "title": "Faucets",
+ "type": "page",
+ "href": "/quick-start/faucets"
+ },
+
+ "+++ General": {
+ "title": "",
+ "type": "separator"
+ },
+ "--- General": {
+ "title": "General",
+ "type": "separator"
+ },
+ "general": {
+ "title": "General",
+ "display": "children"
+ },
+
+
+ "+++ Quick Start": {
+ "title": "",
+ "type": "separator"
+ },
+ "--- Quick Start": {
+ "title": "Quick Start",
+ "type": "separator"
+ },
+ "quick-start": {
+ "title": "Quick Start",
+ "display": "children"
+ },
+
+ "+++ Build on Ink": {
+ "title": "",
+ "type": "separator"
+ },
+ "--- Build on Ink": {
+ "title": "Build on Ink",
+ "type": "separator"
+ },
+ "build": {
+ "title": "Build on Ink",
+ "display": "children"
+ },
+ "status": {
+ "title": "Status Page",
+ "href": "https://status.inkonchain.com/",
+ "newWindow": true
+ },
+
+ "+++ Use Ink": {
+ "title": "",
+ "type": "separator"
+ },
+ "--- Use Ink": {
+ "title": "Use Ink",
+ "type": "separator"
+ },
+ "use-ink": {
+ "title": "Use Ink",
+ "display": "children"
+ },
+
+ "+++ Work with Ink": {
+ "title": "",
+ "type": "separator"
+ },
+ "--- Work with Ink": {
+ "title": "Work with Ink",
+ "type": "separator"
+ },
+ "_badges": {
+ "display": "hidden",
+ "title": "Discord Badges"
+ },
+ "header_discord_invite": {
+ "title": "Community",
+ "href": "/quick-start/developer-community"
+ },
+ "contributing": {
+ "title": "Contribution Guide"
+ }
+}
diff --git a/src/pages/build/_meta.json b/src/pages/build/_meta.json
new file mode 100644
index 0000000..efab7a9
--- /dev/null
+++ b/src/pages/build/_meta.json
@@ -0,0 +1,10 @@
+{
+ "onchain-clients": "Onchain Clients",
+ "oracles": "Oracles",
+ "run-an-ink-node": "Running Ink Nodes",
+ "fees": "Fees",
+ "tutorials": "Tutorials",
+ "tools": "Tools",
+ "useful-info": "Useful Information",
+ "faq": "FAQ"
+}
diff --git a/src/pages/build/faq.mdx b/src/pages/build/faq.mdx
new file mode 100644
index 0000000..90226b4
--- /dev/null
+++ b/src/pages/build/faq.mdx
@@ -0,0 +1,28 @@
+# Frequently Asked Questions
+
+###### What makes Ink different?
+Ink closely integrates with the products and services of Kraken, one of crypto's longest running exchanges with a reputation for security and support. Ink has a dedicated focus on DeFi in the context of Kraken's mission which is to help all humans achieve financial liberty.
+
+###### How do I get started with developing on Ink?
+Check out [Get Connected](/quick-start/get-connected)!
+
+###### Where can I get funds to test Ink?
+Check out our [faucets](/quick-start/faucets).
+
+###### Where can I find important contracts deployed on Ink?
+Please see [this page](/build/useful-info/ink-contracts) for a list of all deployed contracts important to infrastructure and development.
+
+###### Is developing on and using Ink expensive?
+Not at all! As an L2 built on the Optimism stack Ink benefits from extremely low fees. L2 users do pay an extra fee to settle L2 data on L1 (Ethereum mainnet). Please see [Fees](/build/fees) for more information.
+
+###### What can I deploy on Ink?
+Anything you want! Chads will deploy dapps leveraging Ink's specialization DeFi, UX and security. Check out our [tutorials](/build/tutorials/deploying-a-smart-contract/foundry) to get started with deploying contracts.
+
+###### How do I participate in events or hackathons?
+Follow #webinars-workshops and #hackathons on [Discord](https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=faq) to stay updated on upcoming events, development challenges, and hackathons.
+
+###### Where can I find announcements and updates about Ink?
+We regularly post updates via [email](https://inkonchain.com/en-US), [Discord](https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=faq), [Telegram](https://t.me/inkonchain) and [Twitter](https://x.com/inkonchain).
+
+###### Where can I get support?
+Please join the [Ink Discord](https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=faq) and ask in our designated support channels. If you encounter technical issues, feel free to tag a moderator. For specific issues with your account or wallet, consult Ink's official support through our website.
diff --git a/src/pages/build/fees.mdx b/src/pages/build/fees.mdx
new file mode 100644
index 0000000..a04cf72
--- /dev/null
+++ b/src/pages/build/fees.mdx
@@ -0,0 +1,15 @@
+import { Callout } from 'nextra/components'
+
+# Fees on Ink
+
+As a Superchain L2, the fee you pay for each transaction on Ink has two components:
+1. An execution fee for the chain you're on (i.e. Ink L2)
+2. A security fee that helps secure the L2 by publishing L2 transactions to Ethereum (the L1)
+
+The security fee is generally higher than the execution fee because L1 transactions tend to be more expensive. The L1 can be subject to congestion and other situations that lead to high gas fees and longer confirmation times.
+
+This is an example of fees from an Ink transaction via our [Block Explorer](https://explorer-sepolia.inkonchain.com/tx/0xaea0e302ed3f89eef77475c1821df67b3713b80798298469ecc3dbd4d8e14e5f):
+
+
+
+
diff --git a/src/pages/build/onchain-clients.mdx b/src/pages/build/onchain-clients.mdx
new file mode 100644
index 0000000..6acb67c
--- /dev/null
+++ b/src/pages/build/onchain-clients.mdx
@@ -0,0 +1,75 @@
+# Onchain Clients
+
+## Ethers.js - Instructions for Connecting to Ink
+
+Ethers.js documentation: [https://docs.ethers.org/v6/](https://docs.ethers.org/v6/)
+
+To connect to Ink by instantiating a new `ethers.js` `JsonRpcProvider` object with an RPC URL of Ink's testnet, follow the steps below:
+
+1. **Install ethers.js**: Ensure you have `ethers.js` v6 installed in your project. If not, you can install it using npm or yarn.
+
+ ```bash
+ npm install ethers@6
+ ```
+
+ or
+
+ ```bash
+ yarn add ethers@6
+ ```
+
+2. **Instantiate a JsonRpcProvider**: Use the following code snippet to create a new `JsonRpcProvider` object with the RPC URL of Ink's testnet.
+
+ ```javascript
+ import { ethers } from 'ethers';
+
+ const rpcUrl = 'https://rpc-gel-sepolia.inkonchain.com';
+ const provider = new ethers.JsonRpcProvider(rpcUrl, 763373);
+ ```
+
+3. **Using the Provider**: You can now use the `provider` to interact with Ink's testnet. For example, you can fetch the current block number or interact with smart contracts deployed on the testnet.
+
+ ```javascript
+ // previous code
+ const blockNumber = await provider.getBlockNumber();
+ console.log(blockNumber);
+ ```
+
+### Example: Fetching the Current Block Number
+
+The following code snippet demonstrates how to fetch and print the current block number from Ink's testnet:
+
+## Viem - Instructions for Connecting to Ink
+
+Viem documentation: [https://viem.sh/docs/introduction](https://viem.sh/docs/introduction)
+
+1. **Install Viem**: Ensure you have `viem` installed in your project. If not, you can install it using npm or yarn.
+
+ ```bash
+ npm install viem
+ ```
+
+ or
+
+ ```bash
+ yarn add viem
+ ```
+
+2. **Instantiate a Public Client**: Use the following code snippet to create a new `Public Client` object with the Ink Sepolia testnet.
+ ```javascript
+ import { createPublicClient, http } from 'viem'
+ import { inkSepolia } from 'viem/chains'
+
+ const client = createPublicClient({
+ chain: inkSepolia,
+ transport: http(),
+ })
+ ```
+
+2. **Consuming Actions**: You can now interact with Ink's chain! Here we are getting the current block number.
+
+ ```javascript
+ // previous code
+ const blockNumber = await client.getBlockNumber();
+ console.log(blockNumber);
+ ```
diff --git a/src/pages/build/oracles.mdx b/src/pages/build/oracles.mdx
new file mode 100644
index 0000000..dac6814
--- /dev/null
+++ b/src/pages/build/oracles.mdx
@@ -0,0 +1,12 @@
+# Oracles
+**Contract Addresses coming soon**
+
+###### Pyth
+
+Pyth offers 250+ prices feeds for Ink.
+See [this](https://docs.pyth.network/price-feeds/getting-started) guide to learn how to use Pyth feeds.
+
+###### Redstone
+
+Redstone provides 1200+ price feeds for Ink.
+See [this](https://docs.redstone.finance/docs/introduction/) guide to learn how to use Redstone feeds.
\ No newline at end of file
diff --git a/src/pages/build/run-an-ink-node.mdx b/src/pages/build/run-an-ink-node.mdx
new file mode 100644
index 0000000..98b48ca
--- /dev/null
+++ b/src/pages/build/run-an-ink-node.mdx
@@ -0,0 +1,114 @@
+import { Callout } from 'nextra/components'
+
+# Running an Ink Node
+
+Welcome to the [Ink Node] setup tutorial. Follow these steps to deploy and sync your own node efficiently.
+
+## Tutorial Goals
+
+By the end of this guide, you will:
+
+- Successfully deploy an [Ink Node].
+- Ensure your node is in sync with the network.
+
+## Before You Begin
+
+
+Running a node is resource-intensive and time-consuming. Make sure you have a clear purpose for setting up your node.
+
+For those starting out and needing an RPC URL, our free endpoints are available:
+
+- **Mainnet**: `not available yet`
+- **Testnet (Sepolia)**: `https://rpc-gel-sepolia.inkonchain.com/`
+
+**Note:** These RPCs are rate-limited and unsuitable for production applications.
+
+
+### System Requirements
+
+To run a node, your system should meet these minimum specifications:
+
+- 8-Core CPU
+- 8 GB RAM or more
+- SSD drive (NVME recommended) with at least 100GB storage
+
+Running an archive node will demand additional disk space over time. More CPU and RAM will enhance performance with higher RPC traffic.
+
+### Software Prerequisites
+
+Ensure [Docker] is installed and running on your machine. Familiarity with [Docker] is assumed.
+
+### Optional: Custom L1 RPC URL
+
+By default, the [Ink Node] repository leverages public L1 RPC & Beacon APIs. For more stability, we encourage you to use your own L1 RPC and Beacon APIs.
+
+## Step-by-Step Guide
+
+1. **Clone the Repository:** [Ink Node repository](https://github.com/inkonchain/node).
+
+1. **Configuration:**
+ To run the Ink node, it's required to bring your own L1 Sepolia Node. We suggest using [QuickNode](https://www.quicknode.com/) for this purpose.
+ Create a `.env` file in the root of the repository with the following environment variables, replacing `...` with your node's details:
+ ```sh
+ L1_RPC_URL=...
+ L1_BEACON_URL=...
+ ```
+
+2. **Run Setup Script:**
+ ```sh
+ ./setup.sh
+ ```
+
+3. **Start the Node:**
+ ```sh
+ docker compose up # --build to force rebuild the images
+ ```
+
+
+Syncing your node may take several days. Monitor usage and plan accordingly.
+
+
+## Verifying Sync Status
+
+### Using op-node API
+
+Check the sync status using the `optimism_syncStatus` method:
+```sh
+curl -X POST -H "Content-Type: application/json" --data \
+ '{"jsonrpc":"2.0","method":"optimism_syncStatus","params":[],"id":1}' \
+ http://localhost:9545 | jq
+```
+
+### Using op-geth API
+
+To verify if your node is fully synced, use the `eth_blockNumber` method:
+```sh
+curl http://localhost:8545 -X POST \
+ -H "Content-Type: application/json" \
+ --data '{"jsonrpc":"2.0","method":"eth_blockNumber","params": [],"id":1}' | jq -r .result | sed 's/^0x//' | awk '{printf "%d\n", "0x" $0}';
+```
+
+A synced node will display the latest block number as seen on the [block explorer](https://explorer-sepolia.inkonchain.com/).
+
+### Comparing with Ink Public RPC
+
+Compare your local node's finalized block with the public RPC block:
+```sh
+local_block=$(curl -s -X POST http://localhost:8545 -H "Content-Type: application/json" \
+ --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["finalized", false],"id":1}' \
+ | jq -r .result.number | sed 's/^0x//' | awk '{printf "%d\n", "0x" $0}'); \
+public_rpc_block=$(curl -s -X POST https://rpc-gel-sepolia.inkonchain.com/ -H "Content-Type: application/json" \
+ --data '{"jsonrpc":"2.0","method":"eth_getBlockByNumber","params":["finalized", false],"id":1}' \
+ | jq -r .result.number | sed 's/^0x//' | awk '{printf "%d\n", "0x" $0}'); \
+echo -e "Local finalized block: $local_block\nRemote finalized block: $public_rpc_block"
+```
+
+A synced node will have equal local and remote finalized blocks:
+```text
+Local finalized block: 4449608
+Remote finalized block: 4449608
+```
+
+[docker]: https://www.docker.com/
+[ink node]: https://github.com/inkonchain/node
+[repo]: https://github.com/inkonchain/node
diff --git a/src/pages/build/tools.mdx b/src/pages/build/tools.mdx
new file mode 100644
index 0000000..69fea11
--- /dev/null
+++ b/src/pages/build/tools.mdx
@@ -0,0 +1,13 @@
+# Tools
+
+Welcome to the tools section! Here you'll find various tools and resources to help you build on Ink.
+
+## Development Tools
+
+- [RPCs](/build/tools/rpcs)
+- [Block Explorers](/build/tools/block-explorers)
+- [Multisig](/build/tools/multisig)
+- [Account Abstraction](/build/tools/account-abstraction)
+- [SDKs](/build/tools/sdks)
+- [Wallets](/build/tools/wallets)
+- [Developer Tools](/build/tools/developer-tools)
\ No newline at end of file
diff --git a/src/pages/build/tools/_meta.json b/src/pages/build/tools/_meta.json
new file mode 100644
index 0000000..fdc625c
--- /dev/null
+++ b/src/pages/build/tools/_meta.json
@@ -0,0 +1,14 @@
+{
+ "rpcs": "RPCs",
+ "multisig": "Multisig",
+ "account-abstraction": "Account Abstraction",
+ "bridges": "Bridges",
+ "faucets": {
+ "title": "Faucets",
+ "href": "/quick-start/faucets"
+ },
+ "block-explorers": "Block Explorers",
+ "indexers": "Indexers",
+ "vrf": "VRF"
+ }
+
diff --git a/src/pages/build/tools/account-abstraction.mdx b/src/pages/build/tools/account-abstraction.mdx
new file mode 100644
index 0000000..6f5c731
--- /dev/null
+++ b/src/pages/build/tools/account-abstraction.mdx
@@ -0,0 +1,23 @@
+# Account Abstraction Solutions
+**Under Active Development**
+* Safe (Protofire)
+* Zerodev
+
+## Overview
+
+Ethereum and EVM-based blockchains currently operate with two types of accounts: Externally Owned Accounts (EOAs) and smart contract accounts. EOAs are what users use when interacting with their wallets and the blockchain. Smart contract accounts are controlled by code that was deployed onchain.
+
+### Limitations of EOAs
+
+While EOAs are extremely common they come with some drawbacks. For example:
+
+* You have to pay fees whenever you do something onchain, which means you can't do anything if your account (EOA) doesn't have ETH in it.
+* Your EOA is secured by a private key, which can be stolen or lost
+* You can't build smart logic around EOAs like e.g. automatic payments.
+
+### The Solution: Account Abstraction
+
+Account Abstraction (AA) is a solution that:
+
+* Enables you to build logic around EOAs, making them smarter and more secure. For example, with AA you can make sure there are additional recovery options when you lose access to your account.
+* AA also increases the possibilities of what you can do with an account, like building a multi-factor authentication mechanism around it and improving UX by managing fee payments in the background.
diff --git a/src/pages/build/tools/block-explorers.mdx b/src/pages/build/tools/block-explorers.mdx
new file mode 100644
index 0000000..883ecf1
--- /dev/null
+++ b/src/pages/build/tools/block-explorers.mdx
@@ -0,0 +1,17 @@
+## Blockscout
+
+Blockscout is a universal block explorer providing detailed chain information and tools for debugging smart contracts and transactions:
+
+* Comprehensive views for blocks, transactions, addresses, tokens and all onchain data.
+* L1-to-L2 and L2-to-L1 transaction views.
+* Verify and interact with smart contract source code.
+* Advanced charts and statistics
+
+Visit the [Blockscout Docs](https://docs.blockscout.com/) for details.
+
+###### Supported Networks
+
+* Ink Sepolia: [https://explorer-sepolia.inkonchain.com/](https://explorer-sepolia.inkonchain.com/)
+
+###### Verifying Smart Contract Code on Blockscout
+- Please see [this tutorial](/build/tutorials/verify-smart-contract)
diff --git a/src/pages/build/tools/bridges.mdx b/src/pages/build/tools/bridges.mdx
new file mode 100644
index 0000000..1753e27
--- /dev/null
+++ b/src/pages/build/tools/bridges.mdx
@@ -0,0 +1,27 @@
+import { Callout } from 'nextra/components'
+
+# Bridges
+These bridges provide different interfaces to the canonical smart contracts that facilitate migrating ETH from one chain to another.
+
+
+Transaction times vary based on network congestion and gas fees. Please ensure you have enough ETH in your wallet to cover transaction fees.
+
+
+##### How to use
+1. Visit the bridge and connect your wallet.
+2. Choose Sepolia as your source and Ink as the destination.
+3. Input the amount of assets you want to bridge.
+4. Confirm and sign the transaction with your wallet.
+5. Once the bridging is complete the assets will appear in your wallet on Ink.
+
+## Gelato bridge
+Bridge: http://bridge-gel-sepolia.inkonchain.com/
+
+## Kraken Bridge
+Bridge:
+
+## Brid.gg
+Bridge:
+
+## Superbridge
+Bridge:
diff --git a/src/pages/build/tools/indexers.mdx b/src/pages/build/tools/indexers.mdx
new file mode 100644
index 0000000..6d4839c
--- /dev/null
+++ b/src/pages/build/tools/indexers.mdx
@@ -0,0 +1,6 @@
+# Indexers
+
+## Goldsky
+Goldsky is a data indexer providing two core self-service products for onchain builders: subgraph hosting and realtime data replication pipelines. Subgraphs are services that index the blockchain data you specify for quick access and high performance. You can easily create a subgraph to index data from a smart contract of your choosing as shown below.
+
+[Creating a no-code subgraph with Goldsky](https://docs.goldsky.com/subgraphs/introduction)
diff --git a/src/pages/build/tools/multisig.mdx b/src/pages/build/tools/multisig.mdx
new file mode 100644
index 0000000..2a8ac57
--- /dev/null
+++ b/src/pages/build/tools/multisig.mdx
@@ -0,0 +1,12 @@
+# Multisig Solutions
+
+## Safe
+Ink hosts [Safe](https://docs.safe.global/home/what-is-safe)'s technology to bring digital ownership of accounts to everyone by building universal and open contract standards for the custody of digital assets, data, and identity.
+
+Using Safe you can:
+- Manage customizable non-custodial wallets supporting multisignatures for individuals and teams
+- Perform financial management of onchain assets incl. ERC20s, ERC721s and ETH
+- Access your safe using Web, Mobile and Desktop apps.
+- Safe also features access to DeFi, open source code, batch transactions, modular extensions, gasless signatures and more.
+
+Safe is available on Ink through the Optimism Safe portal: https://safe.optimism.io/welcome/accounts?chain=ink-sepolia
\ No newline at end of file
diff --git a/src/pages/build/tools/rpcs.mdx b/src/pages/build/tools/rpcs.mdx
new file mode 100644
index 0000000..6974242
--- /dev/null
+++ b/src/pages/build/tools/rpcs.mdx
@@ -0,0 +1,11 @@
+# Public RPCs
+
+###### Gelato
+ - HTTPS: https://rpc-gel-sepolia.inkonchain.com
+ - WSS: wss://ws-gel-sepolia.inkonchain.com
+ - Users and protocols can also create private RPC endpoints with Gelato if needed.
+
+###### Quicknode
+ - HTTPS: https://rpc-qnd-sepolia.inkonchain.com/
+ - WSS: wss://rpc-qnd-sepolia.inkonchain.com
+###### Tenderly
diff --git a/src/pages/build/tools/vrf.mdx b/src/pages/build/tools/vrf.mdx
new file mode 100644
index 0000000..8899087
--- /dev/null
+++ b/src/pages/build/tools/vrf.mdx
@@ -0,0 +1,14 @@
+# Gelato VRF
+
+* **Mechanism**: Uses [Drand](https://drand.love/), a decentralized source for random numbers.
+* **Benefits**: Provides genuine, verifiable random values for blockchain applications.
+
+## What can VRF be used for?
+
+* **Gaming**: For fair outcomes in online games and games of luck.
+* **Decentralized Finance (DeFi)**: Random selections for e.g. lotteries in DeFi protocols.
+* **NFT Generation**: Random trait generation for unique digital assets.
+* **Protocol Decision Making**: Randomized selections for validators or jurors.
+
+## VRF Providers
+* [Gelato](https://docs.gelato.network/web3-services/vrf)
\ No newline at end of file
diff --git a/src/pages/build/tutorials.mdx b/src/pages/build/tutorials.mdx
new file mode 100644
index 0000000..d762a0b
--- /dev/null
+++ b/src/pages/build/tutorials.mdx
@@ -0,0 +1,11 @@
+# Tutorials
+
+Welcome to the tutorials section! Here you'll find step-by-step guides to help you build on Ink.
+
+## Available Tutorials
+
+- [Deploying a Smart Contract with Foundry](/build/tutorials/deploy-a-smart-contract-using/foundry)
+- [Deploying a Smart Contract with Hardhat](/build/tutorials/deploy-a-smart-contract-using/hardhat)
+- [Deploying a Smart Contract with Remix](/build/tutorials/deploy-a-smart-contract-using/remix)
+- [Verifying a Smart Contract](/build/tutorials/verify-smart-contract)
+- [Shipping a Superchain App](/build/tutorials/superchain-contract)
\ No newline at end of file
diff --git a/src/pages/build/tutorials/_meta.json b/src/pages/build/tutorials/_meta.json
new file mode 100644
index 0000000..50d7119
--- /dev/null
+++ b/src/pages/build/tutorials/_meta.json
@@ -0,0 +1,5 @@
+{
+ "deploying-a-smart-contract": "Deploying a Smart Contract",
+ "verify-smart-contract": "Verifying a Smart Contract",
+ "superchain-contract": "Shipping a Superchain App"
+}
diff --git a/src/pages/build/tutorials/deploying-a-smart-contract/_meta.json b/src/pages/build/tutorials/deploying-a-smart-contract/_meta.json
new file mode 100644
index 0000000..7f2e890
--- /dev/null
+++ b/src/pages/build/tutorials/deploying-a-smart-contract/_meta.json
@@ -0,0 +1,5 @@
+{
+ "foundry": "Foundry",
+ "hardhat": "Hardhat",
+ "remix": "Remix"
+}
diff --git a/src/pages/build/tutorials/deploying-a-smart-contract/foundry.mdx b/src/pages/build/tutorials/deploying-a-smart-contract/foundry.mdx
new file mode 100644
index 0000000..19cc2b4
--- /dev/null
+++ b/src/pages/build/tutorials/deploying-a-smart-contract/foundry.mdx
@@ -0,0 +1,3 @@
+# Foundry
+
+@TODO
diff --git a/src/pages/build/tutorials/deploying-a-smart-contract/hardhat.mdx b/src/pages/build/tutorials/deploying-a-smart-contract/hardhat.mdx
new file mode 100644
index 0000000..5d2eb20
--- /dev/null
+++ b/src/pages/build/tutorials/deploying-a-smart-contract/hardhat.mdx
@@ -0,0 +1,3 @@
+# Hardhat
+
+@TODO
diff --git a/src/pages/build/tutorials/deploying-a-smart-contract/remix.mdx b/src/pages/build/tutorials/deploying-a-smart-contract/remix.mdx
new file mode 100644
index 0000000..02593ae
--- /dev/null
+++ b/src/pages/build/tutorials/deploying-a-smart-contract/remix.mdx
@@ -0,0 +1,3 @@
+# Remix
+
+@TODO
diff --git a/src/pages/build/tutorials/shipping-superchain-app.mdx b/src/pages/build/tutorials/shipping-superchain-app.mdx
new file mode 100644
index 0000000..4d1a51a
--- /dev/null
+++ b/src/pages/build/tutorials/shipping-superchain-app.mdx
@@ -0,0 +1,9 @@
+# Shipping on the Superchain
+
+You can use [Supersim](https://github.com/ethereum-optimism/supersim) to simulate the Superchain and develop apps that can be used across any chain!
+
+Supersim enables builders to:
+
+* Experiment with apps that can be accessed from any chain
+* Create tokens with **SuperchainERC20**, a fungible token standard for tokens that can be used across the Superchain
+* Simulate crosschain messaging
diff --git a/src/pages/build/tutorials/verify-smart-contract.mdx b/src/pages/build/tutorials/verify-smart-contract.mdx
new file mode 100644
index 0000000..0ca2d4b
--- /dev/null
+++ b/src/pages/build/tutorials/verify-smart-contract.mdx
@@ -0,0 +1,124 @@
+import { Callout } from 'nextra/components'
+
+## Verifying your Smart Contract
+
+In order for your deployed smart contract(s) to be human-readable on block explorers like Blockscout they must be verified. Verification is highly recommended to increase trust in your code and dapp.
+
+Smart contracts can be verified through the Blockscout UI or a [host of other methods](https://docs.blockscout.com/devs/verification).
+
+## Verifying a Smart Contract using the Blockscout UI
+
+Verification is available for both Solidity and Vyper contracts. **Currently, there are 7 different types of inputs you can use for verification using the Blockscout UI**.
+
+
+👷🏻♂️ If preferred you can verify directly from your Hardhat or Foundry dev environment.
+
+[Hardhat Verification Plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin)
+
+[Foundry Verification](https://docs.blockscout.com/devs/verification/foundry-verification)
+
+
+### Smart Contract Verification with Blockscout
+1) Go to the Verify contract page (Other -> Verify contract)
+
+
+
+2) Enter in the contract address you received during deployment. The dropdown will show you several available verification options. Select the one you would like to use and continue.
+
+
+
+### Input Types
+Choose the format that applies to your files:
+
+- Solidity ([Flattened source code](/build/tutorials/verify-smart-contract#solidity-flattened-source-code))
+
+- Solidity ([Standard JSON input](/build/tutorials/verify-smart-contract#solidity-standard-json-input))
+
+- Solidity ([Sourcify](/build/tutorials/verify-smart-contract#via-sourcify-sources-and-metadata-json-file))
+
+- Solidity ([Multi-part files](/build/tutorials/verify-smart-contract#solidity-multi-part-files))
+
+- Vyper ([Contract](/build/tutorials/verify-smart-contract#vyper-contract))
+
+- Vyper ([Multi-part files](/build/tutorials/verify-smart-contract#vyper-multi-part-files-and-standard-json-input))
+
+- Vyper ([Standard JSON input](/build/tutorials/verify-smart-contract#vyper-multi-part-files-and-standard-json-input))
+
+#### Solidity (Flattened source code)
+This verification method is recommended only for single-file smart contract without any imports. For verification of contracts containing more that 1 file, it's recommended to use different verification method.
+
+
+
+1. **Contract Address**: The `0x` address supplied on contract creation (added above)
+
+2. **Is Yul contract**: Select if the contract is coded in Yul for efficiency.
+
+3. **Include Nightly Builds**: Select if you want to show nightly builds.
+
+4. **Compiler**: derived from the first line in the contract `pragma solidity X.X.X`. Use the corresponding compiler version rather than the nightly build.
+
+5. **EVM Version**: Select the correct EVM version if known, otherwise use default.
+
+6. **Optimization Enabled**: If you enabled optimization during compilation, select and enter the run value. 200 is the Solidity Compiler default value. Only change if you changed this value while compiling.
+
+7. **Enter the Solidity Contract Code**: Copy-paste the source code of your smart contract as is.
+
+8. **Add Contract Libraries**: Enter the name and 0x address for any required libraries called in the .sol file. You can add multiple contracts with the "+" button.
+
+9. Click the `Verify and Publish` button.
+
+10. If all goes well, you will see a checkmark ✅ next to Code in the code tab, and an additional tab called `Read Contract`. The contract name will now appear in BlockScout with any transactions related to your contract.
+
+#### Solidity (Standard JSON input)
+
+More information on JSON input is available [here](https://docs.soliditylang.org/en/latest/using-the-compiler.html#input-description).
+
+
+1. **Include nightly builds**. You can choose `Yes` or `No` depending on your compiler.
+
+2. **Compiler**. Choose the compiler version used to compile your smart contract. If you selected yes for nightly builds, use the compiler version rather than the build.
+
+3. **Standard Input JSON**. Upload your Standard Input JSON file. File should follows solidity [format](https://docs.soliditylang.org/en/latest/using-the-compiler.html#input-description) and all the sources must be in Literal Content format, not a URL.
+
+Click the `Verify & publish` button and wait for the response.
+
+#### Via Sourcify: Sources and metadata JSON file
+See [Contract Verification via Sourcify](https://docs.blockscout.com/devs/verification/contracts-verification-via-sourcify) for details.
+
+#### Solidity (Multi-part files)
+See the above settings. You will upload all of the .sol or .yul files you used for your contract. This method requires at least 2 files - if you have a single file use the flattened source code method.
+
+#### Vyper Contract
+Contract Name: Name assigned to the contract.
+
+1. **Compiler**: Select the compiler version used in the source code.
+
+2. **EVM Version**: Select the correct EVM version if known, otherwise use default.
+
+3. **Contract Code**: Copy and paste the contract code
+
+4. Click the `Verify and Publish` button.
+
+If all goes well, you will see a checkmark ✅ next to Code in the code tab, and an additional tab called `Read Contract`. The contract name will now appear in BlockScout with any transactions related to your contract.
+
+#### Vyper Multi-part files and standard json input
+See the information above.
+
+### Troubleshooting
+If you receive the dreaded `There was an error compiling your contract` message this means the bytecode doesn't match the supplied sourcecode. Unfortunately, there are many reasons this may be the case. Here are a few things to try:
+
+1) Double check the compiler version is correct.
+
+
+Check all version digits - for example 0.5.1 is different from 0.5.10
+
+
+2) Check that an extra space has not been added to the end of the contract. When pasting in, an extra space may be added. Delete this and attempt to recompile.
+
+3) Copy, paste, and verify your source code in Remix. You may find some exceptions here.
+
+Verification in a dev environment
+The [Hardhat verification plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin) supports BlockScout. You can also choose to use the [Sourcify plugin](https://docs.blockscout.com/devs/verification/hardhat-verification-plugin/sourcify-plugin-for-hardhat) to verify with Sourcify from your hardhat environment. [Foundry supports blockscout verification with Forge](https://book.getfoundry.sh/reference/forge/forge-verify-contract).
+
+###### Source
+[Blockscout](https://docs.blockscout.com/devs/verification/blockscout-ui)
diff --git a/src/pages/build/useful-info.mdx b/src/pages/build/useful-info.mdx
new file mode 100644
index 0000000..99c2d3b
--- /dev/null
+++ b/src/pages/build/useful-info.mdx
@@ -0,0 +1,10 @@
+# Useful Information
+
+Welcome to the useful information section! Here you'll find important references and data for building on Ink
+
+## Available Resources
+
+- [Network Information](/build/useful-info/network-information)
+- [Ink Contracts](/build/useful-info/ink-contracts)
+- [Bridged Token Addresses](/build/useful-info/bridged-token-addresses)
+- [Chain Security](/build/useful-info/security)
\ No newline at end of file
diff --git a/src/pages/build/useful-info/_meta.json b/src/pages/build/useful-info/_meta.json
new file mode 100644
index 0000000..516ebc8
--- /dev/null
+++ b/src/pages/build/useful-info/_meta.json
@@ -0,0 +1,5 @@
+{
+ "network-information": "Network Information",
+ "ink-contracts": "Ink Contracts",
+ "security": "Chain Security"
+}
\ No newline at end of file
diff --git a/src/pages/build/useful-info/ink-contracts.mdx b/src/pages/build/useful-info/ink-contracts.mdx
new file mode 100644
index 0000000..0ee0f7c
--- /dev/null
+++ b/src/pages/build/useful-info/ink-contracts.mdx
@@ -0,0 +1,68 @@
+import { Callout } from 'nextra/components'
+
+# Contract Addresses
+
+## Utility Contracts
+
+| Contract Name | Contract Address |
+| ----------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------- |
+| WETH9 | [0x4200000000000000000000000000000000000006](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000006?tab=contract) |
+| [Multicall3](https://www.multicall3.com/) | [0xcA11bde05977b3631167028862bE2a173976CA11](https://explorer-sepolia.inkonchain.com/address/0xcA11bde05977b3631167028862bE2a173976CA11?tab=contract) |
+| Multicall2 | [0x9E7faA8F5Ca4B3f2f677a6384c3c77B435033A21](https://explorer-sepolia.inkonchain.com/address/0x9E7faA8F5Ca4B3f2f677a6384c3c77B435033A21?tab=contract) |
+| Multicall | [0xdD8E57A4ca66819596F892a80cA3aa3a425c9B60](https://explorer-sepolia.inkonchain.com/address/0xdD8E57A4ca66819596F892a80cA3aa3a425c9B60?tab=contract) |
+| MultiSend | [0x998739BFdAAdde7C933B942a68053933098f9EDa](https://explorer-sepolia.inkonchain.com/address/0x998739BFdAAdde7C933B942a68053933098f9EDa?tab=contract) |
+| MultiSendCallOnly | [0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B](https://explorer-sepolia.inkonchain.com/address/0xA1dabEF33b3B82c7814B6D82A79e50F4AC44102B?tab=contract) |
+| Safe | [0x69f4D1788e39c87893C980c06EdF4b7f686e2938](https://explorer-sepolia.inkonchain.com/address/0x69f4D1788e39c87893C980c06EdF4b7f686e2938?tab=contract) |
+| SafeL2 | [0xfb1bffC9d739B8D520DaF37dF666da4C687191EA](https://explorer-sepolia.inkonchain.com/address/0xfb1bffC9d739B8D520DaF37dF666da4C687191EA?tab=contract) |
+| SafeSingletonFactory | [0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7](https://explorer-sepolia.inkonchain.com/address/0x914d7Fec6aaC8cd542e72Bca78B30650d45643d7?tab=contract) |
+| Create2Deployer | [0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2](https://explorer-sepolia.inkonchain.com/address/0x13b0D85CcB8bf860b6b79AF3029fCA081AE9beF2?tab=contract) |
+| CreateX | [0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed](https://explorer-sepolia.inkonchain.com/address/0xba5Ed099633D3B313e4D5F7bdc1305d3c28ba5Ed?tab=contract) |
+| Arachnid's Deterministic Deployment Proxy | [0x4e59b44847b379578588920cA78FbF26c0B4956C](https://explorer-sepolia.inkonchain.com/address/0x4e59b44847b379578588920cA78FbF26c0B4956C?tab=contract) |
+| Permit2 | [0x000000000022D473030F116dDEE9F6B43aC78BA3](https://explorer-sepolia.inkonchain.com/address/0x000000000022D473030F116dDEE9F6B43aC78BA3?tab=contract) |
+| ERC-4337 v0.6.0 EntryPoint | [0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789](https://explorer-sepolia.inkonchain.com/address/0x5FF137D4b0FDCD49DcA30c7CF57E578a026d2789?tab=contract) |
+| ERC-4337 v0.6.0 SenderCreator | [0x7fc98430eaedbb6070b35b39d798725049088348](https://explorer-sepolia.inkonchain.com/address/0x7fc98430eaedbb6070b35b39d798725049088348?tab=contract) |
+| ERC-4337 v0.7.0 EntryPoint | [0x0000000071727De22E5E9d8BAf0edAc6f37da032](https://explorer-sepolia.inkonchain.com/address/0x0000000071727De22E5E9d8BAf0edAc6f37da032?tab=contract) |
+| ERC-4337 v0.7.0 SenderCreator | [0xEFC2c1444eBCC4Db75e7613d20C6a62fF67A167C](https://explorer-sepolia.inkonchain.com/address/0xEFC2c1444eBCC4Db75e7613d20C6a62fF67A167C?tab=contract) |
+
+For more information on these preinstalls, take a look at the [Optimism Specs](https://specs.optimism.io/protocol/preinstalls.html).
+
+## Ink Testnet Contracts
+
+
+ These addresses are pre-determined by Optimism - see [documentation](https://specs.optimism.io/protocol/predeploys.html).
+
+
+| Contract Name | Contract Address |
+| ----------------------------- | -------------------------------------------------------------------------------------------------------------------------------- |
+| L2CrossDomainMessenger | [0x4200000000000000000000000000000000000007](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000007) |
+| L2StandardBridge | [0x4200000000000000000000000000000000000010](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000010) |
+| OptimismMintableERC20Factory | [0x4200000000000000000000000000000000000012](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000012) |
+| GasPriceOracle | [0x420000000000000000000000000000000000000F](https://explorer-sepolia.inkonchain.com/address/0x420000000000000000000000000000000000000F) |
+| L2ToL1MessagePasser | [0x4200000000000000000000000000000000000016](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000016) |
+| L2ERC721Bridge | [0x4200000000000000000000000000000000000014](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000014) |
+| OptimismMintableERC721Factory | [0x4200000000000000000000000000000000000017](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000017) |
+| ProxyAdmin | [0x4200000000000000000000000000000000000018](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000018) |
+| BaseFeeVault | [0x4200000000000000000000000000000000000019](https://explorer-sepolia.inkonchain.com/address/0x4200000000000000000000000000000000000019) |
+| L1FeeVault | [0x420000000000000000000000000000000000001a](https://explorer-sepolia.inkonchain.com/address/0x420000000000000000000000000000000000001a) |
+
+## L1 Testnet Contracts (Sepolia)
+
+| Contract Name | Contract Address |
+| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------|
+| L1StandardBridge | [0x33f60714bbd74d62b66d79213c348614de51901c](https://sepolia.etherscan.io/address/0x33f60714bbd74d62b66d79213c348614de51901c) |
+| ProxyAdmin | [0xd7db319a49362b2328cf417a934300cccb442c8d](https://sepolia.etherscan.io/address/0xd7db319a49362b2328cf417a934300cccb442c8d) |
+| SystemConfig | [0x05c993e60179f28bf649a2bb5b00b5f4283bd525](https://sepolia.etherscan.io/address/0x05c993e60179f28bf649a2bb5b00b5f4283bd525) |
+| AddressManager | [0x3454f9df5e750f1383e58c1cb001401e7a4f3197](https://sepolia.etherscan.io/address/0x3454f9df5e750f1383e58c1cb001401e7a4f3197) |
+| L1ERC721Bridge | [0xd1c901bbd7796546a7ba2492e0e199911fae68c7](https://sepolia.etherscan.io/address/0xd1c901bbd7796546a7ba2492e0e199911fae68c7) |
+| OptimismPortal | [0x5c1d29c6c9c8b0800692acc95d700bcb4966a1d7](https://sepolia.etherscan.io/address/0x5c1d29c6c9c8b0800692acc95d700bcb4966a1d7) |
+| DisputeGameFactory | [0x860e626c700af381133d9f4af31412a2d1db3d5d](https://sepolia.etherscan.io/address/0x860e626c700af381133d9f4af31412a2d1db3d5d) |
+| AnchorStateRegistry | [0x89126a987717207d4e990ed2e8880fd170dcea1a](https://sepolia.etherscan.io/address/0x89126a987717207d4e990ed2e8880fd170dcea1a) |
+| L1CrossDomainMessenger | [0x9fe1d3523f5342535e6e7770ed09ed85dbc1acc2](https://sepolia.etherscan.io/address/0x9fe1d3523f5342535e6e7770ed09ed85dbc1acc2) |
+| DelayedWETHPermissionedGame | [0x180ac451088b8f87006ab0ca98a01507e42ac456](https://sepolia.etherscan.io/address/0x180ac451088b8f87006ab0ca98a01507e42ac456) |
+| OptimismMintableERC20Factory | [0x686f782a749d1854f6fa3f948450f4c65c6674f0](https://sepolia.etherscan.io/address/0x686f782a749d1854f6fa3f948450f4c65c6674f0) |
+
+
+## Contract Deployments - Instructions for Developers
+
+###### Contract Verification
+Please see [how to verify contracts](/build/tutorials/verify-smart-contract).
diff --git a/src/pages/build/useful-info/network-information.mdx b/src/pages/build/useful-info/network-information.mdx
new file mode 100644
index 0000000..9d9cbaf
--- /dev/null
+++ b/src/pages/build/useful-info/network-information.mdx
@@ -0,0 +1,15 @@
+# Network information
+
+| Field | Information |
+| --------------- | ---------------------------------------------------------------------------------- |
+| Network Name | Ink sepolia |
+| Description | Ink's public testnet |
+| RPC Endpoint | [https://rpc-gel-sepolia.inkonchain.com](https://rpc-gel-sepolia.inkonchain.com) |
+| Chain ID | 763373 |
+| Currency Symbol | ETH |
+| Block Explorer | [https://explorer-sepolia.inkonchain.com](https://explorer-sepolia.inkonchain.com) |
+
+## Public RPC Endpoints
+
+* [https://rpc-gel-sepolia.inkonchain.com](https://rpc-gel-sepolia.inkonchain.com)
+* [https://rpc-qnd-sepolia.inkonchain.com/](https://rpc-qnd-sepolia.inkonchain.com/)
\ No newline at end of file
diff --git a/src/pages/build/useful-info/security.mdx b/src/pages/build/useful-info/security.mdx
new file mode 100644
index 0000000..c525360
--- /dev/null
+++ b/src/pages/build/useful-info/security.mdx
@@ -0,0 +1,23 @@
+## How is Ink Secured?
+
+Ink is built on and secured by the Optimism Stack (the totality of Optimism L2 infrastructure) as well as Kraken's own infrastructure.
+
+Ink's chain is part of a network of chains called the Optimism Superchain. This infrastructure enables chains to share security, communicate with each other (including bridging) and benefit from a range of features from core updates and decentralized governance.
+
+Ink forms an integral part of Kraken's established support and security framework, designed to provide a smooth and safe onchain user experience while benefiting from deep integration with the exchange's products and services.
+
+###### The Superchain
+
+The upgrade of the Optimism Stack to the Superchain introduces a number of crucial improvements to strengthen the Optimism L2 ecosystem, including but not limited to:
+
+* Permissionless proposals for withdrawals of funds: previously only an appointed "proposer" could submit withdrawals - with the Superchain upgrade anyone can now submit proposals on demand.
+* Configurable sequencers: previously chains built on Optimism could not choose a custom sequencer - this is possible with the Superchain upgrade and is a necessary step towards sequencer decentralization.
+* The chain safety and liveness built into the Superchain bridge security model enable users to migrate away from a misbehaving sequencer if needed.
+
+###### Upgrades to the Superchain
+
+A decentralized security council exists to shepherd upgrades to the OP Stack. It can also emergency pause the bridge if needed, which would result in the perpetual pausing of withdrawals and bridge upgrades. The freezing of funds is preferred over the loss of funds should e.g. the private keys of the council be compromised in a worst-case scenario; this is also known as the safety-over-liveness design principle.
+
+A frozen bridge can be mitigated through an L1 soft fork. Anyone may propose such a fork provided they also put up a bond. While this mechanism may imply systemic risk to Ethereum (as L1) it is meant to act as a deterrent and unlikely to ever be used.
+
+For further information please see the [Optimism documentation](https://docs.optimism.io/stack/explainer).
diff --git a/src/pages/contributing.mdx b/src/pages/contributing.mdx
new file mode 100644
index 0000000..1bb9d03
--- /dev/null
+++ b/src/pages/contributing.mdx
@@ -0,0 +1,7 @@
+# Contributing to Ink
+
+## Contributing to the Documentation
+Please visit the [documentation repo](https://github.com/inkonchain), edit to your heart's content and create a Pull Request.
+
+## Missing something important?
+Tag us in one of the [Ink Discord](https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=nav) dev channels.
diff --git a/src/pages/general/_meta.json b/src/pages/general/_meta.json
new file mode 100644
index 0000000..625823d
--- /dev/null
+++ b/src/pages/general/_meta.json
@@ -0,0 +1,3 @@
+{
+ "about": "About Ink"
+}
\ No newline at end of file
diff --git a/src/pages/general/about.mdx b/src/pages/general/about.mdx
new file mode 100644
index 0000000..1aa1911
--- /dev/null
+++ b/src/pages/general/about.mdx
@@ -0,0 +1,33 @@
+# About Ink
+
+An overview of Ink’s high level architecture, including the fact that it is a vanilla instance of the OP stack, that its EVM compatible, open source, and conforms the Superchain’s law of chains.
+
+## What is Ink?
+
+Ink is a cutting-edge Layer 2 (L2) blockchain built on Optimism’s Superchain and released by Kraken. As a natural evolution of Kraken's mission, Ink serves as a seamless bridge to Decentralized Finance (DeFi), empowering users to move onchain with confidence and ease.
+Ink integrates Kraken's unique strengths as a core crypto exchange and embodies its vision of pushing the boundaries of financial freedom.
+In order to accomplish this Ink will:
+
+* Wield a strong focus on DeFi powered by Kraken's existing infrastructure and featuring asset wrappers, tokenization, yield opportunities and more advanced financial products.
+* Leverage Kraken's industry-leading expertise in security and reliability in order to safeguard and uplift users.
+
+## Why use Ink?
+
+Ink is the only blockchain backed by a major Western exchange that is exclusively focused on wealth-building. Our goal is to create a capital-efficient ecosystem where innovation thrives, community is prioritized, and the benefits are enjoyed by all.
+
+Ink features:
+
+* **Abstraction**: Ink integrates Kraken's infrastructure and enables users to enjoy a unified experience from converting fiat to building wealth onchain.
+* **DeFi-first**: Ink aims to scale up DeFi's userbase and evolve the quality and range of DeFi products.
+* **UX**: Ink pursues a user experience that makes wealth building onchain a breeze by leveraging aggregation, automation and abstraction.
+* **Security**: Kraken's 12-year record of security and reliability will be reflected and pushed forward on Ink.
+* **Support**: Builders can expect rich documentation, expert guidance, workshops, tailored onboarding, dedicated community channels and financial support to bring their ideas to life.
+* **Low Fees, Speed and Security**: As a Superchain L2 Ink harnesses Optimism's speed, Ethereum's security and its fees are minuscule compared to mainnet.
+* **Open Source**: Our stack is open source, synergizing development of Ink with Optimism's technology.
+* **EVM compatible**: any code that works on other EVM chains works on Ink and vice versa.
+* **Squid**: we have a cute squid who can also be vewy scawy if it wants to.
+
+## What is Ink built on?
+
+* Ink is a Layer 2 [Optimism](https://docs.optimism.io/stack/getting-started) blockchain that is part of the Superchain. Being part of the Superchain network means Ink can easily interface with other connected chains, promoting both interoperability and specialization and pushing the boundaries of onchain opportunities for all.
+* Ink is built on Optimism because of its highly scalable, trusted and interoperable stack and a strong shared commitment to building a better decentralized future for everyone.
\ No newline at end of file
diff --git a/src/pages/index.mdx b/src/pages/index.mdx
new file mode 100644
index 0000000..a7341d8
--- /dev/null
+++ b/src/pages/index.mdx
@@ -0,0 +1,19 @@
+import { Callout } from 'nextra/components'
+
+# Welcome to the Ink Docs
+
+
+
+Welcome to the documentation for Ink, Kraken's dedicated DeFi chain.
+
+
+New to Ink? [Learn more about Ink](/general/about)
+
+
+###### Get started with developing on Ink!
+- [Get connected to Ink](/quick-start/get-connected)
+- [Get testnet funds](/quick-start-faucets) to send transactions and deploy contracts on Ink
+- Check out the [tutorials](/build/tutorials/deploy-a-smart-contract-using/foundry) (WIP) to start building on Ink
+
+###### Get support from our dedicated teams
+- [Discord](https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=nav)
diff --git a/src/pages/quick-start/_meta.json b/src/pages/quick-start/_meta.json
new file mode 100644
index 0000000..8be208c
--- /dev/null
+++ b/src/pages/quick-start/_meta.json
@@ -0,0 +1,5 @@
+{
+ "get-connected": "Get Connected",
+ "faucets": "Get Testnet Funds",
+ "developer-community": "Get Support"
+}
diff --git a/src/pages/quick-start/developer-community.mdx b/src/pages/quick-start/developer-community.mdx
new file mode 100644
index 0000000..f45d9b0
--- /dev/null
+++ b/src/pages/quick-start/developer-community.mdx
@@ -0,0 +1,6 @@
+# Get Support
+
+Join the Ink community, vibe with fellow developers and get support:
+
+* Access our exclusive Discord for fast support, feedback and memes: [https://discord.com/invite/inkonchain](https://discord.com/invite/inkonchain)
+* Join the Ink Telegram for announcements: [https://t.me/inkonchain](https://t.me/inkonchain)
diff --git a/src/pages/quick-start/faucets.mdx b/src/pages/quick-start/faucets.mdx
new file mode 100644
index 0000000..6665e33
--- /dev/null
+++ b/src/pages/quick-start/faucets.mdx
@@ -0,0 +1,32 @@
+## Faucets
+
+Get sepolia ETH from these faucets so you can fund your wallet to send transactions and deploy contracts on Ink Sepolia. You can also [bridge](/quick-start/faucets#bridging-funds-to-ink-sepolia) testnet funds to Ink.
+
+###### Optimism Superchain Faucet
+The Superchain Faucet provides testnet ETH for Ink and all other OP chains. Sign in to claim 0.05 test ETH on 1 network every 24 hours or verify your onchain identity for more tokens.
+ - https://console.optimism.io/faucet
+###### Quicknode
+Quicknode faucet is an easy to use Multi-Chain Faucet. You can use Quicknode Faucet to claim Ink Sepolia for testnet ETH for free - one drip per network every 12 hours.
+ - https://quicknode.com
+###### Tenderly
+Tenderly Node is a fast and reliable production node that enables access to over 12 blockchain networks via RPC. It allows you to send transactions, deploy smart contracts, query blockchain data or other operations without having to run your own node or manage infrastructure.
+ - https://tenderly.co
+###### Kraken
+Our in house faucet provides a quick and easy way to acquire testnet ETH.
+ - https://mystery-faucet.demo.inkonchain.com/
+
+## Bridging funds to Ink Sepolia
+
+If you need an alternative to the above faucets you can choose to bridge ETH onto Ink Sepolia.
+
+1. Get sepolia ETH by using your wallet with one of the existing faucets on the Ethereum Sepolia network:
+
+* [https://console.optimism.io/faucet](https://console.optimism.io/faucet)
+* [https://www.alchemy.com/faucets/ethereum-sepolia](https://www.alchemy.com/faucets/ethereum-sepolia)
+* [https://faucet.quicknode.com/ethereum/sepolia](https://faucet.quicknode.com/ethereum/sepolia)
+* [https://cloud.google.com/application/web3/faucet/ethereum/sepolia](https://cloud.google.com/application/web3/faucet/ethereum/sepolia)
+
+2. Transfer your ETH to `0x33f60714bbd74d62b66d79213c348614de51901c`.
+- This is the [`L1StandardBridge Contract`](https://eth-sepolia.blockscout.com/address/0x33f60714BbD74d62b66D79213C348614DE51901C).
+- This contract will help you send your ETH from Sepolia to Ink Sepolia.
+- Once the transaction is confirmed you will quickly receive Ink ETH in your wallet.
diff --git a/src/pages/quick-start/get-connected.mdx b/src/pages/quick-start/get-connected.mdx
new file mode 100644
index 0000000..8b1a24f
--- /dev/null
+++ b/src/pages/quick-start/get-connected.mdx
@@ -0,0 +1,57 @@
+import { AddNetworkButton } from "../../components/AddNetworkButton";
+
+# Get Connected
+
+The button below will add the Ink Sepolia network to your wallet:
+
+
+
+
+## Network Information
+
+| Field | Information |
+| -------------------- | -------------------------------------------------------------- |
+| Network Name | Ink Sepolia |
+| Description | Ink's public testnet |
+| RPC Endpoint (HTTPS) | https://rpc-gel-sepolia.inkonchain.com |
+| RPC Endpoint (WSS) | wss://ws-gel-sepolia.inkonchain.com |
+| Chain ID | 763373 |
+| Currency Symbol | ETH |
+| Block Explorer | https://explorer-sepolia.inkonchain.com |
+
+
+## What do I Need to Start Developing on Ink?
+1. An IDE (integrated developer environment) like [Visual Studio Code](https://code.visualstudio.com/), [Cursor](https://www.cursor.com), or [Remix](https://remix.ethereum.org/) to write smart contracts in solidity.
+1. A wallet that holds ETH such as [Kraken Wallet](https://www.kraken.com/wallet), [MetaMask](https://metamask.io/), or [Rainbow](https://rainbow.me/).
+ - We suggest having at least 0.05 ETH for standard deployments on Ink.
+ - You can request Ink Sepolia ETH using our [Faucets](/quick-start/faucets).
+1. We recommend using a development framework like [Foundry](https://book.getfoundry.sh/) or [Hardhat](https://hardhat.org/)
+ - @TODO [Guide to deploy a contract using Foundry]()
+ - @TODO [Guide to deploy a contract using Hardhat]()
+
+## Connecting to Ink
+
+### Connecting Metamask Wallet to Ink Sepolia (Testnet)
+** Click the button above to add the network to your wallet **
+
+To manually add Ink Sepolia as a custom network do following:
+
+ 1. Open your Metamask browser extension.
+ 2. Open the network selection dropdown menu by clicking the dropdown button at the top left of the extension.
+ 3. Click the "+ Add network" button at the bottom.
+ 4. A new window should open. Click "Add a network manually" at the bottom of the list.
+ 5. In the dialog that appears, enter the information listed in [Network Information](#network-information). See screenshot below.
+ 6. Click "Save".
+ 7. When clicking on the network selection dropdown you can now select Ink Sepolia to connect to.
+
+Next: get some [testnet ETH](/quick-start/faucets) from our faucets!
+
+
+
+###### Fund your Wallet
+Get testnet Ether (ETH) from these faucets so you can fund your wallet to send transactions and deploy contracts on Ink Sepolia.
+
+Check out faucets [here](/quick-start/faucets). Alternatively, you can [bridge](/quick-start/faucets#bridging-funds-to-ink-sepolia) testnet funds.
+
+## What Next?
+Check out the [tutorials](/build/tutorials/deploy-a-smart-contract-using/foundry) to learn how to deploy contracts on Ink and more!
diff --git a/src/pages/use-ink/_meta.json b/src/pages/use-ink/_meta.json
new file mode 100644
index 0000000..916ead8
--- /dev/null
+++ b/src/pages/use-ink/_meta.json
@@ -0,0 +1,15 @@
+{
+ "bridges": {
+ "title": "Bridges",
+ "href": "/build/tools/bridges"
+ },
+ "crosschain": "Crosschain",
+ "block-explorers": {
+ "title": "Block Explorers",
+ "href": "/build/tools/block-explorers"
+ },
+ "multisig": {
+ "title": "Multisig",
+ "href": "/build/tools/multisig"
+ }
+}
\ No newline at end of file
diff --git a/src/pages/use-ink/block-explorers.mdx b/src/pages/use-ink/block-explorers.mdx
new file mode 100644
index 0000000..09fd2f6
--- /dev/null
+++ b/src/pages/use-ink/block-explorers.mdx
@@ -0,0 +1 @@
+# Block Explorers for Ink
diff --git a/src/pages/use-ink/crosschain.mdx b/src/pages/use-ink/crosschain.mdx
new file mode 100644
index 0000000..f002fb2
--- /dev/null
+++ b/src/pages/use-ink/crosschain.mdx
@@ -0,0 +1,3 @@
+# Crosschain Infrastructure
+** Coming Soon **
+## Wormhole
diff --git a/src/pages/use-ink/multisig.mdx b/src/pages/use-ink/multisig.mdx
new file mode 100644
index 0000000..aee80b8
--- /dev/null
+++ b/src/pages/use-ink/multisig.mdx
@@ -0,0 +1,3 @@
+# Multisig Solutions
+
+* Safe (Protofire)
diff --git a/src/utils/add-network.ts b/src/utils/add-network.ts
new file mode 100644
index 0000000..8b179a4
--- /dev/null
+++ b/src/utils/add-network.ts
@@ -0,0 +1,22 @@
+const networkParams = {
+ chainId: "0xBA5ED", // 763373 in hexadecimal
+ chainName: "Ink Sepolia",
+ nativeCurrency: {
+ name: "Ether",
+ symbol: "ETH",
+ decimals: 18,
+ },
+ rpcUrls: ["https://rpc-gel-sepolia.inkonchain.com"],
+ blockExplorerUrls: ["https://explorer-sepolia.inkonchain.com/"],
+};
+
+export async function addNetwork() {
+ try {
+ await (window as any).ethereum.request({
+ method: "wallet_addEthereumChain",
+ params: [networkParams],
+ });
+ } catch (error) {
+ console.error("Error adding network:", error);
+ }
+}
diff --git a/src/utils/urls.ts b/src/utils/urls.ts
new file mode 100644
index 0000000..e8d5c08
--- /dev/null
+++ b/src/utils/urls.ts
@@ -0,0 +1,11 @@
+export const URLS = {
+ githubOrgUrl: "https://github.com/inkonchain",
+ statusPageUrl: "https://status.inkonchain.com/",
+ faucetUrl: "https://app.optimism.io/faucet",
+ inkubatorUrl: "https://inkonchain.com/inkubator",
+ discordUrl: "https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=nav",
+ repositoryUrl: "https://github.com/inkonchain/docs",
+ developerWaitlistUrl: "https://inkonchain.com",
+ feedbackUrl: "https://inkonchain.com",
+ editDocsOnGithub: "https://github.com/inkonchain",
+};
diff --git a/tailwind.config.js b/tailwind.config.js
new file mode 100644
index 0000000..817f969
--- /dev/null
+++ b/tailwind.config.js
@@ -0,0 +1,32 @@
+/** @type {import('tailwindcss').Config} */
+module.exports = {
+ darkMode: 'class',
+ content: [
+ './src/**/*.{js,jsx,ts,tsx,md,mdx}',
+ './theme.config.tsx'
+ ],
+ theme: {
+ extend: {
+ colors: {
+ magic: {
+ purple: "#7132F5",
+ 'semi-deep-purple': '#855BFB',
+ 'deep-purple': "#2B1463",
+ black: "#101114",
+ white: "#F0EFFF",
+ 'soft-pink': "#F7D2FE",
+ 'link-purple': '#B794FF',
+ },
+ 'ink-grey': {
+ 100: '#F3F4F6',
+ 400: '#6B7280',
+ 700: '#374151',
+ },
+ },
+ fontFamily: {
+ sans: ['var(--font-plus-jakarta-sans)', 'var(--font-inter)', '-apple-system', 'BlinkMacSystemFont', 'Segoe UI', 'Helvetica', 'Apple Color Emoji', 'Arial', 'sans-serif', 'Segoe UI Emoji', 'Segoe UI Symbol'],
+ },
+ },
+ },
+ plugins: [],
+}
diff --git a/theme.config.tsx b/theme.config.tsx
new file mode 100644
index 0000000..c827869
--- /dev/null
+++ b/theme.config.tsx
@@ -0,0 +1,83 @@
+import { clsx } from "clsx";
+import { useRouter } from "next/router";
+import { DocsThemeConfig } from "nextra-theme-docs";
+
+import { Footer } from "@/components/Footer";
+import { Head } from "@/components/Head";
+import { SidebarTitleComponent } from "@/components/SidebarTitleComponent";
+import { ThemeToggle } from "@/components/ThemeToggle";
+import { Toc } from "@/components/Toc";
+import { InkLogo } from "@/icons/InkLogo";
+import { URLS } from "@/utils/urls";
+
+const config: DocsThemeConfig = {
+ logo: ,
+ darkMode: false,
+ project: {
+ link: URLS.githubOrgUrl,
+ },
+ chat: {
+ link: "https://discord.com/invite/inkonchain?utm_source=docs&utm_medium=nav",
+ },
+ docsRepositoryBase: URLS.repositoryUrl,
+ head: Head,
+ components: {
+ a(props: { href?: string }) {
+ const isExternal = props.href?.startsWith('http');
+ return (
+
+ );
+ },
+ code(props) {
+ return (
+
+ );
+ },
+ },
+ sidebar: {
+ defaultMenuCollapseLevel: 3,
+ autoCollapse: true,
+ titleComponent: SidebarTitleComponent,
+ },
+ navbar: {
+ extraContent: ThemeToggle,
+ },
+ footer: {
+ component: Footer,
+ },
+ toc: {
+ backToTop: true,
+ component: Toc,
+ },
+ banner: {
+ key: "2.4-release",
+ text: (
+
+ 📌 UPDATE: Ink will launch and it will be awesome
+
+ ),
+ },
+ useNextSeoProps() {
+ const { asPath } = useRouter()
+ return {
+ titleTemplate: asPath === '/' ? 'Ink Docs' : '%s | Ink Docs'
+ }
+ },
+};
+
+export default config;
diff --git a/tsconfig.json b/tsconfig.json
new file mode 100644
index 0000000..05b05f7
--- /dev/null
+++ b/tsconfig.json
@@ -0,0 +1,41 @@
+{
+ "compilerOptions": {
+ "lib": [
+ "dom",
+ "dom.iterable",
+ "esnext"
+ ],
+ "allowJs": true,
+ "skipLibCheck": true,
+ "strict": true,
+ "noEmit": true,
+ "esModuleInterop": true,
+ "module": "esnext",
+ "moduleResolution": "bundler",
+ "resolveJsonModule": true,
+ "isolatedModules": true,
+ "jsx": "preserve",
+ "incremental": true,
+ "plugins": [
+ {
+ "name": "next"
+ }
+ ],
+ "paths": {
+ "@/*": [
+ "./src/*"
+ ]
+ },
+ "target": "ES2017"
+ },
+ "include": [
+ "next-env.d.ts",
+ "global-env.d.ts",
+ "**/*.ts",
+ "**/*.tsx",
+ ".next/types/**/*.ts"
+ ],
+ "exclude": [
+ "node_modules"
+ ]
+}