Initial setup
- Node.js (version 18.17+): This starter requires a newer version of Node than Webflow apps typically require due to its reliance on Next.js.
- A test-ready Webflow site.
- A Webflow app. For setup instructions, see Step 1 of this tutorial.
- Ngrok or a similar URL forwarding service for development. For setup details, consult Step 3 of this tutorial.
- Clone the repository using the following command in your terminal:
git clone https://github.com/lunchpaillola/webflow-hybrid-app-starter.git- Navigate to the project directory and install dependencies
cd webflow-hybrid-app-starter
npm install- Install the necessary packages in the data-client directory
// Navigate to /data-client and install dependencies
cd data-client
npm install- Install the necessary packages in the designer-extension directory
// Navigate to /designer-extension and install dependencies
cd ../designer-extension
npm install- Copy the
.env.examplefile to.env.localin both thedata-clientanddesigner-extensiondirectories. Update the environment variables with your CLIENT_ID, CLIENT_SECRET, and backend URL.

How does it work?
page.js file, located within the \login folder of the \data-client directory (link to page.js file)
webflow-redirect file located in the \data-client directory (link to webflow-redirect.jsx ).
page.js in the /data-client directory (link to page.js file).
page.tsx within the /designer-extension directory. (link to page.tsx file)
Project structure
Name | Purpose |
package.json | Holds project metadata and manages the list of dependencies and scripts. |
data-client | Contains backend logic interfacing with Webflow's API and other services. |
designer-extension | Holds the files for a browser extension to enhance the Webflow design experience. |
Data client directory
data-client directory. While you might need to modify several files, prioritize the ones marked with a ✎ pencil icon for app customization.File | Purpose |
✎ .env.example | Contains environment variable templates and sample values for initial setup. |
✎ /components | Holds components for the app |
✎ /app | The main area for application building, including login and API routes. |
/utils | Stores utility scripts such as webflow_helper.js for Webflow authorization. Add additional utilities here as required. |
package.json | Holds project metadata and manages the list of dependencies and scripts. |
middleware.js | Retrieves an access token from Webflow; redirects to log in if missing. |
/public | Stores logos and other public-facing assets. |
/app directory is where the bulk of customization happens, from altering styles to modifying functionality or adding new API routes.Name | Purpose |
✎ globals.css | Modify the data client’s styling here. |
✎ page.js | Customizes the startup view for logged-in users. |
✎ /webflow_redirect | Manages the redirection to Webflow. |
✎ /login | Customizes the startup view and branding/styling for logged-out users. |
✎ /api | Handles interactions with third-party apps and Webflow's REST APIs. |
layout.js | Sets the globally shared UI within the data client |
Designer extension directory
Name | Purpose |
✎ webflow.json | Defines your extension metadata and sets the display size options: default, comfortable, and large. |
✎ /src/app | The core of the extension where components, icons, and single-page app logic are unified. |
✎ .env.example | Contains environment variable templates and sample values for the initial setup. |
package.json | Holds project metadata and manages the list of dependencies and scripts. |
/public | Stores logos and other public-facing assets. |
/src/app directory is where you'll build the core logic for the single-page application within the extension. Users see and interact with the page.tsx, making it the central file for the extension's user interfaceName | Purpose |
✎ page.tsx | Customizes the extension's interface and functionality. |
✎ /types | Stores any necessary types for files in the /designer-extension |
✎ /components | Hosts components useful for organizing and managing distinct screens in the page.tsx |
globals.css | Modify the designer extensions styling here. |
/icons | Contains all the icon assets for the extension. |
layout.tsx | Sets the globally shared UI within the extension |
.png?table=block&id=9ba33ac6-8e12-48f6-b980-4333b612ec56&cache=v2)