diff --git a/.gitignore b/.gitignore
index 0e1f5f7..b9cc78f 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,3 +30,6 @@ yarn-error.log*
 .env
 # vercel
 .vercel
+
+# lock files
+package-lock.json
diff --git a/README.md b/README.md
index bc4a2ec..6d39e98 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,64 @@
-# Plane Docs
+<h1 style="text-align:center; font-size: 3.5em;">Plane</h1>
 
-This repository contains the documentation for [Plane](https://github.com/makeplane/plane),
-the Open Source alternative for JIRA, Linear and Height.
+<figure>
+  <img src="https://raw.githubusercontent.com/makeplane/docs/master/public/logos/logo.svg" alt="The Plane Logo" style=" display:block; margin-left: auto; margin-right: auto; width: 25%;">
+  <figcaption style="text-align:center; font-size:3em;">Project management tool from the future.</figcaption>
+</figure>
 
-The documentation is hosted at [docs.plane.so](https://docs.plane.so)
+----
+This repository hosts all the documentation for Plane, and it is available at [docs.plane.so](https://docs.plane.so). If you are looking for the Plane code, please see the [Plane repo](https://github.com/makeplane/plane). 
+
+----
+
+## Table of Contents
+
+ 1. [About Plane](#about-plane)
+ 2. [Installation](#installation)
+ 3. [Usage](#usage)
+ 4. [Contributing](#contributing)
+ 5. [Community and Support](#community-and-support)
+
+ ## About Plane
+
+ Plane is a user-friendly, extensible, and open-source project and product management tool. It serves as a versatile platform, allowing users to start their project management process with a simple task-tracking tool and smoothly progress towards implementing diverse project management methodologies, including Agile, Waterfall, and numerous others, to suit their growing needs.
+
+ ## Installation
+
+ Setting up Plane's documentation on your local machine is straightforward. Follow these installation steps:
+
+
+ 1. Install the Markdoc library with:
+
+    ```bash
+    npm install @markdoc/markdoc
+    ```
+ 
+ 2. Install dependencies with:
+
+    ```bash
+    npm install
+    ```
+
+ 3. Start the local development with:
+
+    ```bash
+    npm run dev
+    ```
+
+This command launches a local development server, and you can access the documentation at http://localhost:3000.
+
+## Usage
+
+Refer to our comprehensive documentation at [docs.plane.so](https://docs.plane.so) for detailed instructions on using Plane, including setup, configuration, and practical examples.
+
+## Contributing
+
+We welcome contributions from the community to improve Plane. Here's how you can get involved:
+
+* Review our [Contribution Guidelines](https://github.com/makeplane/plane/blob/master/CONTRIBUTING.md) for detailed instructions on contributing code, reporting issues, and more.
+
+* Please follow our [Code of Conduct](https://github.com/makeplane/plane/blob/master/CODE_OF_CONDUCT.md) to ensure a respectful and inclusive community.
+
+ ## Community and Support
+
+For any issues or support, please contact the plane team via [Discord](https://discord.com/invite/A92xrEGCge).
diff --git a/markdoc/tags.js b/markdoc/tags.js
index 957b1d0..3efe3e4 100644
--- a/markdoc/tags.js
+++ b/markdoc/tags.js
@@ -1,5 +1,10 @@
 import { Callout } from '@/components/Callout'
 import { QuickLink, QuickLinks } from '@/components/QuickLinks'
+import { Col2 } from '@/components/Col2'
+import { List } from '@/components/List'
+import Link from '@/components/link'
+import { BoldText } from '@/components/BoldText'
+import { ExpansionTile } from '@/components/ExpansionTile'
 
 const tags = {
   callout: {
@@ -42,6 +47,28 @@ const tags = {
       href: { type: String },
     },
   },
+  'col-2': {
+    render: Col2,
+  },
+  list: {
+    render: List,
+  },
+  link: {
+    attributes: {
+      href: { type: String, default: '' },
+      target: { type: String, default: '_self' },
+    },
+    render: Link,
+  },
+  'bold-text': {
+    render: BoldText,
+  },
+  expansion: {
+    attributes: {
+      collapsedTitle: { type: String, default: '' },
+    },
+    render: ExpansionTile,
+  },
 }
 
 export default tags
diff --git a/public/Robots.txt b/public/Robots.txt
new file mode 100644
index 0000000..ffb7e59
--- /dev/null
+++ b/public/Robots.txt
@@ -0,0 +1,11 @@
+export default function robots() {
+  return {
+    rules: [
+      {
+        userAgent: "*"
+      }
+    ],
+    sitemap: "https://docs.plane.so/sitemap.xml",
+    host: "https://docs.plane.so"
+  };
+}
\ No newline at end of file
diff --git a/src/components/BoldText.jsx b/src/components/BoldText.jsx
new file mode 100644
index 0000000..583273a
--- /dev/null
+++ b/src/components/BoldText.jsx
@@ -0,0 +1,3 @@
+export function BoldText({ children }) {
+  return <span className="font-bold">{children}</span>
+}
diff --git a/src/components/Col2.jsx b/src/components/Col2.jsx
new file mode 100644
index 0000000..1e500da
--- /dev/null
+++ b/src/components/Col2.jsx
@@ -0,0 +1,12 @@
+import Link from 'next/link'
+
+import { Icon } from '@/components/Icon'
+
+export function Col2({ children }) {
+  return (
+    <div className="flex w-full gap-4 pt-0 align-top">
+      <>{children}</>
+    </div>
+  )
+}
+
diff --git a/src/components/ExpansionTile.jsx b/src/components/ExpansionTile.jsx
new file mode 100644
index 0000000..ba1a2ed
--- /dev/null
+++ b/src/components/ExpansionTile.jsx
@@ -0,0 +1,28 @@
+import { useState } from 'react'
+import { Icon } from './Icon'
+
+export function ExpansionTile({ children, collapsedTitle }) {
+  const [isExpanded, setIsExpanded] = useState(false)
+
+  return (
+    <div className="border border-x-white dark:border-x-slate-900 dark:border-y-slate-800">
+      <div
+        className="group flex cursor-pointer items-center gap-2 py-2"
+        onClick={() => {
+          setIsExpanded(!isExpanded)
+        }}
+      >
+        <div className="flex items-center justify-center">
+          {isExpanded ? (
+            <Icon icon="arrow" className="h-4 w-4 rotate-180" />
+          ) : (
+            <Icon icon="arrow" className="h-4 w-4 rotate-90" />
+          )}
+        </div>
+
+        <div>{collapsedTitle}</div>
+      </div>
+      {isExpanded && children}
+    </div>
+  )
+}
diff --git a/src/components/Icon.jsx b/src/components/Icon.jsx
index 1d7bf62..8c0a403 100644
--- a/src/components/Icon.jsx
+++ b/src/components/Icon.jsx
@@ -7,6 +7,7 @@ import { PluginsIcon } from '@/components/icons/PluginsIcon'
 import { PresetsIcon } from '@/components/icons/PresetsIcon'
 import { ThemingIcon } from '@/components/icons/ThemingIcon'
 import { WarningIcon } from '@/components/icons/WarningIcon'
+import { ArrowIcon } from './icons/ArrowFilled'
 
 const icons = {
   installation: InstallationIcon,
@@ -15,6 +16,7 @@ const icons = {
   theming: ThemingIcon,
   lightbulb: LightbulbIcon,
   warning: WarningIcon,
+  arrow: ArrowIcon
 }
 
 const iconStyles = {
@@ -75,3 +77,5 @@ export function LightMode({ className, ...props }) {
 export function DarkMode({ className, ...props }) {
   return <g className={clsx('hidden dark:inline', className)} {...props} />
 }
+
+
diff --git a/src/components/Layout.jsx b/src/components/Layout.jsx
index 9413b39..d62dba0 100644
--- a/src/components/Layout.jsx
+++ b/src/components/Layout.jsx
@@ -17,7 +17,14 @@ const navigation = [
     links: [
       { title: 'Home', href: '/' },
       { title: 'Quick start', href: '/quick-start' },
-      { title: 'Self Hosting', href: '/self-hosting' },
+      {
+        title: 'Self Hosting',
+        href: '/self-hosting',
+        links: [
+          { title: 'Docker Compose', href: '/docker-compose' },
+          { title: 'Kubernetes', href: '/kubernetes' },
+        ],
+      },
     ],
   },
   {
@@ -56,6 +63,29 @@ const navigation = [
       { title: 'Jira', href: '/importers/jira' },
     ],
   },
+  {
+    title: 'APIs',
+    links: [
+      { title: 'Introduction', href: '/apis/introduction' },
+      { title: 'Project', href: '/apis/project' },
+      { title: 'State', href: '/apis/state' },
+      { title: 'Label', href: '/apis/label' },
+      { title: 'Links', href: '/apis/links' },
+      { title: 'Issue Attachment', href: '/apis/issue-attachment' },
+      { title: 'Issue', href: '/apis/issue' },
+      { title: 'Issue Activity', href: '/apis/issue-activity' },
+      { title: 'Issue Comment', href: '/apis/issue-comment' },
+      { title: 'Module', href: '/apis/module' },
+      { title: 'Module Issue', href: '/apis/module-issue' },
+      { title: 'Cycle', href: '/apis/cycle' },
+      { title: 'Cycle Issue', href: '/apis/cycle-issue' },
+      { title: 'Inbox Issue', href: '/apis/inbox-issue' },
+    ],
+  },
+  {
+    title: 'Webhooks',
+    links: [{ title: 'Introduction', href: '/webhooks/introduction' }],
+  },
 ]
 
 function GitHubIcon(props) {
@@ -72,7 +102,6 @@ function DiscordIcon(props) {
       <g>
         <path
           d="M216.856339,16.5966031 C200.285002,8.84328665 182.566144,3.2084988 164.041564,0 C161.766523,4.11318106 159.108624,9.64549908 157.276099,14.0464379 C137.583995,11.0849896 118.072967,11.0849896 98.7430163,14.0464379 C96.9108417,9.64549908 94.1925838,4.11318106 91.8971895,0 C73.3526068,3.2084988 55.6133949,8.86399117 39.0420583,16.6376612 C5.61752293,67.146514 -3.4433191,116.400813 1.08711069,164.955721 C23.2560196,181.510915 44.7403634,191.567697 65.8621325,198.148576 C71.0772151,190.971126 75.7283628,183.341335 79.7352139,175.300261 C72.104019,172.400575 64.7949724,168.822202 57.8887866,164.667963 C59.7209612,163.310589 61.5131304,161.891452 63.2445898,160.431257 C105.36741,180.133187 151.134928,180.133187 192.754523,160.431257 C194.506336,161.891452 196.298154,163.310589 198.110326,164.667963 C191.183787,168.842556 183.854737,172.420929 176.223542,175.320965 C180.230393,183.341335 184.861538,190.991831 190.096624,198.16893 C211.238746,191.588051 232.743023,181.531619 254.911949,164.955721 C260.227747,108.668201 245.831087,59.8662432 216.856339,16.5966031 Z M85.4738752,135.09489 C72.8290281,135.09489 62.4592217,123.290155 62.4592217,108.914901 C62.4592217,94.5396472 72.607595,82.7145587 85.4738752,82.7145587 C98.3405064,82.7145587 108.709962,94.5189427 108.488529,108.914901 C108.508531,123.290155 98.3405064,135.09489 85.4738752,135.09489 Z M170.525237,135.09489 C157.88039,135.09489 147.510584,123.290155 147.510584,108.914901 C147.510584,94.5396472 157.658606,82.7145587 170.525237,82.7145587 C183.391518,82.7145587 193.761324,94.5189427 193.539891,108.914901 C193.539891,123.290155 183.391518,135.09489 170.525237,135.09489 Z"
-          fill="#5865F2"
           fillRule="nonzero"
         ></path>
       </g>
diff --git a/src/components/List.jsx b/src/components/List.jsx
new file mode 100644
index 0000000..09baae7
--- /dev/null
+++ b/src/components/List.jsx
@@ -0,0 +1,3 @@
+export function List({ children }) {
+  return <span className="w-1/2">{children}</span>
+}
diff --git a/src/components/Navigation.jsx b/src/components/Navigation.jsx
index 69007da..ca6829a 100644
--- a/src/components/Navigation.jsx
+++ b/src/components/Navigation.jsx
@@ -2,9 +2,50 @@ import Link from 'next/link'
 import { useRouter } from 'next/router'
 import clsx from 'clsx'
 
-export function Navigation({ navigation, className }) {
+const Renderlinks = (props) => {
   let router = useRouter()
+  const { href, title } = props
+  return (
+    <Link
+      href={href}
+      className={clsx(
+        'block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-[12.5px] before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full',
+        href === router.pathname
+          ? 'font-semibold text-sky-500 before:bg-sky-500'
+          : 'text-slate-500 before:hidden before:bg-slate-300 hover:text-slate-600 hover:before:block dark:text-slate-400 dark:before:bg-slate-700 dark:hover:text-slate-300'
+      )}
+    >
+      {title}
+    </Link>
+  )
+}
+
+const NestedLinks = (props) => {
+  const { links } = props
+
+  return (
+    <ul
+      role="list"
+      className="space-y-2 border-l-2 border-slate-100 dark:border-slate-800 lg:mt-4 lg:space-y-4 lg:border-slate-200"
+    >
+      {links.map((link) => (
+        <li key={link.href} className="relative">
+          <Renderlinks href={link.href} title={link.title} />
+          {link.links && link.links.length > 0 && (
+            <ul
+              role="list"
+              className="border-l-1 !ml-4 mt-2 space-y-2 border-slate-100 dark:border-slate-800 lg:space-y-4 lg:border-slate-200"
+            >
+              <NestedLinks links={link.links} />
+            </ul>
+          )}
+        </li>
+      ))}
+    </ul>
+  )
+}
 
+export function Navigation({ navigation, className }) {
   return (
     <nav className={clsx('text-base lg:text-sm', className)}>
       <ul role="list" className="space-y-9">
@@ -13,26 +54,7 @@ export function Navigation({ navigation, className }) {
             <h2 className="font-display font-medium text-slate-900 dark:text-white">
               {section.title}
             </h2>
-            <ul
-              role="list"
-              className="mt-2 space-y-2 border-l-2 border-slate-100 dark:border-slate-800 lg:mt-4 lg:space-y-4 lg:border-slate-200"
-            >
-              {section.links.map((link) => (
-                <li key={link.href} className="relative">
-                  <Link
-                    href={link.href}
-                    className={clsx(
-                      'block w-full pl-3.5 before:pointer-events-none before:absolute before:-left-1 before:top-1/2 before:h-1.5 before:w-1.5 before:-translate-y-1/2 before:rounded-full',
-                      link.href === router.pathname
-                        ? 'font-semibold text-sky-500 before:bg-sky-500'
-                        : 'text-slate-500 before:hidden before:bg-slate-300 hover:text-slate-600 hover:before:block dark:text-slate-400 dark:before:bg-slate-700 dark:hover:text-slate-300'
-                    )}
-                  >
-                    {link.title}
-                  </Link>
-                </li>
-              ))}
-            </ul>
+            <NestedLinks links={section.links} />
           </li>
         ))}
       </ul>
diff --git a/src/components/icons/ArrowFilled.jsx b/src/components/icons/ArrowFilled.jsx
new file mode 100644
index 0000000..4f4b894
--- /dev/null
+++ b/src/components/icons/ArrowFilled.jsx
@@ -0,0 +1,62 @@
+import { DarkMode, Gradient, LightMode } from '@/components/Icon'
+
+export function ArrowIcon({ id, color }) {
+  return (
+    <>
+      <defs>
+        <Gradient
+          id={`${id}-gradient`}
+          color={color}
+          gradientTransform="matrix(0 21 -21 0 20 3)"
+        />
+        <Gradient
+          id={`${id}-gradient-dark`}
+          color={color}
+          gradientTransform="matrix(0 22.75 -22.75 0 16 6.25)"
+        />
+      </defs>
+      <LightMode>
+        <svg
+          width="100%"
+          height="100%"
+          viewBox="0 0 48 48"
+          fill="none"
+          xmlns="http://www.w3.org/2000/svg"
+        >
+          <g clip-path="url(#clip0_1303_45892)">
+            <path
+              d="M20.5359 6C22.0755 3.33333 25.9245 3.33333 27.4641 6L41.3205 30C42.8601 32.6667 40.9356 36 37.8564 36H10.1436C7.06439 36 5.13989 32.6667 6.67949 30L20.5359 6Z"
+              fill="#1E1E1E"
+            />
+          </g>
+          <defs>
+            <clipPath id="clip0_1303_45892">
+              <rect width="100%" height="100%" fill="white" />
+            </clipPath>
+          </defs>
+        </svg>
+      </LightMode>
+      <DarkMode fill={`url(#${id}-gradient-dark)`}>
+        <svg
+          width="100%"
+          height="100%"
+          viewBox="0 0 48 48"
+          fill="none"
+          xmlns="http://www.w3.org/2000/svg"
+        >
+          <g clip-path="url(#clip0_1303_45892)">
+            <path
+              d="M20.5359 6C22.0755 3.33333 25.9245 3.33333 27.4641 6L41.3205 30C42.8601 32.6667 40.9356 36 37.8564 36H10.1436C7.06439 36 5.13989 32.6667 6.67949 30L20.5359 6Z"
+              fill="#94A3B8"
+            />
+          </g>
+          <defs>
+            <clipPath id="clip0_1303_45892">
+              <rect width="100%" height="100%" fill="white" />
+            </clipPath>
+          </defs>
+        </svg>
+      </DarkMode>
+    </>
+  )
+}
diff --git a/src/components/link.jsx b/src/components/link.jsx
new file mode 100644
index 0000000..56f9b93
--- /dev/null
+++ b/src/components/link.jsx
@@ -0,0 +1,10 @@
+function Link({ children, href = '', target = '_self' }) {
+  console.log(href, target)
+  return (
+    <a href={href} target={target}>
+      {children}
+    </a>
+  )
+}
+
+export default Link
diff --git a/src/pages/_app.jsx b/src/pages/_app.jsx
index 1033b0e..61ee606 100644
--- a/src/pages/_app.jsx
+++ b/src/pages/_app.jsx
@@ -65,6 +65,13 @@ export default function App({ Component, pageProps }) {
     <>
       <Head>
         <title>{pageTitle}</title>
+
+        {process.env.NEXT_PUBLIC_NOINDEX === '1' && (
+          <>
+            <meta name="robots" content="noindex" />
+            <meta name="googlebot" content="noindex" />
+          </>
+        )}
         {description && <meta name="description" content={description} />}
       </Head>
       <Layout title={title} tableOfContents={tableOfContents}>
diff --git a/src/pages/apis/cycle-issue.md b/src/pages/apis/cycle-issue.md
new file mode 100644
index 0000000..0276a3f
--- /dev/null
+++ b/src/pages/apis/cycle-issue.md
@@ -0,0 +1,78 @@
+## Cycle Issue
+
+{% col-2 %}
+{% list %}
+It contains all the list of issues which are inside in a cycle.
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/cycle-issues/
+GET    /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/cycle-issues/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/cycle-issues/:issue_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Cycle Issue Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `sub_issues_count`
+
+It tells the count of sub issues of the issue
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or updated the module
+
+- `Project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `Workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `cycle` uuid
+
+Cycle id of which the issue belongs to
+
+- `issue` uuid
+
+Issue id of the issue
+{% /list %}
+
+{% list %}
+
+```
+[
+  {
+		"id": "81686eba-bd63-4fd1-b628-b08ecdb1db06",
+		"sub_issues_count": 0,
+		"created_at": "2023-11-20T05:02:41.238578Z",
+		"updated_at": "2023-11-20T05:02:41.238601Z",
+		"created_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+		"updated_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+		"project": "6436c4ae-fba7-45dc-ad4a-5440e17cb1b2",
+		"workspace": "c467e125-59e3-44ec-b5ee-f9c1e138c611",
+		"cycle": "866f3015-4811-4e8a-9577-e298a56488c5",
+		"issue": "2f9f16f7-604c-43d3-adb1-5466ade808aa"
+	}
+]
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/cycle.md b/src/pages/apis/cycle.md
new file mode 100644
index 0000000..6d023ff
--- /dev/null
+++ b/src/pages/apis/cycle.md
@@ -0,0 +1,98 @@
+## Cycle
+
+{% col-2 %}
+{% list %}
+Cycles is a custom time period in which a team works to complete items on their backlog. At the end of the sprint, the team will usually have finished building and implementing a new version of their project or product.
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/cycles/
+GET    /api/v1/workspaces/:slug/projects/:project_id/cycles/
+GET    /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/
+POST   /api/v1/workspaces/:slug/projects/:project_id/cycles/:cycle_id/transfer-issues/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Cycle Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `name` string (required)
+
+Name of the cycle
+
+- `description` string
+
+Description of the cycle
+
+- `start_date` date
+
+Start date of the cycle
+
+- `end_date` date
+
+End date of the cycle
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `view_props`
+
+It store the filters and the display properties selected by the user to visualize the issues in the module
+
+- `sort_order`
+
+It gives the position of the module at which it should be displayed
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or the updated the
+
+- `Project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `Workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `owned_by` uuid
+
+{% /list %}
+
+{% list %}
+
+```
+{
+	"id": "50ebc791-65e4-4b4d-a164-3b4e529e55a5",
+	"created_at": "2023-11-19T12:18:14.900078Z",
+	"updated_at": "2023-11-19T12:18:14.900088Z",
+	"name": "cycle testing",
+	"description": "",
+	"start_date": null,
+	"end_date": null,
+	"view_props": {},
+	"sort_order": 35535.0,
+	"created_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+	"updated_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+	"project": "6436c4ae-fba7-45dc-ad4a-5440e17cb1b2",
+	"workspace": "c467e125-59e3-44ec-b5ee-f9c1e138c611",
+	"owned_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/inbox-issue.md b/src/pages/apis/inbox-issue.md
new file mode 100644
index 0000000..63aa2be
--- /dev/null
+++ b/src/pages/apis/inbox-issue.md
@@ -0,0 +1,98 @@
+## Inbox Issue
+
+{% col-2 %}
+{% list %}
+To toggle the inbox on the user needs to hit a PATCH request in the project/:project_id endpoint with the body as inbox_view to true
+{% /list %}
+
+{% list %}
+
+```
+GET    /api/v1/workspaces/:slug/projects/:project_id/inbox-issues/
+POST   /api/v1/workspaces/:slug/projects/:project_id/inbox-issues/
+GET    /api/v1/workspaces/:slug/projects/:project_id/inbox-issues/:issue_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/inbox-issues/:issue_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/inbox-issues/:issue_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Inbox Issue Object
+
+{% col-2 %}
+{% list %}
+**Attribute**
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `status`
+
+the status of the issue can be in above mentioned status
+
+-   - -2 - Pending
+    - -1 - Rejected
+    - 0 - Snoozed
+    - 1 - Accepted
+    - 2 - Duplicate
+
+- `snoozed_till`
+
+The time untill the issue is snoozed.
+
+- `source`
+
+The source describes the type inbox issue from
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or updated the module
+
+- `Project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `Workspace` uuid
+
+It contains workspace uuid which is automatically saved.
+
+- `inbox`
+
+inbox id of the issue
+
+- `issue`
+
+issue id of the issue
+
+- `duplicate_to`
+
+Id of the issue of which the current issue is duplicate of.
+{% /list %}
+
+{% list %}
+
+```
+{
+    "id": "0de4d6d1-fdc7-4849-8080-dc379ab210e3",
+    "pending_issue_count": 0,
+    "created_at": "2023-11-21T07:32:26.072634Z",
+    "updated_at": "2023-11-21T07:32:26.072648Z",
+    "name": "a dummy project hvh Inbox",
+    "description": "",
+    "is_default": true,
+    "view_props": {},
+    "created_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+    "updated_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+    "project": "6436c4ae-fba7-45dc-ad4a-5440e17cb1b2",
+    "workspace": "c467e125-59e3-44ec-b5ee-f9c1e138c611"
+}
+```
+
+{% /list %}
+{% /col-2 %}
diff --git a/src/pages/apis/introduction.md b/src/pages/apis/introduction.md
new file mode 100644
index 0000000..670c2f2
--- /dev/null
+++ b/src/pages/apis/introduction.md
@@ -0,0 +1,210 @@
+---
+title: Plane API Documentation
+pageTitle: About APIs | Plane
+description: Cache every single thing your app could ever do ahead of time, so your code never even has to run at all.
+---
+
+The Plane API is organized around REST. Our API has predictable resource-oriented URLs, accepts application/json request bodies, returns JSON responses, and uses standard HTTP response codes, authentication, and verbs.
+
+## Authentication
+
+### Overview
+
+This API uses an API key for authentication. The API key should be included in the header of each request to verify the client's identity and permissions. The key should be passed as the value of the `X-API-Key` header.
+
+- **Registration**: Users must register for an account to obtain an API key.
+- **Key Generation**: Upon successful registration, users will receive an API key. This key uniquely identifies the user and should be kept secure.
+
+### Using the API Key
+
+To authenticate an API request, include your API key in the request header:
+
+```
+X-API-Key: <Your-API-Key>
+```
+
+It is important to keep your API key confidential to prevent unauthorized access to your account.
+
+### Example of an Authenticated API Request
+
+Here's an example of making a GET request to the API with the API key:
+
+### Request
+
+```
+GET /api/v1/workspaces/:slug/projects/:project_id/issues/
+Headers:
+  X-API-Key: plane_api_<token>
+```
+
+### Response
+
+```
+{
+  [ ... ],
+}
+```
+
+### Error Handling
+
+- **Missing API Key**: If the **`X-API-Key`** header is not included, the API will return an error indicating that authentication is required.
+- **Invalid API Key**: If the provided API key is invalid or expired, the API will return an error message indicating an authentication failure.
+
+### Security Recommendations
+
+- **Keep the API Key Secret**: Treat your API key like a password. Do not share it or expose it in client-side code.
+- **Regenerate Key If Compromised**: If you suspect that your API key has been compromised, generate a new one immediately and update your applications.
+
+---
+
+## Pagination Documentation
+
+### Overview
+
+This API implements a cursor-based pagination system, allowing clients to efficiently navigate through large datasets. The system uses a cursor parameter to manage the position and direction of pagination.
+
+### Cursor Format
+
+The cursor is a string formatted as **`value:offset:is_prev`**, where:
+
+- **`value`** represents the page size (number of items per page).
+- **`offset`** is the current page number (starting from 0).
+- **`is_prev`** indicates whether the cursor is moving to the previous page (**`1`**) or to the next page (**`0`**).
+
+### Request Parameters
+
+- **`per_page` (optional)**: Number of items to display per page. Defaults to 100. The maximum allowed value specified by the server is 100.
+- **`cursor` (optional)**: Cursor string to navigate to a specific page. If not provided, pagination starts from the first page.
+
+### Responses
+
+The paginated response includes the following fields:
+
+- **`next_cursor`**: Cursor string for the next page.
+- **`prev_cursor`**: Cursor string for the previous page.
+- **`next_page_results`**: Boolean indicating if there are more results after the current page.
+- **`prev_page_results`**: Boolean indicating if there are results before the current page.
+- **`count`**: Total number of items on the current page.
+- **`total_pages`**: Estimated total number of pages.
+- **`extra_stats`**: Additional statistics, if any.
+- **`results`**: Array of items for the current page.
+
+### Request: Fetching the First Page
+
+```
+GET /api/v1/workspaces/:slug/projects/:project_id/issues/?per_page=20
+```
+
+### Response: First Page
+
+```
+{
+  "next_cursor": "20:1:0",
+  "prev_cursor": "",
+  "next_page_results": true,
+  "prev_page_results": false,
+  "count": 20,
+  "total_pages": 50,
+  "extra_stats": {},
+  "results": [ ... items ... ]
+}
+```
+
+### Request: Fetching the Next Page
+
+```
+GET /api/v1/workspaces/:slug/projects/:project_id/issues?per_page=20&cursor=20:1:0
+```
+
+### Response: Second Page
+
+```
+{
+  "next_cursor": "20:2:0",
+  "prev_cursor": "20:0:1",
+  "next_page_results": true,
+  "prev_page_results": true,
+  "count": 20,
+  "total_pages": 50,
+  "extra_stats": {},
+  "results": [ ... items ... ]
+}
+```
+
+### Error Handling
+
+- **Invalid Cursor Format**: If the provided cursor string is not in the correct format, the API will respond with an error message indicating an invalid cursor format.
+- **Pagination Limits**: Requests exceeding the maximum **`per_page`** limit will receive an error response detailing the maximum allowed value.
+
+---
+
+## Rate Limit
+
+### Overview
+
+To ensure fair usage and maintain the quality of service for all users, our API implements rate limiting. Rate limiting restricts the number of requests a client can make within a certain time frame.
+
+### Rate Limit Details
+
+- **Limit**: Each client is limited to 60 requests per minute.
+- **Reset Interval**: The rate limit counter resets every minute.
+- **Scope of Limitation**: The rate limit applies to all requests made with a given API key.
+
+## Identifying Your Rate Limit Status
+
+Rate limit status is communicated in the response headers of each API request:
+
+- **`X-RateLimit-Remaining`**: The number of requests remaining in the current rate limit window.
+- **`X-RateLimit-Reset`**: The time at which the current rate limit window resets (in UTC epoch seconds).
+
+### Example Response Headers
+
+```
+X-RateLimit-Remaining: 45
+X-RateLimit-Reset: 1700327957
+```
+
+## Fields and Expand Query Parameters
+
+Our API provides flexible data retrieval capabilities through two powerful query parameters: fields and expand. These parameters allow clients to tailor the response data to their specific needs, optimizing both the payload size and the clarity of the response.
+
+### Fields Parameter
+
+### Overview
+
+The fields parameter enables clients to selectively retrieve only a subset of fields for a given resource. This is particularly useful for minimizing response size and bandwidth consumption, especially when the client requires only specific pieces of data.
+
+### Usage
+
+- The **`fields`** parameter accepts a comma-separated list of field names that the client wants to be included in the response.
+- Syntax: **`?fields=field1,field2,field3`**
+
+```
+GET /api/v1/workspaces/:slug/projects/:project_id/issues/?fields=id,name,description
+```
+
+In this example, the API will return only the **`id`**, **`name`**, and **`description`** fields of the resource.
+
+### Expand Parameter
+
+### Overview
+
+The expand parameter allows clients to request additional related information to be included in the response. This is useful for retrieving detailed information about nested resources without making separate API calls.
+
+### Usage
+
+- The **`expand`** parameter can be used to include details of related resources or nested objects in the response.
+- Syntax: **`?expand=field1,field2`**
+
+## Example
+
+```
+GET /api/v1/workspaces/:slug/projects/:project_id/issues/?expand=assignees,state
+```
+
+This request will return the resource data along with expanded information about the `assignees` and `state`.
+
+### Error Handling
+
+- Invalid or unrecognized field names passed in the **`fields`** parameter will result in an error response, indicating which fields are invalid.
+- Similarly, if **`expand`** is used on fields that cannot be expanded, an appropriate error message will be returned.
diff --git a/src/pages/apis/issue-activity.md b/src/pages/apis/issue-activity.md
new file mode 100644
index 0000000..02f6799
--- /dev/null
+++ b/src/pages/apis/issue-activity.md
@@ -0,0 +1,115 @@
+## Issue Activity
+
+{% col-2 %}
+{% list %}
+Issue activities are the history of all the changes that happened to the issue like property changes etc.
+{% /list %}
+
+{% list %}
+
+```
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/activities/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/activities/:activity_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Issue Activity Object
+
+{% col-2 %}
+{% list %}
+
+**Attributes**
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `verb` _string_
+
+created or updated
+
+- `field` _string_ or _null_
+
+The field that got changed null when created
+
+- `old_value` _string_
+
+Old value of the field
+
+- `new_value` _string_
+
+New value of the field
+
+- `comment` _string_
+
+Comment auto generated
+
+- `attachments` - _[url,]_
+
+Url of all the attachments that are in the activity
+
+- `old_identifier` _uuid_
+
+Old identifier of the field
+
+- `new_identifier` _uuid_
+
+New identifier of the field
+
+- `epoch` _float_
+
+Epoch float field when the activity was created.
+
+- `project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `issue` _uuid_
+
+The issue the activity is attached to
+
+- `issue_comment` _uuid or null_
+
+The comment uuid if the activity was created due to a comment
+
+- `actor` uuid
+
+The actor who triggered this actor
+{% /list %}
+
+{% list %}
+
+```
+{
+    "id": "35612f5b-3eff-4130-b91c-c976ff887a20",
+    "created_at": "2023-11-19T11:56:55.452555Z",
+    "updated_at": "2023-11-19T11:56:55.452561Z",
+    "verb": "created",
+    "field": null,
+    "old_value": null,
+    "new_value": null,
+    "comment": "created the issue",
+    "attachments": [],
+    "old_identifier": null,
+    "new_identifier": null,
+    "epoch": 1700395015.0,
+    "project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+    "workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+    "issue": "e1c25c66-5bb8-465e-a818-92a483423443",
+    "issue_comment": null,
+    "actor": "16c61a3a-512a-48ac-b0be-b6b46fe6f430"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/issue-attachment.md b/src/pages/apis/issue-attachment.md
new file mode 100644
index 0000000..127fadf
--- /dev/null
+++ b/src/pages/apis/issue-attachment.md
@@ -0,0 +1,52 @@
+## Issue Attachment
+
+{% col-2 %}
+{% list %}
+Files like pdf, images can be attached to an issue to provide extra context for the issues
+{% /list %}
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/attachments/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/attachments/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/attachments/:link_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/attachments/:link_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Issue Attachment Object
+
+{% col-2 %}
+{% list %}
+
+###
+
+- `asset` _file_ object **(required)**
+
+The file object which needs to be uploaded returns a _string_ with the uploaded s3 url
+
+{% /list %}
+{% list %}
+
+```
+{
+	"id": "36d944cd-363f-453b-ba6b-ced0134686c6",
+	"created_at": "2023-11-20T07:55:47.341643Z",
+	"updated_at": "2023-11-20T07:55:47.341662Z",
+	"attributes": {
+		"name": "Screenshot 2023-11-03 at 6.28.42PM.png",
+		"size": 90016
+	},
+	"asset": "https://planefs.s3.us-east-1.amazonaws.com/cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4/416d6a4ab4504a30bff193ca50441e5e-Screenshot_2023-11_88uWotC.png",
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+	"issue": "e1c25c66-5bb8-465e-a818-92a483423443"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/issue-comment.md b/src/pages/apis/issue-comment.md
new file mode 100644
index 0000000..7a8b810
--- /dev/null
+++ b/src/pages/apis/issue-comment.md
@@ -0,0 +1,92 @@
+## Issue Comment
+
+{% col-2 %}
+{% list %}
+The comments that are added to the issue
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/comments/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/comments/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/comments/:comment_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/comments/:comment_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/comments/:comment_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Issue Comment Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or updated the module
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `comment_html` html \*string **(required)\***
+
+HTML string version of the comment
+
+- `comment_stripped` _string_
+
+Stripped string version of the comment
+
+- `access` _string_
+
+If the comment should be visible externally also if the project is published or not. Takes in two values
+
+- INTERNAL
+- EXTERNAL
+- `project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `issue` _uuid_
+
+The issue the activity is attached to
+
+- `actor` _uuid_
+
+UUID of the user who commented.
+{% /list %}
+
+{% list %}
+
+```
+{
+	"id": "f3e29f26-708d-40f0-9209-7e0de44abc49",
+	"created_at": "2023-11-20T09:26:10.383129Z",
+	"updated_at": "2023-11-20T09:26:10.383140Z",
+	"comment_stripped": "Initialf ThoughtsaMy initial thoughts on this are very  good",
+	"comment_json": {},
+	"comment_html": "<h1>Initialf Thoughts</h1>a<p>My initial thoughts on this are very  good</p>",
+	"attachments": [],
+	"access": "INTERNAL",
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+	"issue": "e1c25c66-5bb8-465e-a818-92a483423443",
+	"actor": "16c61a3a-512a-48ac-b0be-b6b46fe6f430"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/issue.md b/src/pages/apis/issue.md
new file mode 100644
index 0000000..c58c7e2
--- /dev/null
+++ b/src/pages/apis/issue.md
@@ -0,0 +1,138 @@
+## Issue
+
+{% col-2 %}
+{% list %}
+Inside an issue, you can add as many details as you like to get your work done.
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/issues/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Issue Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `name` _string_ **(required)**
+
+Name of the issues
+
+- `created_at` , `updated_at` _timestamp_
+
+Timestamp of the issue when it was created and when it was last updated
+
+- `estimate_point` _integer_ or _null_
+
+Total estimate points for the issue takes value between (0,7).
+
+- `description_html` _string_
+
+HTML description of the issue
+
+- `description_stripped` _string_
+
+Stripped version of the html description auto generated using the application.
+
+- `priority` _string_
+
+Priority of the issue takes in 5 values
+
+- none
+- urgent
+- high
+- medium
+- low
+- `start_date` _date_
+
+Start date of the issue
+
+- `target_date` _date_
+
+Target date of the issue
+
+- `sequence_id` _integer_
+
+Auto generated from the system the unique identifier of the issue
+
+- `sort_order` _decimal_
+
+Auto generated from the system during creation used for ordering
+
+- `completed_at` _timestamp_ or _null_
+
+Timestamp when the issue is moved to any completed group state
+
+- `created_by` & `updated_by`
+
+This values are auto saved and represent the id of the user that created or the updated the project.
+
+- `project` _uuid_
+
+The project which the issue is part of auto generated from backend
+
+- `workspace` _uuid_
+
+The workspace which the issue is part of auto generated from backend
+
+- `parent` _uuid_
+
+The uuid of the parent issue which should be part of the same workspace
+
+- `state` _uuid_
+
+The uuid of the state which is present in the project where the issue is being created.
+
+- `assignees` - _[uuid,]_
+
+The array of uuids of the users who are part of the project where the issue is being created or updated.
+
+- `labels` - _[uuid,]_
+
+The array of uuids of the labels which are present in the project where the issue is being created or updated.
+{% /list %}
+
+{% list %}
+
+```
+{
+	"id": "e1c25c66-5bb8-465e-a818-92a483423443",
+	"created_at": "2023-11-19T11:56:55.176802Z",
+	"updated_at": "2023-11-19T11:56:55.176809Z",
+	"estimate_point": null,
+	"name": "First Issue",
+	"description_html": "<p></p>",
+	"description_stripped": "",
+	"priority": "none",
+	"start_date": "2023-09-01",
+	"target_date": "2023-10-04",
+	"sequence_id": 421,
+	"sort_order": 265535.0,
+	"completed_at": null,
+	"archived_at": null,
+	"is_draft": false,
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+	"parent": null,
+	"state": "f3f045db-7e74-49f2-b3b2-0b7dee4635ae",
+	"assignees": [
+		"797b5aea-3f40-4199-be84-5f94e0d04501"
+	],
+	"labels": []
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/label.md b/src/pages/apis/label.md
new file mode 100644
index 0000000..666c4f5
--- /dev/null
+++ b/src/pages/apis/label.md
@@ -0,0 +1,83 @@
+## Label
+
+{% col-2 %}
+{% list %}
+Labels are tags that can be assigned to
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/labels/
+GET    /api/v1/workspaces/:slug/projects/:project_id/labels/
+GET    /api/v1/workspaces/:slug/projects/:project_id/labels/:label_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/labels/:label_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/labels/:label_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Label Object
+
+{% col-2 %}
+{% list %}
+
+- `name` _string_ **(required)**
+
+Name of the label
+
+- `created_at` , `updated_at` _timestamp_
+
+Timestamp of the issue when it was created and when it was last updated.
+
+- `description` _string_
+
+Description of the Label
+
+- `color` _string_
+
+Hex code of the color
+
+- `sort_order` _float_
+
+Sort order of the label used for sorting
+
+- `created_by` & `updated_by`
+
+This values are auto saved and represent the id of the user that created or the updated the project.
+
+- `project` _uuid_
+
+The project which the issue is part of auto generated from backend
+
+- `workspace` _uuid_
+
+The workspace which the issue is part of auto generated from backend
+
+- `parent` _uuid or null_
+
+Parent of the label which is also a Label
+{% /list %}
+
+{% list %}
+
+```
+{
+"id": "c7146baf-7058-496b-aa3a-df6c25a7e929",
+"created_at": "2023-11-20T06:01:03.538675Z",
+"updated_at": "2023-11-20T06:01:03.538683Z",
+"name": "High",
+"description": "",
+"color": "",
+"sort_order": 72416.0,
+"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+"parent": null
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/links.md b/src/pages/apis/links.md
new file mode 100644
index 0000000..008428d
--- /dev/null
+++ b/src/pages/apis/links.md
@@ -0,0 +1,76 @@
+## Links
+
+{% col-2 %}
+{% list %}
+Links can be added to an issue to point to some external resources
+{% /list %}
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/links/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/links/
+GET    /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/links/:link_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/links/:link_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/issues/:issue_id/links/:link_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+{% col-2 %}
+{% list %}
+
+## Link object
+
+- `title` _string_
+
+Title of the url
+
+- `url` _url_ **(required)**
+
+Url of the external link
+
+- `metadata` _json_
+
+Metadata from the resource
+
+- `created_at` , `updated_at` _timestamp_
+
+Timestamp of the issue when it was created and when it was last updated.
+
+- `created_by` & `updated_by`
+
+This values are auto saved and represent the id of the user that created or the updated the project.
+
+- `project` _uuid_
+
+The project which the issue is part of auto generated from backend
+
+- `workspace` _uuid_
+
+The workspace which the issue is part of auto generated from backend
+
+- `issue` _uuid_
+
+The issue which the link is attached to
+{% /list %}
+{% list %}
+
+```
+{
+	"id": "662dd6b2-2b01-4315-955f-480eb51baa14",
+	"created_at": "2023-11-20T06:23:10.270664Z",
+	"updated_at": "2023-11-20T06:23:10.270689Z",
+	"title": "Plane Website",
+	"url": "https://plane.so",
+	"metadata": {},
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+	"issue": "e1c25c66-5bb8-465e-a818-92a483423443"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/module-issue.md b/src/pages/apis/module-issue.md
new file mode 100644
index 0000000..85ed73f
--- /dev/null
+++ b/src/pages/apis/module-issue.md
@@ -0,0 +1,75 @@
+## Module Issue
+
+{% col-2 %}
+{% list %}
+It contains all the list of issues which are inside in a module.
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/module-issues/
+GET    /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/module-issues/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/module-issues/:issue_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Module Issue Object
+
+{% col-2 %}
+{% list %}
+
+- `sub_issues_count`
+
+It tells the count of sub issues of the issue
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or updated the module
+
+- `Project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `Workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `module` uuid
+
+Module id of which the issue belongs to
+
+- `issue` uuid
+
+Issue id of the issue
+{% /list %}
+
+{% list %}
+
+```
+{
+    "id": "484e72ec-846c-4764-82aa-89081e6ea2a6",
+    "sub_issues_count": 0,
+    "created_at": "2023-11-22T07:53:38.512357Z",
+    "updated_at": "2023-11-22T07:53:38.512388Z",
+    "created_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+    "updated_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+    "project": "6436c4ae-fba7-45dc-ad4a-5440e17cb1b2",
+    "workspace": "c467e125-59e3-44ec-b5ee-f9c1e138c611",
+    "module": "5090ed11-ccc4-4a5c-87ba-9330bd926b4f",
+    "issue": "c099e795-e2a8-427c-9714-1dfbdc56707a"
+}
+```
+
+{% /list %}
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/module.md b/src/pages/apis/module.md
new file mode 100644
index 0000000..61d579a
--- /dev/null
+++ b/src/pages/apis/module.md
@@ -0,0 +1,119 @@
+## Module
+
+{% col-2 %}
+{% list %}
+Modules are smaller, focused projects that help you group and organize issues within a specific time frame. They allow you to break down your work into manageable chunks and track progress towards specific goals or objectives.
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/modules/
+GET    /api/v1/workspaces/:slug/projects/:project_id/modules/
+GET    /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/modules/:module_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## Module Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `name` string(required)
+
+Name of the module
+
+- `description` string
+
+Description of the module
+
+- `description_html` string
+
+Description in HTML format
+
+- `start_date` date
+
+Start date of the module
+
+- `target_date` date
+
+Estimated date to complete the module
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `status`
+
+It describes the status of the module
+
+The status can be
+
+- backlog
+- planned
+- in-progress
+- paused
+- completed
+- cancelled
+- `view_props`
+
+It store the filters and the display properties selected by the user to visualize the issues in the module
+
+- `sort_order`
+
+It gives the position of the module at which it should be displayed
+
+- `created_by` , `updated_by` _uuid_
+
+These values are auto saved and represent the id of the user that created or updated the module
+
+- `Project` uuid
+
+It contains projects uuid which is automatically saved.
+
+- `Workspace` uuid
+
+It contains workspace uuid which is automatically saved
+
+- `lead` uuid
+
+Lead of the module
+{% /list %}
+
+{% list %}
+
+```
+{
+	"id": "b69b19ae-261f-428c-899f-dd58efaa36c0",
+	"created_at": "2023-11-19T11:48:21.130161Z",
+	"updated_at": "2023-11-19T11:48:21.130168Z",
+	"name": "module stesting",
+	"description": "",
+	"description_text": null,
+	"description_html": null,
+	"start_date": null,
+	"target_date": null,
+	"status": "planned",
+	"view_props": {},
+	"sort_order": 55535.0,
+	"created_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+	"updated_by": "0649cb9d-05c8-4ef4-8e8b-d108ccddd42c",
+	"project": "6436c4ae-fba7-45dc-ad4a-5440e17cb1b2",
+	"workspace": "c467e125-59e3-44ec-b5ee-f9c1e138c611",
+	"lead": null,
+	"members": []
+}
+```
+
+{% /list %}
+
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/project.md b/src/pages/apis/project.md
new file mode 100644
index 0000000..925e761
--- /dev/null
+++ b/src/pages/apis/project.md
@@ -0,0 +1,186 @@
+## Project
+
+{% col-2 %}
+
+{% list %}
+Projects let you manage teams and tasks within your Workspace.
+{% /list %}
+
+{% list %}
+**Endpoints**
+
+```
+POST   /api/v1/workspaces/:slug/projects/
+GET    /api/v1/workspaces/:slug/projects/
+GET    /api/v1/workspaces/:slug/projects/:project_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/
+```
+
+{% /list %}
+
+{% /col-2 %}
+
+## Project Object
+
+{% col-2 %}
+
+{% list %}
+**Attributes**
+
+- `name` _string_ (**required**)
+
+Name of the project
+
+- `identifier` _string_ (**required**)
+
+Unique Identifier of project for the workspace
+
+- `description` _string_
+
+Project description
+
+- `total_members` _integer_
+
+Total members present in the project.
+
+- `total_cycles` _integer_
+
+Total number of cycles present in the project.
+
+- `total_modules` _integer_
+
+Total number of modules present in the project.
+
+- `is_member` _boolean_
+
+The current requesting user is a member of the project or not
+
+- `member_role` _integer_
+
+The current requesting users role in the project.
+
+- `is_deployed` _integer_
+
+Represents if the project is deployed and publicly visible.
+
+- `created_at` _timestamp_
+
+The timestamp of the time when the project was created
+
+- `updated_at` _timestamp_
+
+The timestamp of the time when the project was last updated
+
+- `network` _integer_
+
+Is the project public or secret it takes in two values either (0,2)
+
+- **0 - Secret**
+- **2 - Public**
+- `emoji` _string_
+
+HTML emoji DEX code without the `&#`
+
+- `icon_prop` _json_
+- `module_view` _bool_
+
+Enable disable module for the project in the UI
+
+- `cycle_view` _bool_
+
+Enable disable cycle for the project in the UI
+
+- `inbox_view` _bool_
+
+Enable disable inbox for the project in the UI
+
+- `page_view` _bool_
+
+Enable disable pages for the project in the UI
+
+- `issue_views_view` _bool_
+
+Enable disable project views for the project in the UI
+
+- `cover_image` _url_
+
+URL for the image for the project cover
+
+- `archive_in` _integer_
+
+Months in which the issue should be automatically archived can take values between (0,12)
+
+- `close_in` _integer_
+
+Months in which the issue should be auto closed can take values between (0,12)
+
+- `created_by` , `updated_by` _uuid_
+
+This values are auto saved and represent the id of the user that created or the updated the project
+
+- `workspace` _uuid_
+
+The workspace uuid where the project is created saved automatically
+
+- `default_assignee` _uuid_
+
+The uuid of the user who is a workspace member that have issues assigned automatically if the issue does not have any assignee
+
+- `project_lead` _uuid_
+
+The uuid of the user who is a workspace member that leads the project
+
+- `estimate` _uuid_
+
+UUID of the estimate of the project
+
+- `default_state`
+
+Default state which will be used when the issues will be auto closed
+{% /lisr %}
+
+{% list %}
+
+**Response Object**
+
+```
+{
+	"id": "00918ea1-52f7-48bd-abe3-d3efe76ff7dd",
+	"total_members": 1,
+	"total_cycles": 0,
+	"total_modules": 0,
+	"is_member": true,
+	"member_role": 20,
+	"is_deployed": false,
+	"created_at": "2023-11-19T10:40:15.426652Z",
+	"updated_at": "2023-11-19T10:40:15.426672Z",
+	"name": "Project X",
+	"description": "",
+	"description_text": null,
+	"description_html": null,
+	"network": 2,
+	"identifier": "PROJX",
+	"emoji": null,
+	"icon_prop": null,
+	"module_view": true,
+	"cycle_view": true,
+	"issue_views_view": true,
+	"page_view": true,
+	"inbox_view": false,
+	"cover_image": null,
+	"archive_in": 0,
+	"close_in": 0,
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4",
+	"default_assignee": null,
+	"project_lead": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"estimate": null,
+	"default_state": null
+}
+```
+
+{% /list %}
+
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/apis/state.md b/src/pages/apis/state.md
new file mode 100644
index 0000000..712c5d9
--- /dev/null
+++ b/src/pages/apis/state.md
@@ -0,0 +1,100 @@
+## State
+
+{% col-2 %}
+{% list %}
+State is the current status of the issue
+{% /list %}
+
+{% list %}
+
+```
+POST   /api/v1/workspaces/:slug/projects/:project_id/states/
+GET    /api/v1/workspaces/:slug/projects/:project_id/states/
+GET    /api/v1/workspaces/:slug/projects/:project_id/states/:state_id/
+PATCH  /api/v1/workspaces/:slug/projects/:project_id/states/:state_id/
+DELETE /api/v1/workspaces/:slug/projects/:project_id/states/:state_id/
+```
+
+{% /list %}
+{% /col-2 %}
+
+## State Object
+
+{% col-2 %}
+{% list %}
+**Attributes**
+
+- `name` _string_ **( required )**
+
+Name of the state
+
+- `created_at` , `updated_at` _timestamp_
+
+Timestamp of the issue when it was created and when it was last updated
+
+- `description` _string_
+
+Description of the state
+
+- `color` _string_ **(required)**
+
+String code of the color
+
+- `slug` _string_
+
+Slugified name of the state auto generated from the system
+
+- `sequence` _string_
+
+Auto generated sequence of the state for ordering.
+
+- `group` _string_ **(required)**
+
+Group to which the state belongs can only take values
+
+- backlog
+- unstarted
+- started
+- completed
+- cancelled
+- `default` _boolean_
+
+Is it the default state in which if the issues are not assigned any states all the issues are created in this state.
+
+- `created_by` & `updated_by`
+
+This values are auto saved and represent the id of the user that created or the updated the project.
+
+- `project` _uuid_
+
+The project which the issue is part of auto generated from backend
+
+- `workspace` _uuid_
+
+The workspace which the issue is part of auto generated from backend
+{% /list %}
+
+{% list %}
+
+```
+{
+	"id": "f960d3c2-8524-4a41-b8eb-055ce4be2a7f",
+	"created_at": "2023-11-19T17:41:45.478363Z",
+	"updated_at": "2023-11-19T17:41:45.478383Z",
+	"name": "Ideation",
+	"description": "",
+	"color": "#eb5757",
+	"slug": "ideation",
+	"sequence": 130000.0,
+	"group": "unstarted",
+	"default": false,
+	"created_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"updated_by": "16c61a3a-512a-48ac-b0be-b6b46fe6f430",
+	"project": "4af68566-94a4-4eb3-94aa-50dc9427067b",
+	"workspace": "cd4ab5a2-1a5f-4516-a6c6-8da1a9fa5be4"
+}
+```
+
+{% /list %}
+
+{% /col-2 %}
\ No newline at end of file
diff --git a/src/pages/docker-compose.md b/src/pages/docker-compose.md
new file mode 100644
index 0000000..2f9a43a
--- /dev/null
+++ b/src/pages/docker-compose.md
@@ -0,0 +1,308 @@
+# Self Hosting
+
+In this guide, we will walk you through the process of setting up a self-hosted environment. Self-hosting allows you to have full control over your applications and data. It's a great way to ensure privacy, control, and customization.
+
+We will cover two main options for setting up your self-hosted environment: using a cloud server or using your desktop. For the cloud server, we will use an AWS EC2 instance. For the desktop, we will use Docker to create a local environment.
+
+Let's get started!
+
+## Setting up Docker Environment
+
+{% expansion collapsedTitle="Option 1 - Using Cloud Server" %}
+
+Best way to start is to create EC2 maching on AWS. It must of minimum `t3.medium/t3a.medium`
+
+Run the below command to install docker engine.
+
+```
+curl -fsSL https://get.docker.com -o install-docker.sh
+
+sudo sh install-docker.sh
+```
+
+{% /expansion %}
+
+{% expansion collapsedTitle="Option 2 - Using Desktop" %}
+**For Mac:**
+
+1. Download Docker Desktop for Mac from the Docker Hub.
+2. Double-click the downloaded `.dmg` file and drag the Docker app icon to the Applications folder.
+3. Open Docker Desktop from the Applications folder. You might be asked to provide your system password to install additional software.
+
+**For Windows:**
+
+1. Download Docker Desktop for Windows from the Docker Hub.
+2. Run the installer and follow the instructions. You might be asked to enable Hyper-V and "Containers" Windows features.
+3. Open Docker Desktop. You might be asked to log out and log back in, or restart your machine, for changes to take effect.
+
+After installation, you can verify the installation by opening a terminal (Command Prompt on Windows, Terminal app on Mac) and running the command `docker --version`. This should display the installed version of Docker.
+{% /expansion %}
+
+---
+
+## Installing Plane
+
+Installing plane is a very easy and minimal step process.
+
+### Prerequisite
+
+- Docker installed and running
+- OS with bash scripting enabled (Ubuntu, Linux AMI, macos). Windows systems need to have [gitbash](https://git-scm.com/download/win)
+- User context used must have access to docker services. In most cases, use sudo su to switch as root user
+- Use the terminal (or gitbash) window to run all the future steps
+
+### Downloading Latest Stable Release
+
+```
+mkdir plane-selfhost
+
+cd plane-selfhost
+
+curl -fsSL -o setup.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/install.sh
+
+chmod +x setup.sh
+```
+
+{% expansion collapsedTitle="Downloading Preview Release" %}
+
+```
+mkdir plane-selfhost
+
+cd plane-selfhost
+
+export RELEASE=preview
+
+curl -fsSL https://raw.githubusercontent.com/makeplane/plane/$BRANCH/deploy/selfhost/install.sh | sed  's@BRANCH=master@BRANCH='"$RELEASE"'@' > setup.sh
+
+chmod +x setup.sh
+```
+
+{% /expansion %}
+
+---
+
+### Proceed with setup
+
+Above steps will set you ready to install and start plane services.
+
+Lets get started by running the `./setup.sh` command.
+
+This will prompt you with the below options.
+
+```
+Select a Action you want to perform:
+   1) Install
+   2) Start
+   3) Stop
+   4) Restart
+   5) Upgrade
+   6) Exit
+
+Action [2]: 1
+```
+
+For the 1st time setup, type "1" as action input.
+
+This will create a create a folder `plane-app` or `plane-app-preview` (in case of preview deployment) and will download 2 files inside that
+
+- `docker-compose.yaml`
+- `.env`
+
+Again the `options [1-6]` will be popped up and this time hit `6` to exit.
+
+---
+
+### Continue with setup - Environment Settings
+
+Before proceeding, we suggest used to review `.env` file and set the values.
+Below are the most import keys you must refer to. _You can use any text editor to edit this file_.
+
+> `NGINX_PORT` - This is default set to `80`. Make sure the port you choose to use is not preoccupied. (e.g `NGINX_PORT=8080`)
+
+> `WEB_URL` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+
+> `CORS_ALLOWED_ORIGINS` - This is default set to `http://localhost`. Change this to the FQDN you plan to use along with NGINX_PORT (eg. `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+
+There are many other settings you can play with, but we suggest you configure `EMAIL SETTINGS` as it will enable you to invite your teammates onto the platform.
+
+---
+
+### Continue with setup - Start Server
+
+Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `2` to start the sevices
+
+```
+Select a Action you want to perform:
+   1) Install
+   2) Start
+   3) Stop
+   4) Restart
+   5) Upgrade
+   6) Exit
+
+Action [2]: 2
+```
+
+Expect something like this.  
+![Downloading docker images](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/download.webp)
+
+Be patient as it might take sometime based on download speed and system configuration. If all goes well, you must see something like this
+
+![Downloading completed](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/started.webp)
+
+This is the confirmation that all images were downloaded and the services are up & running.
+
+You have successfully self hosted `Plane` instance. Access the application by going to IP or domain you have configured it (e.g `https://plane.example.com:8080` or `http://[IP-ADDRESS]:8080`)
+
+---
+
+### Stopping the Server
+
+In case you want to make changes to `.env` variables, we suggest you to stop the services before doing that.
+
+Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `3` to stop the sevices
+
+```
+Select a Action you want to perform:
+   1) Install
+   2) Start
+   3) Stop
+   4) Restart
+   5) Upgrade
+   6) Exit
+
+Action [2]: 3
+```
+
+If all goes well, you must see something like this
+
+![Stop Services](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/stopped.webp)
+
+---
+
+### Restarting the Server
+
+In case you want to make changes to `.env` variables, without stopping the server or you noticed some abnormalies in services, you can restart the services with RESTART option.
+
+Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `4` to restart the sevices
+
+```
+Select a Action you want to perform:
+   1) Install
+   2) Start
+   3) Stop
+   4) Restart
+   5) Upgrade
+   6) Exit
+
+Action [2]: 4
+```
+
+If all goes well, you must see something like this
+
+![Restart Services](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/restart.webp)
+
+---
+
+### Upgrading Plane Version
+
+It is always advised to keep Plane up to date with the latest release.
+
+Lets again run the `./setup.sh` command. You will again be prompted with the below options. This time select `5` to upgrade the release.
+
+```
+Select a Action you want to perform:
+   1) Install
+   2) Start
+   3) Stop
+   4) Restart
+   5) Upgrade
+   6) Exit
+
+Action [2]: 5
+```
+
+By choosing this, it will stop the services and then will download the latest `docker-compose.yaml` and `variables-upgrade.env`. Here system will not replace `.env` with the new one.
+
+You must expect the below message
+
+![Alt text](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/upgrade.webp)
+
+Once done, choose `6` to exit from prompt.
+
+> It is very important for you to compare the 2 files `variables-upgrade.env` and `.env`. Copy the newly added variable from downloaded file to `.env` and set the expected values.
+
+Once done with making changes in `.env` file, jump on to `Start Server`
+
+## Upgrading from v0.13.2 to v0.14.x
+
+This is one time activity for users who are upgrading from v0.13.2 to v0.14.0
+
+As there has been significant changes to Self Hosting process, this step mainly covers the data migration from current (v0.13.2) docker volumes from newly created volumes
+
+> Before we begin with migration, make sure your v0.14.0 was started and then stopped. This is required to know the newly created docker volume names.
+
+Begin with downloading the migration script using below command
+
+```
+
+curl -fsSL -o migrate.sh https://raw.githubusercontent.com/makeplane/plane/master/deploy/selfhost/migration-0.13-0.14.sh
+
+chmod +x migrate.sh
+
+```
+
+Now run the `./migrate.sh` command and expect the instructions as below
+
+```
+******************************************************************
+
+This script is solely for the migration purpose only.
+This is a 1 time migration of volume data from v0.13.2 => v0.14.x
+
+Assumption:
+1. Postgres data volume name ends with _pgdata
+2. Minio data volume name ends with _uploads
+3. Redis data volume name ends with _redisdata
+
+Any changes to this script can break the migration.
+
+Before you proceed, make sure you run the below command
+to know the docker volumes
+
+docker volume ls -q | grep -i "_pgdata"
+docker volume ls -q | grep -i "_uploads"
+docker volume ls -q | grep -i "_redisdata"
+
+*******************************************************
+
+Given below list of REDIS volumes, identify the prefix of source and destination volumes leaving "_redisdata"
+---------------------
+plane-app_redisdata
+v0132_redisdata
+
+Provide the Source Volume Prefix :
+```
+
+**Open another terminal window**, and run the mentioned 3 command. This may be different for users who have changed the volume names in their previous setup (v0.13.2)
+
+For every command you must see 2 records something like shown in above example of `redisdata`
+
+To move forward, you would need PREFIX of old setup and new setup. As per above example, `v0132` is the prefix of v0.13.2 and `plane-app` is the prefix of v0.14.0 setup
+
+**Back to original terminal window**, _Provide the Source Volume Prefix_ and hit ENTER.
+
+Now you will be prompted to _Provide Destination Volume Prefix_. Provide the value and hit ENTER
+
+```
+Provide the Source Volume Prefix : v0132
+Provide the Destination Volume Prefix : plane-app
+```
+
+In case the suffixes are wrong or the mentioned volumes are not found, you will receive the error shown below. The image below displays an error for source volumes.
+
+![Migrate Error](https://plane-marketing.s3.ap-south-1.amazonaws.com/plane-assets/docs/migrate-error.webp)
+
+In case of successful migration, it will be a silent exit without error.
+
+Now its time to restart v0.14.0 setup.
diff --git a/src/pages/integrations/github.md b/src/pages/integrations/github.md
index f4190d0..c31114c 100644
--- a/src/pages/integrations/github.md
+++ b/src/pages/integrations/github.md
@@ -25,7 +25,7 @@ in Plane as well.
 
 {% callout type="note" %}
 Plane is still in development, if there are any hiccups in
-Integrations, please report them to us on our [Discord server]() or [Github issues]().
+Integrations, please report them to us on our [Discord server](https://discord.com/invite/A92xrEGCge) or [Github issues](https://github.com/makeplane/plane/issues).
 {% /callout %}
 
 ## Plane to Github Synchronization Overivew
diff --git a/src/pages/kubernetes.md b/src/pages/kubernetes.md
new file mode 100644
index 0000000..36fb963
--- /dev/null
+++ b/src/pages/kubernetes.md
@@ -0,0 +1,80 @@
+# Helm Chart
+
+Follow below steps to setup Plane
+
+**Add Helm Repo**
+
+```
+helm repo add makeplane https://helm.plane.so/
+
+```
+
+You must refer the configuration variables before proceeding. This can be done by running the below command or visiting Configuration tab.
+
+```
+helm show values plane-ce --repo https://helm.plane.so
+```
+
+**Basic Install**
+
+```
+helm install \
+    --create-namespace \
+    --namespace plane-ns \
+    --set ingress.host="plane.example.com" \
+    my-plane makeplane/plane-ce
+```
+
+**Customise Remote Postgress URL**
+
+```
+    --set postgres.local_setup=false \
+    --set env.pgdb_remote_url="postgress://[username]:[password]@[pg-host]/[db-name]" \
+```
+
+**Customise Remote Redis URL**
+
+```
+    --set redis.local_setup=false \
+    --set env.remote_redis_url="redis://[redis-host]:[6379]" \
+```
+
+**Customise SMTP using**
+
+```
+    --set smtp.host="smtp.example.com" \
+    --set smtp.user="my-email-address@example.com" \
+    --set smtp.password="my-password" \
+    --set smtp.from="Plane Mailer <mailer@example.com>" \
+    --set smtp.port=587 \
+    --set smtp.use_tls=1 \
+```
+
+**Customise with SSL**
+
+Before proceeding with SSL configuration, make sure you have followed the steps in "SSL Certificate" tab
+
+```
+    --set ssl.createIssuer=true \
+    --set ssl.issuer=cloudflare \
+    --set ssl.token=xxxxxxxx \
+    --set ssl.server="https://acme-v02.api.letsencrypt.org/directory" \
+    --set ssl.email="plane-admin@example.com" \
+    --set ssl.generateCerts=true \
+```
+
+---
+
+## Cert-Manager Setup
+
+If you are looking at generating Let's Encrypt SSL Certificate, preinstall Cert-Manager using below steps before moving to installing Plane
+
+```
+kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.13.1/cert-manager.crds.yaml
+
+helm repo add jetstack https://charts.jetstack.io
+
+helm install cert-manager --create-namespace --namespace cert-manager --version v1.13.1 jetstack/cert-manager --set startupapicheck.timeout=5m
+
+helm uninstall cert-manager -n cert-manager
+```
diff --git a/src/pages/quick-start.md b/src/pages/quick-start.md
index cde75e2..74e1c7f 100644
--- a/src/pages/quick-start.md
+++ b/src/pages/quick-start.md
@@ -38,11 +38,11 @@ Apache-2.0, and currently, we support self-hosting Plane using Docker. For
 detailed instructions, please refer to the [self-hosting](/self-hosting) section.
 
 {% callout type="note" %}
-  We are also working on making the self-hosting process smoother by introducing
-  easy deployment methods on popular PaaS tools such as Heroku, Render,
-  DigitalOcean, Railway, and more. If you wish to request any other
-  configuration, please raise a feature request on our
-  [GitHub](https://github.com/makeplane/plane).
+We are also working on making the self-hosting process smoother by introducing
+easy deployment methods on popular PaaS tools such as Heroku, Render,
+DigitalOcean, Railway, and more. If you wish to request any other
+configuration, please raise a feature request on our
+[GitHub](https://github.com/makeplane/plane).
 {% /callout %}
 
 ## Onboarding and Invitation
@@ -57,10 +57,8 @@ new workspace.
   invitation part and be directly redirect to the workspace.
 
 {% callout type="note" %}
-  During the onboarding process, the invited users will be assigned a `Viewer`
-  role by default. You can adjust the permissions of invited users for your
-  project in the workspace or project settings page based on your specific
-  requirements.
+During the onboarding process, the invited users will be assigned a **Viewer** role by default. You can adjust the permissions of invited users for your
+project in the workspace or project settings page based on your specific
 {% /callout %}
 
 ## The Dashboard
@@ -79,9 +77,9 @@ consider a workspace as a different company or organization you work with.
 
 {% callout type="note" %}
 
-  When you sign up for the first time, we'll prompt you to create a new
-  workspace. If you're invited to join, you can directly join the workspace
-  without creating a new one.
+When you sign up for the first time, we'll prompt you to create a new
+workspace. If you're invited to join, you can directly join the workspace
+without creating a new one.
 {% /callout %}
 
 ## Creating Projects
@@ -109,8 +107,8 @@ properties and relations are optional, know more about there [here]().
 
 {% callout type="note" %}
 
-  You can create issues by clicking on the `New Issue` button in the right-hand
-  corner of your project, or by using `C` shortcut.
+You can create issues by clicking on the `New Issue` button in the right-hand
+corner of your project, or by using `C` shortcut.
 {% /callout %}
 
 There's lot more about Issues, learn about them [here](/issues).
@@ -125,9 +123,9 @@ finished building and implementing a new version of their project or product.
 
 {% callout type="note" %}
 
-  Only one Cycle can be ongoing at a time to follow the principles of AGILE.
-  However, you can have your upcoming issues or draft issues already created for
-  the next cycles.
+Only one Cycle can be ongoing at a time to follow the principles of AGILE.
+However, you can have your upcoming issues or draft issues already created for
+the next cycles.
 {% /callout %}
 
 - You can move existing issues to a new or existing cycle, or create a new
diff --git a/src/pages/self-hosting.md b/src/pages/self-hosting.md
index 8437c4e..33d7b34 100644
--- a/src/pages/self-hosting.md
+++ b/src/pages/self-hosting.md
@@ -6,11 +6,11 @@ description: This section helps you get comfortable with Plane and find your way
 
 Plane is still in its early days, not everything is perfect yet, and
 hiccups may happen. Please let us know of any suggestions, ideas, or bugs that
-you encounter on our [Discord](https://discord.com/invite/A92xrEGCge).
+you encounter on our {% link href="https://discord.com/invite/A92xrEGCge" target="_blank" %}Discord{% /link %}
 
 This guide assumes you already have Docker installed
 and have permissions to run Docker containers.
-See the [Install on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)
+See the {% link href="https://docs.docker.com/engine/install/ubuntu/" target="_blank" %}Install on Ubuntu{% /link%}
 guide which explains installing Docker on your machine.
 
 ## Install with Docker Compose (recommended way)
diff --git a/src/pages/sitemap.xml.jsx b/src/pages/sitemap.xml.jsx
new file mode 100644
index 0000000..fcc54c0
--- /dev/null
+++ b/src/pages/sitemap.xml.jsx
@@ -0,0 +1,62 @@
+const pages = [
+  '',
+  '/quick-start',
+  '/self-hosting',
+  '/docker-compose',
+  '/kubernetes',
+  '/workspaces',
+  '/projects',
+  '/issues',
+  '/cycles',
+  '/modules',
+  '/pages',
+  '/integrations/about',
+  '/integrations/github',
+  '/integrations/slack',
+  '/importers/github',
+  '/importers/jira',
+  '/apis/introduction',
+  '/apis/project',
+  '/apis/state',
+  '/apis/label',
+  '/apis/links',
+  '/apis/issue-attachment',
+  '/apis/issue',
+  '/apis/issue-activity',
+  '/apis/issue-comment',
+  '/apis/module',
+  '/apis/module-issue',
+  '/apis/cycle',
+  '/apis/cycle-issue',
+  '/apis/inbox-issue',
+  '/webhooks/introduction',
+]
+
+const Sitemap = () => {}
+
+export default Sitemap
+
+export async function getServerSideProps({ res }) {
+  const baseUrl = process.env.BASE_URL || 'https://example.com'
+  const pagesSitemap = pages
+    .map((page) => {
+      return `
+        <url>
+          <loc>${baseUrl}${page}</loc>
+        </url>
+      `
+    })
+    .join('')
+
+  const sitemap = `<?xml version="1.0" encoding="UTF-8"?>
+    <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
+      ${pagesSitemap}
+    </urlset>
+  `
+
+  res.setHeader('Content-Type', 'text/xml')
+  res.write(sitemap)
+  res.end()
+
+  return { props: {} }
+}
diff --git a/src/pages/webhooks/introduction.md b/src/pages/webhooks/introduction.md
new file mode 100644
index 0000000..b5522c4
--- /dev/null
+++ b/src/pages/webhooks/introduction.md
@@ -0,0 +1,109 @@
+---
+title: Webhooks
+pageTitle: Webhooks | Plane
+description: Cache every single thing your app could ever do ahead of time, so your code never even has to run at all.
+---
+
+A webhook triggers a HTTP POST request on the specified url, whenever there is a change in an event. Like a new project is created, updated or deleted then a webhook can be triggered to receive the required payload.
+
+## Creating a webhook
+
+`url` You are required to provide a url in which you want the payloads to be triggered.
+
+`secret` A random generated string provided by the backend
+
+`is_active` To make a webhook active and inactive
+
+### Webhook Header
+
+```
+"Content-Type": "application/json",
+"User-Agent": "Autopilot",
+"X-Plane-Delivery": "f819eff4-cd50-4987-bc97-e5be1e04c94f",
+"X-Plane-Event": "project",
+"X-Plane-Signature": "7896ae9addb1f73931132b4f3e052bf12c410b837b24898e75dcd660c7"
+```
+
+| Header            | Description                                                          |
+| ----------------- | -------------------------------------------------------------------- |
+| X-Plane-Delivery  | It is a randomly generated UUID for uniquely identifying the payload |
+| X-Plane-Event     | It describes the event for which the webhook triggered               |
+| X-Plane-Signature | A signature is generated based on the secret and the payload         |
+
+### Webhook Payload Example for the project `update`
+
+```
+"event": "project",
+"action": "update",
+"webhook_id": "3c2c32ac-82df-48b3-be2a-a3e21dbe8692",
+"workspace_id": "d2d97c94-a6ad-4012-b526-5577c0d7c769",
+"data": {
+	"id":"22b6fc9c-1849-45da-b103-52a3e3a6b4c1",
+    "workspace_detail": {
+        "name":"Testing Project",
+        "slug":"testing-project",
+        "id":"bob1b192-f988-4bf9-b569-825de8cb0678"
+    },
+	"created_at":"2023-10-25T04:38:59.566962Z",
+	"updated_at":"2023-10-25T06:44:48.543685Z",
+	"name":"vfecddcwerj",
+	"description":"",
+	"description_text":null,
+	"description_html":null,
+	"network":2,
+	"identifier":"TRACE",
+	"emoji":null,
+	"icon_prop":null,
+	"module_view":true,
+	"cycle_view":true,
+	"issue_views_view":true,
+	"page_view":true,
+	"inbox_view":true,
+	"cover_image":null,
+	"archive_in":0,
+	"close_in":0,
+	"created_by":"6bb20d1c-4960-41ca-af4f-cee01de160c4",
+	"updated_by":"6bb20d1c-4960-41ca-af4f-cee01de160c4",
+	"workspace":"bob1b192-f988-4bf9-b569-825de8cb0678",
+	"default_assignee":null,
+	"project_lead":null,
+	"estimate":null,
+	"default_state":null
+},
+```
+
+User can choose the things for which they want the webhook to be triggered.
+
+Currently Plane supports the following events for which webhook can be trigged:
+
+- Project
+- Issue
+- Cycle
+- Module
+- Issue Comment
+
+## Verifying Signature
+
+```
+import hashlib
+import hmac
+
+secret_token = os.environ.get("WEBHOOK_SECRET")
+
+received_signature = request.headers.get('X-Plane-Signature')
+received_payload = json.dumps(request.json, sort_keys=True).encode('utf-8')
+
+expected_signature = hmac.new(secret_token.encode('utf-8'), msg=received_payload, digestmod=hashlib.sha256).hexdigest()
+
+if not hmac.compare_digest(expected_signature, received_signature):
+   raise HTTPException(status_code=403, detail="Invalid Signature provided")
+```
+
+## How webhook works
+
+Your webhook consumer is a simple HTTP endpoint. It must satisfy the following conditions:
+
+- It's available in a publicly accessible non-localhost URL.
+- It will respond to the Plane Webhook push (HTTP POST request) with a `HTTP 200` ("OK") response.
+
+If a delivery fails (i.e. server unavailable or responded with a non-200 HTTP status code), the push will be retried a couple of times. Here an exponential backoff delay is used: the attempt will be retried after approximately 10 minutes, then 30 minutes, and so on. If the webhook URL continues to be unresponsive the webhook might be disabled by Plane, and must be re-enabled again manually.
diff --git a/src/styles/table.css b/src/styles/table.css
new file mode 100644
index 0000000..3107d9e
--- /dev/null
+++ b/src/styles/table.css
@@ -0,0 +1,24 @@
+table tr th,
+table tr td {
+  padding: 8px 15px !important;
+}
+
+/* light mode */
+html table {
+  @apply border border-b-0 border-r-0 border-slate-200;
+}
+
+html table tr td,
+html table tr th {
+  @apply border border-l-0 border-t-0 border-slate-200;
+}
+
+/* dark mode */
+html.dark table {
+  @apply border border-b-0 border-r-0 border-slate-700;
+}
+
+html.dark table tr td,
+html.dark table tr th {
+  @apply border border-l-0 border-t-0 border-slate-700;
+}
diff --git a/src/styles/tailwind.css b/src/styles/tailwind.css
index ed8306b..6fdb738 100644
--- a/src/styles/tailwind.css
+++ b/src/styles/tailwind.css
@@ -4,3 +4,6 @@
 @import './prism.css';
 @import 'tailwindcss/components';
 @import 'tailwindcss/utilities';
+@import './table.css';
+
+
