diff --git a/package-lock.json b/package-lock.json
index 88c112d09..84165fc84 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -1458,6 +1458,10 @@
       "resolved": "packages/swell",
       "link": true
     },
+    "node_modules/@vercel/commerce-vendure": {
+      "resolved": "packages/vendure",
+      "link": true
+    },
     "node_modules/@vercel/fetch": {
       "version": "6.1.1",
       "resolved": "https://registry.npmjs.org/@vercel/fetch/-/fetch-6.1.1.tgz",
@@ -9975,6 +9979,42 @@
         "node": ">=4.2.0"
       }
     },
+    "packages/vendure": {
+      "version": "0.0.1",
+      "license": "MIT",
+      "dependencies": {
+        "@vercel/commerce": "^0.0.1",
+        "@vercel/fetch": "^6.1.1"
+      },
+      "devDependencies": {
+        "@types/node": "^15.12.4",
+        "@types/react": "^17.0.8",
+        "lint-staged": "^12.1.7",
+        "next": "^12.0.3",
+        "prettier": "^2.5.1",
+        "react": "^17.0.2",
+        "react-dom": "^17.0.2",
+        "typescript": "^4.6.0-dev.20220108"
+      },
+      "peerDependencies": {
+        "next": "^12",
+        "react": "^17",
+        "react-dom": "^17"
+      }
+    },
+    "packages/vendure/node_modules/typescript": {
+      "version": "4.6.0-dev.20220114",
+      "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.0-dev.20220114.tgz",
+      "integrity": "sha512-WcHfPkRCvsoV3BozLL1T8Eb7VPlsoA6yyRLFxoR1zVOyUdILHGL9GzXG5e2yzMCg4rQBTkTYZmkXTBZUwO5ONA==",
+      "dev": true,
+      "bin": {
+        "tsc": "bin/tsc",
+        "tsserver": "bin/tsserver"
+      },
+      "engines": {
+        "node": ">=4.2.0"
+      }
+    },
     "site": {
       "name": "next-commerce",
       "version": "0.0.1",
@@ -11343,6 +11383,29 @@
         }
       }
     },
+    "@vercel/commerce-vendure": {
+      "version": "file:packages/vendure",
+      "requires": {
+        "@types/node": "^15.12.4",
+        "@types/react": "^17.0.8",
+        "@vercel/commerce": "^0.0.1",
+        "@vercel/fetch": "^6.1.1",
+        "lint-staged": "^12.1.7",
+        "next": "^12.0.3",
+        "prettier": "^2.5.1",
+        "react": "^17.0.2",
+        "react-dom": "^17.0.2",
+        "typescript": "^4.6.0-dev.20220108"
+      },
+      "dependencies": {
+        "typescript": {
+          "version": "4.6.0-dev.20220114",
+          "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.0-dev.20220114.tgz",
+          "integrity": "sha512-WcHfPkRCvsoV3BozLL1T8Eb7VPlsoA6yyRLFxoR1zVOyUdILHGL9GzXG5e2yzMCg4rQBTkTYZmkXTBZUwO5ONA==",
+          "dev": true
+        }
+      }
+    },
     "@vercel/fetch": {
       "version": "6.1.1",
       "resolved": "https://registry.npmjs.org/@vercel/fetch/-/fetch-6.1.1.tgz",
diff --git a/packages/vendure/package.json b/packages/vendure/package.json
new file mode 100644
index 000000000..93fe1bbc6
--- /dev/null
+++ b/packages/vendure/package.json
@@ -0,0 +1,73 @@
+{
+  "name": "@vercel/commerce-vendure",
+  "version": "0.0.1",
+  "license": "MIT",
+  "scripts": {
+    "build": "rm -fr dist/* && tsc",
+    "dev": "npm run build -- --watch",
+    "prettier-fix": "prettier --write ."
+  },
+  "sideEffects": false,
+  "type": "module",
+  "exports": {
+    ".": "./dist/index.js",
+    "./*": [
+      "./dist/*.js",
+      "./dist/*/index.js"
+    ],
+    "./next.config": "./dist/next.config.cjs"
+  },
+  "typesVersions": {
+    "*": {
+      "*": [
+        "dist/*",
+        "dist/*/index"
+      ],
+      "next.config": [
+        "dist/next.config.d.cts"
+      ]
+    }
+  },
+  "files": [
+    "dist",
+    "schema.d.ts"
+  ],
+  "publishConfig": {
+    "typesVersions": {
+      "*": {
+        "*": [
+          "src/*.d.ts",
+          "src/*/index.d.ts"
+        ],
+        "next.config": [
+          "dist/next.config.d.cts"
+        ]
+      }
+    }
+  },
+  "dependencies": {
+    "@vercel/commerce": "^0.0.1",
+    "@vercel/fetch": "^6.1.1"
+  },
+  "peerDependencies": {
+    "next": "^12",
+    "react": "^17",
+    "react-dom": "^17"
+  },
+  "devDependencies": {
+    "@types/node": "^15.12.4",
+    "@types/react": "^17.0.8",
+    "lint-staged": "^12.1.7",
+    "next": "^12.0.3",
+    "prettier": "^2.5.1",
+    "react": "^17.0.2",
+    "react-dom": "^17.0.2",
+    "typescript": "^4.6.0-dev.20220108"
+  },
+  "lint-staged": {
+    "**/*.{js,jsx,ts,tsx,json}": [
+      "prettier --write",
+      "git add"
+    ]
+  }
+}
diff --git a/packages/vendure/src/api/index.ts b/packages/vendure/src/api/index.ts
index 393752710..cbe56be56 100644
--- a/packages/vendure/src/api/index.ts
+++ b/packages/vendure/src/api/index.ts
@@ -1,4 +1,4 @@
-import type { APIProvider, CommerceAPIConfig } from '@vercel/commerce/api'
+import type { CommerceAPIConfig } from '@vercel/commerce/api'
 import {
   CommerceAPI,
   getCommerceApi as commerceApi,
diff --git a/packages/vendure/src/api/operations/get-all-pages.ts b/packages/vendure/src/api/operations/get-all-pages.ts
index 86975788e..7865cf908 100644
--- a/packages/vendure/src/api/operations/get-all-pages.ts
+++ b/packages/vendure/src/api/operations/get-all-pages.ts
@@ -1,6 +1,6 @@
 import { VendureConfig } from '../'
 import { OperationContext } from '@vercel/commerce/api/operations'
-import { Provider } from '../../../bigcommerce/api'
+import { Provider } from '../'
 
 export type Page = any
 
diff --git a/packages/vendure/src/api/operations/get-all-product-paths.ts b/packages/vendure/src/api/operations/get-all-product-paths.ts
index 97434202f..bdb47974f 100644
--- a/packages/vendure/src/api/operations/get-all-product-paths.ts
+++ b/packages/vendure/src/api/operations/get-all-product-paths.ts
@@ -6,7 +6,7 @@ import type { GetAllProductPathsQuery } from '../../../schema'
 import { Provider } from '../index'
 import { getAllProductPathsQuery } from '../../utils/queries/get-all-product-paths-query'
 import { GetAllProductPathsOperation } from '@vercel/commerce/types/product'
-import { BigcommerceConfig } from '../../../bigcommerce/api'
+import { VendureConfig } from '../'
 
 export type GetAllProductPathsResult = {
   products: Array<{ node: { path: string } }>
@@ -19,13 +19,13 @@ export default function getAllProductPathsOperation({
     T extends GetAllProductPathsOperation
   >(opts?: {
     variables?: T['variables']
-    config?: BigcommerceConfig
+    config?: VendureConfig
   }): Promise<T['data']>
 
   async function getAllProductPaths<T extends GetAllProductPathsOperation>(
     opts: {
       variables?: T['variables']
-      config?: BigcommerceConfig
+      config?: VendureConfig
     } & OperationOptions
   ): Promise<T['data']>
 
@@ -36,7 +36,7 @@ export default function getAllProductPathsOperation({
   }: {
     query?: string
     variables?: T['variables']
-    config?: BigcommerceConfig
+    config?: VendureConfig
   } = {}): Promise<T['data']> {
     const config = commerce.getConfig(cfg)
     // RecursivePartial forces the method to check for every prop in the data, which is
diff --git a/packages/vendure/tsconfig.json b/packages/vendure/tsconfig.json
new file mode 100644
index 000000000..81ac7f650
--- /dev/null
+++ b/packages/vendure/tsconfig.json
@@ -0,0 +1,22 @@
+{
+  "compilerOptions": {
+    "target": "esnext",
+    "module": "esnext",
+    "outDir": "dist",
+    "baseUrl": "src",
+    "lib": ["dom", "dom.iterable", "esnext"],
+    "declaration": true,
+    "allowJs": true,
+    "skipLibCheck": true,
+    "strict": true,
+    "forceConsistentCasingInFileNames": true,
+    "esModuleInterop": true,
+    "moduleResolution": "node",
+    "resolveJsonModule": true,
+    "isolatedModules": true,
+    "pretty": true,
+    "jsx": "react-jsx"
+  },
+  "include": ["src"],
+  "exclude": ["node_modules", "dist"]
+}