Giter Club home page Giter Club logo

typebot.io's Introduction


Typebot illustration Typebot illustration


Typebot is an open-source chatbot builder. It allows you to create advanced chatbots visually, embed them anywhere on your web/mobile apps, and collect results in real-time

Github Stars Commits per month License Uptime Report a bug Ask a question Ask a question Ask a question

Try Typebot โ€ข Docs

Builder demo

demo.mp4

Features

Typebot makes it easy to create advanced chatbots. It provides the building block that are adaptable to any business use case. I improve Typebot regularly with bug fixes, new features, and performance improvements regularly.

Chat builder with 34+ building blocks such as:

  • ๐Ÿ’ฌ Bubbles: Text, Image / GIF, video, audio, embed.
  • ๐Ÿ”ค Inputs: Text, email, phone number, buttons, picture choice, date picker, payment (Stripe), file picker... inputs
  • ๐Ÿง  Logic: Conditional branching, URL redirections, scripting (Javascript), A/B testing
  • ๐Ÿ”Œ Integrations: Webhook / HTTP requests, OpenAI, Google Sheets, Google Analytics, Meta Pixel, Zapier, Make.com, Chatwoot, More to come...

Theme your chatbot to match your brand identity:

  • ๐ŸŽจ Customize the fonts, background, colors, roundness, shadows, and more
  • ๐Ÿ’ช Advanced theming with custom CSS.
  • ๐Ÿ’พ Reusable theme templates

Share your typebot anywhere:

  • ๐Ÿ”— Custom domain
  • ๐Ÿ‘จโ€๐Ÿ’ป Embed as a container, popup, or chat bubble easily with the native JS library.
  • โšก Blazing fast embed lib. No iframe, no external dependencies, no performance impact.
  • ๐Ÿ’ป Executable with HTTP requests

Collect your Results and get insights:

  • ๐Ÿ“Š In-depth analytics with drop-off rates, completion rates, and more
  • ๐Ÿ“ฅ Export results to CSV

Built for developers:

  • ๐Ÿ”“ No vendor-locking. Features built with flexibility in mind.
  • ๐Ÿ’ป Easy-to-use APIs.

Getting started with Typebot

The easiest way to get started with Typebot is with the official managed service in the Cloud. You'll have high availability, backups, security, and maintenance all managed for you by me, Baptiste, Typebot's founder.

The cloud version can save a substantial amount of developer time and resources. For most sites this ends up being the best value option and the revenue goes to funding the maintenance and further development of Typebot. So youโ€™ll be supporting open source software and getting a great service! ๐Ÿ’™

Support & Community

You'll find a lot of resources to help you get started with Typebot in the documentation.

Self-hosting

Interested in self-hosting Typebot on your server? Take a look at the self-hosting installation instructions.

How to Contribute

You are awesome, lets build great software together. Head over to the Contribute docs to get started. ๐Ÿ’ช

Run the project locally

Follow the Local installation section of in the Contributing docs.

Top contributors

Made with contrib.rocks.

License

Typebot is open-source under the GNU Affero General Public License Version 3 (AGPLv3). You will find more information about the license and how to comply with it here.

typebot.io's People

Contributors

abdullahbaa5 avatar abedef avatar adrianschubek avatar altomarketing avatar baptistearno avatar c0bra avatar clairton avatar cptplastic avatar dciccale avatar denerfernandes avatar dhanielo avatar dkashikar avatar eltociear avatar emmet-v15 avatar ezynda3 avatar gabrielgpavao avatar gadonski avatar ibnsultan avatar itzomen avatar jorgelig avatar jsonsmth avatar lanhild avatar laurin-wolf avatar lucasdemoraesc avatar mdxdave avatar nebulade avatar prateekkalra avatar rishi-raj-jain avatar samscx avatar thercd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

typebot.io's Issues

Latest build - Error importing typbot json files created pre-v2.1.0

Are we able to create new Typebots in the latest build by importing typebot json files that were exported from v.2.0? I am trying and receiving an error. Is this because the concept of ownerIds is gone?

builder_1  | PrismaClientValidationError: Unknown arg `ownerId` in data.ownerId for type TypebotUncheckedCreateInput. Did you mean `folderId`?
builder_1  |
builder_1  |     at Object.validate (/app/node_modules/@prisma/client/runtime/index.js:44201:20)
builder_1  |     at PrismaClient._executeRequest (/app/node_modules/@prisma/client/runtime/index.js:46354:17)
builder_1  |     at consumer (/app/node_modules/@prisma/client/runtime/index.js:46298:23)
builder_1  |     at /app/node_modules/@prisma/client/runtime/index.js:46302:76
builder_1  |     at runInChildSpan (/app/node_modules/@prisma/client/runtime/index.js:45510:12)
builder_1  |     at /app/node_modules/@prisma/client/runtime/index.js:46302:20
builder_1  |     at AsyncResource.runInAsyncScope (node:async_hooks:202:9)
builder_1  |     at PrismaClient._request (/app/node_modules/@prisma/client/runtime/index.js:46301:86)
builder_1  |     at /app/node_modules/@prisma/client/runtime/index.js:42862:25
builder_1  |     at _callback (/app/node_modules/@prisma/client/runtime/index.js:42626:52) {
builder_1  |   clientVersion: '3.14.0'
builder_1  | }

How to make Google (Auth, Sheets, Fonts) working?

I follow this doc.
Apply scopes (userinfo.email, spreadsheets, drive.readonly) in my console.
There are two question๏ผš

  1. If ask spreadsheets, drive.readonly, we need to apply verification.
    How to deal with "Provide users a link to your public privacy policy" and "Provide users a link to your public terms of service"?
  2. I use userinfo.email only, and key in the NEXT_PUBLIC_GOOGLE_CLIENT_ID and GOOGLE_CLIENT_SECRET. But it don't work.
    Here is my env
    image

Problem to deploy typebot

Hello,
First of all, thank you very much for this magnificent project, I wanted to test the container and I have a problem when doing the build with the instructions you have on the web.

This is the error that appears:

 ---> 009c48d6ae15
Step 25/34 : COPY --from=installer /app/node_modules ./node_modules
 ---> Using cache
 ---> 97fcfebd7006
Step 26/34 : COPY --from=builder /app/apps/${SCOPE}/next.config.js ./
 ---> Using cache
 ---> e40aca1d3eb4
Step 27/34 : COPY --from=builder /app/apps/${SCOPE}/public ./public
COPY failed: stat /var/lib/docker/overlay2/c7699c0820fa226c875232cda7ed5f876bcf0ab974eaa6677c7a42384e441063/merged/app/apps/viewer/public: no such file or directory
ERROR: Service 'typebot_viewer' failed to build : Build failed

...

Greetings,

Gitlab user groups pagination

We just noticed that the GitLab API applies pagination onto the groups we request to verify if the user has one of the the required groups. By default, we only get 20 items.
To reliably retrieve all items, we have to implement iterating the pagination.

@baptisteArno Do you think we should somehow move this into a new module and/or use a npm package like gitbeaker to retrieve the information?

Docker Method Fails on DigitalOcean

Trying with default configuration.

root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~# git clone https://github.com/baptistearno/typebot.io.git
Cloning into 'typebot.io'...
remote: Enumerating objects: 9813, done.
remote: Counting objects: 100% (9542/9542), done.
remote: Compressing objects: 100% (5883/5883), done.
remote: Total 9813 (delta 6029), reused 6703 (delta 3222), pack-reused 271
Receiving objects: 100% (9813/9813), 68.05 MiB | 10.62 MiB/s, done.
Resolving deltas: 100% (6115/6115), done.
root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~# cd typebot.io/
root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~/typebot.io# cp apps/builder/.env.production.example apps/builder/.env.production
root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~/typebot.io# cp apps/viewer/.env.production.example apps/viewer/.env.production
root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~/typebot.io# nano apps/builder/.env.production
root@docker-ubuntu-s-1vcpu-1gb-amd-blr1-01:~/typebot.io# docker-compose up -d
Creating network "typebotio_default" with the default driver
Creating volume "typebotio_db_data" with default driver
Creating volume "typebotio_s3_data" with default driver
Pulling db (postgres:13)...
13: Pulling from library/postgres
c229119241af: Pull complete
3ff4ca332580: Pull complete
5037f3c12de6: Pull complete
0444ef779945: Pull complete
47098a4166e7: Pull complete
203cca980fab: Pull complete
a479b6c0e001: Pull complete
1eaa9abe8ca4: Pull complete
113f50383ee6: Pull complete
2abdc4f6d216: Pull complete
208ab7ebe2d3: Pull complete
0695aa3abf50: Pull complete
ba6456490b54: Pull complete
Digest: sha256:43568014f86275fd51992b9c8a6cf528d3acb6da8bcabfac04ed5abecb56a1c1
Status: Downloaded newer image for postgres:13
Building builder
Step 1/32 : FROM node:16-slim AS base
16-slim: Pulling from library/node
f003217c5aae: Pull complete
e4c439747d16: Pull complete
28da4e420fe1: Pull complete
1c9c1c76f271: Pull complete
9c3fa31ad448: Pull complete
Digest: sha256:9b43cdacd070d1b38976a804aec78f03139c600865a3c72501af3bbec8d4bdee
Status: Downloaded newer image for node:16-slim
 ---> d42cb3d451c4
Step 2/32 : WORKDIR /app
 ---> Running in 1f77c3bb7516
Removing intermediate container 1f77c3bb7516
 ---> 1d5944067c38
Step 3/32 : ARG SCOPE
 ---> Running in b079eac5e6cf
Removing intermediate container b079eac5e6cf
 ---> 3a2780c97405
Step 4/32 : ENV SCOPE=${SCOPE}
 ---> Running in 85733f6e3c76
Removing intermediate container 85733f6e3c76
 ---> b8593dcabcd6

Step 5/32 : FROM base AS pruner
 ---> b8593dcabcd6
Step 6/32 : RUN yarn global add [email protected]
 ---> Running in ddcb1c10ace1
yarn global v1.22.18
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - turbo
Done in 8.72s.
Removing intermediate container ddcb1c10ace1
 ---> ca1b0d965ab5
Step 7/32 : COPY . .
 ---> b23e27771637
Step 8/32 : RUN turbo prune --scope=${SCOPE} --docker
 ---> Running in c6382f20960d
Generating pruned monorepo for builder in /app/out
 - Added builder
 - Added bot-engine
 - Added typebot-js
 - Added utils
 - Added models
 - Added db
Removing intermediate container c6382f20960d
 ---> 1a5097bfd327

Step 9/32 : FROM base AS installer
 ---> b8593dcabcd6
Step 10/32 : COPY --from=pruner /app/out/json/ .
 ---> 77de9c165d8e
Step 11/32 : COPY --from=pruner /app/out/yarn.lock ./yarn.lock
 ---> 5963f4765151
Step 12/32 : RUN yarn install --frozen-lockfile
 ---> Running in 1074431d988e
yarn install v1.22.18
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > [email protected]" has unmet peer dependency "react@^17.0.2".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "prop-types@^15.5.9".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react@>= 16.3".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react-dom@>= 16.3".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react@>=0.16.8".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react-dom@>=0.16.8".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react@^15.5.4 || ^16.0.0 || ^17.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react-dom@^15.5.4 || ^16.0.0 || ^17.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react@>=16.6.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "react-dom@>=16.6.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > @typescript-eslint/[email protected]" has unmet peer dependency "@typescript-eslint/parser@^5.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "next@>=10.2.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > bot-engine > [email protected]" has unmet peer dependency "prettier@>=2.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > db > [email protected]" has unmet peer dependency "@types/node@*".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > models > [email protected]" has unmet peer dependency "react@^17.0.2 || ^18.0.0-0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > models > [email protected]" has unmet peer dependency "react-dom@^17.0.2 || ^18.0.0-0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > typebot-js > [email protected]" has incorrect peer dependency "eslint@^8.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > typebot-js > [email protected]" has unmet peer dependency "webpack@^5.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > builder > [email protected]" has unmet peer dependency "react-is@>= 16.8.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > models > next > [email protected]" has unmet peer dependency "react@>= 16.8.0 || 17.x.x || ^18.0.0-0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > builder > @emotion/react > @emotion/[email protected]" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > builder > @udecode/plate-ui-link > @udecode/[email protected]" has unmet peer dependency "react-is@>=16.8.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > builder > @udecode/plate-ui-toolbar > [email protected]" has unmet peer dependency "@popperjs/core@^2.0.0".
warning "workspace-aggregator-9a4fd5e2-4e18-4d8b-b2d4-73d0918f1107 > builder > @emotion/react > @emotion/babel-plugin > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
[4/4] Building fresh packages...
Done in 103.38s.
Removing intermediate container 1074431d988e
 ---> 4691d8b171c1

Step 13/32 : FROM base AS builder
 ---> b8593dcabcd6
Step 14/32 : COPY --from=installer /app/ .
 ---> 972de4241f15
Step 15/32 : COPY --from=pruner /app/out/full/ .
 ---> 4d51e4d3c626
Step 16/32 : RUN apt-get -qy update && apt-get -qy install openssl
 ---> Running in 03204f889a58
Get:1 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:2 http://deb.debian.org/debian buster InRelease [122 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [317 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7911 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [8796 B]
Fetched 8476 kB in 2s (4281 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
  lsb-base
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  libssl1.1
Suggested packages:
  ca-certificates
The following NEW packages will be installed:
  libssl1.1 openssl
0 upgraded, 2 newly installed, 0 to remove and 1 not upgraded.
Need to get 2409 kB of archives.
After this operation, 5701 kB of additional disk space will be used.
Get:1 http://deb.debian.org/debian buster/main amd64 libssl1.1 amd64 1.1.1n-0+deb10u1 [1551 kB]
Get:2 http://deb.debian.org/debian buster/main amd64 openssl amd64 1.1.1n-0+deb10u1 [858 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 2409 kB in 0s (24.1 MB/s)
Selecting previously unselected package libssl1.1:amd64.
(Reading database ... 6469 files and directories currently installed.)
Preparing to unpack .../libssl1.1_1.1.1n-0+deb10u1_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.1n-0+deb10u1) ...
Selecting previously unselected package openssl.
Preparing to unpack .../openssl_1.1.1n-0+deb10u1_amd64.deb ...
Unpacking openssl (1.1.1n-0+deb10u1) ...
Setting up libssl1.1:amd64 (1.1.1n-0+deb10u1) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up openssl (1.1.1n-0+deb10u1) ...
Processing triggers for libc-bin (2.28-10+deb10u1) ...
Removing intermediate container 03204f889a58
 ---> cf4f983394d0
Step 17/32 : RUN yarn turbo run build --scope=${SCOPE} --include-dependencies --no-deps
 ---> Running in 9443e4b3f630
yarn run v1.22.18
$ /app/node_modules/.bin/turbo run build --scope=builder --include-dependencies --no-deps
 WARNING  cannot find a .git folder. Falling back to manual file hashing (which may be slower). If you are running this build in a pruned directory, you can ignore this message. Otherwise, please initialize a git repository in the root of your monorepo
โ€ข Packages in scope: bot-engine, builder, db, models, typebot-js, utils
โ€ข Running build in 6 packages
db:build: cache miss, executing 4808ef785abb2077
typebot-js:build: cache miss, executing 0bdac022b8336612
db:build: $ yarn generate:schema
typebot-js:build: $ yarn lint && rollup -c
db:build: $ dotenv -e ../../apps/builder/.env.local prisma generate
typebot-js:build: $ eslint src --ext .ts && eslint tests --ext .ts
db:build: Prisma schema loaded from prisma/schema.prisma
typebot-js:build:
typebot-js:build: src/index.ts โ†’ dist/index.js...
db:build:
db:build: โœ” Generated Prisma Client (3.11.1 | library) to ./../../node_modules/@prisma/client in 945ms
db:build: You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client
db:build: ```
db:build: import { PrismaClient } from '@prisma/client'
db:build: const prisma = new PrismaClient()
db:build: ```
models:build: cache miss, executing abbd76e27f6ede95
models:build: $ tsc
typebot-js:build: (!) Circular dependency
typebot-js:build: src/embedTypes/chat/index.ts -> src/embedTypes/chat/proactiveMessage.ts -> src/embedTypes/chat/index.ts
typebot-js:build: created dist/index.js in 26.4s
typebot-js:build:
typebot-js:build: src/index.ts โ†’ dist/index.umd.min.js...
utils:build: cache miss, executing 9312fca632cf7550
utils:build: $ yarn rollup -c
utils:build: $ /app/node_modules/.bin/rollup -c
utils:build:
utils:build: src/index.ts โ†’ dist/cjs/index.js, dist/esm/index.js...
typebot-js:build: Killed
typebot-js:build: error Command failed with exit code 137.
typebot-js:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
typebot-js:build: Error: command finished with error: command (packages/typebot-js) yarn run build exited (137)
bot-engine:build: cache miss, executing ab42e8c7c759dab3
command (packages/typebot-js) yarn run build exited (137)

 Tasks:    2 successful, 3 total
Cached:    0 cached, 3 total
  Time:    4m22.19s

error Command failed with exit code 137.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
ERROR: Service 'builder' failed to build : The command '/bin/sh -c yarn turbo run build --scope=${SCOPE} --include-dependencies --no-deps' returned a non-zero code: 137

Docker version 20.10.14, build a224086
Ubuntu 20.04.4 LTS

webhook error with linked Typebot flows

We have created two Typebot flows (Flow 1 & Flow 2), each containing a webhook. We have linked the end of Flow 1 to the start of Flow 2 using Logic->Typebot (Jump to).

The webhook in Flow 1 fires correctly.

After Flow 2 begins, there is an error (below), and the webhook in Flow 2 does not fire:

viewer:dx: error - (api)/pages/api/typebots/[typebotId]/blocks/[blockId]/steps/[stepId]/executeWebhook.ts (41:25) @ handler
viewer:dx: TypeError: Cannot read properties of null (reading 'blocks')
viewer:dx:   39 |       include: { webhooks: true },
viewer:dx:   40 |     })) as unknown as Typebot & { webhooks: Webhook[] }
viewer:dx: > 41 |     const step = typebot.blocks
viewer:dx:      |                         ^
viewer:dx:   42 |       .find(byId(blockId))
viewer:dx:   43 |       ?.steps.find(byId(stepId)) as WebhookStep
viewer:dx:   44 |     const webhook = typebot.webhooks.find(byId(step.webhookId))

Seems related to #13

Media storage - local storage

I am plying with Typebot now that I was finally able to install it properly

I saw that in order to upload your own images, you have to configure some S3 like storage

Would it be possible to use server local storage for media uploads, instead of S3 compatible storage?

Issue with webhooks and looping (Jump to) logic

Given a simple Typebot flow using a webhook, there is an issue with multiple executions of the webhook when using the Logic->Typebot "Jump to" functionality. I believe this have been introduced with recent commits in the past few days. The webhook executes successfully on the first iteration of the loop, but fails on the second. Here is the logic of the flow:

flowchart LR
A[Start] -->B(Inputs->Number)-->|Assign variable| C(Integrations->Webhook)
C --> D{Webhook return = variable?}
D -->|Yes| E[Output Text]
D -->|No| F[Logic->Typebot]  --> |Goto beginning|B

The following error is observed in a local dev environment. This occurs on the second execution of the webhook:

viewer:dx: error - (api)/pages/api/typebots/[typebotId]/blocks/[blockId]/steps/[stepId]/executeWebhook.ts (41:25) @ handler
viewer:dx: TypeError: Cannot read properties of null (reading 'blocks')
viewer:dx:   39 |       include: { webhooks: true },
viewer:dx:   40 |     })) as unknown as Typebot & { webhooks: Webhook[] }
viewer:dx: > 41 |     const step = typebot.blocks
viewer:dx:      |                         ^
viewer:dx:   42 |       .find(byId(blockId))
viewer:dx:   43 |       ?.steps.find(byId(stepId)) as WebhookStep
viewer:dx:   44 |     const webhook = typebot.webhooks.find(byId(step.webhookId))

Screenshot of the error in browser. This occurs on the second execution of the webhook:

Screen Shot 2022-04-02 at 9 38 49 AM

Flow Details:

Here is the flow json (I noticed the webhook parameters are not included in the Flow export data, but you can mock up a webhook). Here are the webhook details pulled from the Prisma Studio:

URL: https://webhook.site/2e1f1876-15f4-4a83-afe2-db80f3bf1daf
Method: POST
Headers:

{"id":"cl1hvkqq2000x2a6jlnor9voe","key":"content-type","value":"application/json"}

Body:

{"housekey":"{{number_input}}"}

Flow Export from Typebot:

{
   "id":"cl1hvjc0u345008ecik9ci9wt",
   "createdAt":"2022-04-02T13:12:03.486Z",
   "updatedAt":"2022-04-02T13:16:57.253Z",
   "icon":null,
   "name":"My typebot",
   "ownerId":"cl1fg7mwz0000btec41qrbs4r",
   "publishedTypebotId":"cl1hvn6bu00182a6joflinsmj",
   "folderId":null,
   "blocks":[
      {
         "id":"cl1hvjc0r000008ec2phufmie",
         "steps":[
            {
               "id":"cl1hvjc0s000108ecer136u9m",
               "type":"start",
               "label":"Start",
               "blockId":"cl1hvjc0r000008ec2phufmie",
               "outgoingEdgeId":"cl1hvk62x000t2a6jkugb12q0"
            }
         ],
         "title":"Start",
         "graphCoordinates":{
            "x":0,
            "y":0
         }
      },
      {
         "id":"cl1hvjf35000q2a6j04dt3mmg",
         "steps":[
            {
               "id":"cl1hvjf3a000r2a6j1lfsbl2i",
               "type":"text input",
               "blockId":"cl1hvjf35000q2a6j04dt3mmg",
               "options":{
                  "isLong":false,
                  "labels":{
                     "button":"Send",
                     "placeholder":"Type your answer..."
                  },
                  "variableId":"vcl1hvk38d000s2a6jm2v8mmtp"
               },
               "outgoingEdgeId":"cl1hvlrz900102a6j3nsl151h"
            }
         ],
         "title":"Enter Number",
         "graphCoordinates":{
            "x":-1,
            "y":223
         }
      },
      {
         "id":"cl1hvk8pu000u2a6jxf5jiyvo",
         "steps":[
            {
               "id":"cl1hvk8q1000v2a6jwtlnqs3o",
               "type":"Webhook",
               "blockId":"cl1hvk8pu000u2a6jxf5jiyvo",
               "options":{
                  "isCustomBody":true,
                  "isAdvancedConfig":true,
                  "variablesForTest":[
                     
                  ],
                  "responseVariableMapping":[
                     {
                        "id":"cl1hvlh3j000y2a6j1t68j274",
                        "bodyPath":"data.housekey",
                        "variableId":"vcl1hvlojl000z2a6jd992tjfv"
                     }
                  ]
               },
               "webhookId":"cl1hvk8q1000w2a6jxqokbbux",
               "outgoingEdgeId":"cl1hvnmpl001b2a6jdf5bsh22"
            }
         ],
         "title":"Call Webhook",
         "graphCoordinates":{
            "x":9,
            "y":448
         }
      },
      {
         "id":"cl1hvlybv00112a6jz5qj784l",
         "steps":[
            {
               "id":"cl1hvlyc600122a6jbt931nsd",
               "type":"Condition",
               "items":[
                  {
                     "id":"cl1hvlyc600132a6jzk42y1yk",
                     "type":1,
                     "stepId":"cl1hvlyc600122a6jbt931nsd",
                     "content":{
                        "comparisons":[
                           {
                              "id":"cl1hvm0mb00142a6jolt8f13i",
                              "value":"555",
                              "variableId":"vcl1hvlojl000z2a6jd992tjfv",
                              "comparisonOperator":"Not equal"
                           }
                        ],
                        "logicalOperator":"AND"
                     },
                     "outgoingEdgeId":"cl1hvoxav001k2a6jmk4b39cy"
                  }
               ],
               "blockId":"cl1hvlybv00112a6jz5qj784l",
               "outgoingEdgeId":"cl1hvpag1001n2a6jmqfczjam"
            }
         ],
         "title":"Compare return value",
         "graphCoordinates":{
            "x":16,
            "y":689
         }
      },
      {
         "id":"cl1hvmjyk00152a6j2d6b4nja",
         "steps":[
            {
               "id":"cl1hvmjyv00162a6jn16ynsmm",
               "type":"Typebot link",
               "blockId":"cl1hvmjyk00152a6j2d6b4nja",
               "options":{
                  "blockId":"cl1hvjf35000q2a6j04dt3mmg",
                  "typebotId":"current"
               }
            }
         ],
         "title":"Return to start",
         "graphCoordinates":{
            "x":451,
            "y":445
         }
      },
      {
         "id":"cl1hvoeif001h2a6j0xkgpahk",
         "graphCoordinates":{
            "x":450,
            "y":215
         },
         "title":"Incorrect Number",
         "steps":[
            {
               "id":"cl1hvoeiu001i2a6jdlotxzg7",
               "blockId":"cl1hvoeif001h2a6j0xkgpahk",
               "type":"text",
               "content":{
                  "html":"<div>Incorrect number! Try again.</div>",
                  "richText":[
                     {
                        "type":"p",
                        "children":[
                           {
                              "text":"Incorrect number! Try again."
                           }
                        ]
                     }
                  ],
                  "plainText":"Incorrect number! Try again."
               },
               "outgoingEdgeId":"cl1hvouig001j2a6jt9aanm3n"
            }
         ]
      },
      {
         "id":"cl1hvp0c9001l2a6je4k5gk3y",
         "graphCoordinates":{
            "x":455,
            "y":797
         },
         "title":"Correct number",
         "steps":[
            {
               "id":"cl1hvp0co001m2a6j93f4dl8g",
               "blockId":"cl1hvp0c9001l2a6je4k5gk3y",
               "type":"text",
               "content":{
                  "html":"<div>The number is correct!</div>",
                  "richText":[
                     {
                        "type":"p",
                        "children":[
                           {
                              "text":"The number is correct!"
                           }
                        ]
                     }
                  ],
                  "plainText":"The number is correct!"
               }
            }
         ]
      }
   ],
   "variables":[
      {
         "id":"vcl1hvk38d000s2a6jm2v8mmtp",
         "name":"number_input"
      },
      {
         "id":"vcl1hvlojl000z2a6jd992tjfv",
         "name":"housekey_returned"
      }
   ],
   "edges":[
      {
         "id":"cl1hvk62x000t2a6jkugb12q0",
         "to":{
            "blockId":"cl1hvjf35000q2a6j04dt3mmg"
         },
         "from":{
            "stepId":"cl1hvjc0s000108ecer136u9m",
            "blockId":"cl1hvjc0r000008ec2phufmie"
         }
      },
      {
         "id":"cl1hvlrz900102a6j3nsl151h",
         "to":{
            "blockId":"cl1hvk8pu000u2a6jxf5jiyvo"
         },
         "from":{
            "stepId":"cl1hvjf3a000r2a6j1lfsbl2i",
            "blockId":"cl1hvjf35000q2a6j04dt3mmg"
         }
      },
      {
         "from":{
            "blockId":"cl1hvk8pu000u2a6jxf5jiyvo",
            "stepId":"cl1hvk8q1000v2a6jwtlnqs3o"
         },
         "to":{
            "blockId":"cl1hvlybv00112a6jz5qj784l"
         },
         "id":"cl1hvnmpl001b2a6jdf5bsh22"
      },
      {
         "from":{
            "blockId":"cl1hvoeif001h2a6j0xkgpahk",
            "stepId":"cl1hvoeiu001i2a6jdlotxzg7"
         },
         "to":{
            "blockId":"cl1hvmjyk00152a6j2d6b4nja"
         },
         "id":"cl1hvouig001j2a6jt9aanm3n"
      },
      {
         "from":{
            "blockId":"cl1hvlybv00112a6jz5qj784l",
            "stepId":"cl1hvlyc600122a6jbt931nsd",
            "itemId":"cl1hvlyc600132a6jzk42y1yk"
         },
         "to":{
            "blockId":"cl1hvoeif001h2a6j0xkgpahk"
         },
         "id":"cl1hvoxav001k2a6jmk4b39cy"
      },
      {
         "from":{
            "blockId":"cl1hvlybv00112a6jz5qj784l",
            "stepId":"cl1hvlyc600122a6jbt931nsd"
         },
         "to":{
            "blockId":"cl1hvp0c9001l2a6je4k5gk3y"
         },
         "id":"cl1hvpag1001n2a6jmqfczjam"
      }
   ],
   "theme":{
      "chat":{
         "inputs":{
            "color":"#303235",
            "backgroundColor":"#FFFFFF",
            "placeholderColor":"#9095A0"
         },
         "buttons":{
            "color":"#FFFFFF",
            "backgroundColor":"#0042DA"
         },
         "hostAvatar":{
            "url":"https://avatars.githubusercontent.com/u/90119409?v=4",
            "isEnabled":true
         },
         "hostBubbles":{
            "color":"#303235",
            "backgroundColor":"#F7F8FF"
         },
         "guestBubbles":{
            "color":"#FFFFFF",
            "backgroundColor":"#FF8E21"
         }
      },
      "general":{
         "font":"Open Sans",
         "background":{
            "type":"None"
         }
      }
   },
   "settings":{
      "general":{
         "isBrandingEnabled":true,
         "isInputPrefillEnabled":true,
         "isNewResultOnRefreshEnabled":false
      },
      "metadata":{
         "description":"Build beautiful conversational forms and embed them directly in your applications without a line of code. Triple your response rate and collect answers that has more value compared to a traditional form."
      },
      "typingEmulation":{
         "speed":300,
         "enabled":true,
         "maxDelay":1.5
      }
   },
   "publicId":"my-typebot-k9ci9wt",
   "customDomain":null
}

Self-host: Add SMTP env variable to disable email login

I would like to propose adding an additional boolean environment variable (something like SMTP_LOGIN). The purpose of this variable would be to enable or disable the email login option, while still allowing the system to hold SMTP configuration variables for sending system emails, etc...

Use case: Google or Github social login is configured and allowed, but we don't want to allow email login. I am willing to write a PR for this, if it seems useful.

NEXT_PUBLIC_SMTP_AUTH_DISABLED not working in Docker image

First, thank you for simplifying the Docker deployment option!

I added my existing env variable NEXT_PUBLIC_SMTP_AUTH_DISABLED=true, but the email login form option is still displayed on the /signin page. I did notice that email login is prevented (when attempted), but previously the login form was hidden.

Upgrade from v2.1.0 (docker) to v2.1.1 (new docker release)

Hi,

I have v2.1.0 installed using old docker way of installation (docker build)

Now that you provided your own docker images, can you explain how to do an upgrade without losing already created bots?

Is it possible just to replace docker-compose.yaml with new version and set environment variables that we set previously in ".env" files? What happens with already created DB image?

The bot you're looking for doesn't exist

Hi guys.

I have a problem with self-hosted version of your great application

As far as I can see, everything is configured correctly. I am using docker installation method

The problem is that when I click on the "Sign in" button in the received email, I am being redirected to the builder domain, but the only thing that I receive is the following

image

Basically, the frontend part of the application is working correctly. My email (configured in the .env file) is correctly recognized, I receive an email message which should allow me to log in to the builder, but the builder part doesn't recognize my email address or the initial bot is not created.

Can you point me into the right direction and point out what am I missing in my setup?

I am sure that I am missing something obvious but can't figure it out, what exactly

My apps/builder/.ev.production file content is the following

DATABASE_URL=postgresql://postgres:typebot@db:5432/typebot
NEXT_PUBLIC_VIEWER_URL=https://typebot.mihha-hosting.com
ENCRYPTION_SECRET=my_secret_key
ADMIN_EMAIL=my_email_value
NEXTAUTH_URL=https://app.typebot.mihha-hosting.com
NEXTAUTH_URL_INTERNAL=http://host.docker.internal:8080 #should I remove this
SMTP_USERNAME=my_smtp_user_name
SMTP_PASSWORD=my_smtp_password
SMTP_HOST=my_smtp_host
SMTP_PORT=465
NEXT_PUBLIC_SMTP_FROM=my_sender_email

My apps/viewer/.env.production file content is the following

DATABASE_URL=postgresql://postgres:typebot@db:5432/typebot
NEXT_PUBLIC_VIEWER_URL=https://typebot.mihha-hosting.com
ENCRYPTION_SECRET=my_secret_key
ADMIN_EMAIL=my_email_value
SMTP_USERNAME=my_smtp_user_name
SMTP_PASSWORD=my_smtp_password
SMTP_HOST=my_smtp_host
SMTP_PORT=465
NEXT_PUBLIC_SMTP_FROM=my_sender_email

Thank you in advance!

Non-docker install instructions

Really nice work!

Are there any non-docker install instructions available?

I write about open source solutions (be it commercial or non-commercial) at https://oppetmoln.se (Swedish), and I often exclude docker-only-type packages/services simply because everyone doesn't want to take that road.

Create Typebot app on Cloudron for selfhosting

Cloudron is a platform that makes it easy to install, manage and secure web apps on your own server.
https://www.cloudron.io/

it would be nice to create a Typebot application on Cloudron to propose a new way to install Typebot quickly and securely

there is a discussion about this on the Cloudron forum:
https://forum.cloudron.io/topic/6707/open-source-conversational-apps-builder-typebot

I think that Cloudron developers and the Cloudron community can help

Jeau

How to disable new users registration?

Hi there I have decided to setup own typebot host for personal projects.
I decided to use GitHub auth method question is if there is any way to disable new users account from being created.
Thank you.

Add GitLab auth provider

When I run typebot using the provided docker-compose file, the only login method available is GitHub OAuth, does typebot support a "username + password" login option or allows to configure a custom OAuth provider?

I want to host typebot in an company internal environment.

One additional question:
Is it possible to prevent user registration in the builder? Something like setting up a small defined set of user accounts for it only?

Local setup build failure

I have followed the steps for the Local Setup but the builder compilation fails because the module 'typebot-js' cannot be found.

The database inspector at http://localhost:5555/ works fine but the builder at http://localhost:3000/ only displays a compilation error message.

Here are the relevant lines from the terminal build command:

builder:dx: error - ./components/shared/SupportBubble.tsx:6:0
builder:dx: Module not found: Can't resolve 'typebot-js'
builder:dx:   4 | import React, { useEffect, useState } from 'react'
builder:dx:   5 | import { isCloudProdInstance } from 'services/utils'
builder:dx: > 6 | import { initBubble } from 'typebot-js'
builder:dx:   7 | 
builder:dx:   8 | export const SupportBubble = () => {
builder:dx:   9 |   const { typebot } = useTypebot()
builder:dx: 
builder:dx: Import trace for requested module:
builder:dx: ./pages/_app.tsx
builder:dx: 
builder:dx: https://nextjs.org/docs/messages/module-not-found
utils:dx: created dist/cjs/index.js, dist/esm/index.js in 7.5s
utils:dx: bundles dist/esm/types/index.d.ts โ†’ dist/index.d.ts...
builder:dx: wait  - compiling...
utils:dx: created dist/index.d.ts in 67ms
builder:dx: error - ./components/shared/SupportBubble.tsx:6:0
builder:dx: Module not found: Can't resolve 'typebot-js'
builder:dx:   4 | import React, { useEffect, useState } from 'react'
builder:dx:   5 | import { isCloudProdInstance } from 'services/utils'
builder:dx: > 6 | import { initBubble } from 'typebot-js'
builder:dx:   7 | 
builder:dx:   8 | export const SupportBubble = () => {
builder:dx:   9 |   const { typebot } = useTypebot()
builder:dx: 
builder:dx: Import trace for requested module:
builder:dx: ./pages/_app.tsx
builder:dx: 
builder:dx: https://nextjs.org/docs/messages/module-not-found
builder:dx: wait  - compiling /_error (client and server)...
builder:dx: error - ./components/shared/SupportBubble.tsx:6:0
builder:dx: Module not found: Can't resolve 'typebot-js'
builder:dx:   4 | import React, { useEffect, useState } from 'react'
builder:dx:   5 | import { isCloudProdInstance } from 'services/utils'
builder:dx: > 6 | import { initBubble } from 'typebot-js'
builder:dx:   7 | 
builder:dx:   8 | export const SupportBubble = () => {
builder:dx:   9 |   const { typebot } = useTypebot()
builder:dx: 
builder:dx: Import trace for requested module:
builder:dx: ./pages/_app.tsx
builder:dx: 
builder:dx: https://nextjs.org/docs/messages/module-not-found

My machine:
2019 16" Macbook Pro Intel Core i7
macOS 12.2.1
Node 16.14.2
Docker 4.6.1 (76265)

Error processing webhook return data

Hello! I believe the latest commit to packages/bot-engine/src/services/integration.ts has caused an error with processing webhook return data. I ran the app in a local dev environment with this specific code reverted and the problem went away.

Access results without integrations - results export and/or results API?

Thank you for typebot!

I am looking at the hosted version of Typebot before testing the self-hosted version, and I'm trying to understand how results data are accessed (as opposed to being browsed on the results tab). Two things that I had expected I might see:

  1. an API call that returns Results for a given 'bot.
  2. an export button or menu on each Results page

I don't see either of those things. Is the only way to get results data out through using flow integrations (e.g. Google Sheets) or flow webhooks? Or is the expectation that users will extract their results through direct postgresql queries? Just trying to understand that paradigm here -- for people who don't want to integrate with a third party service (or shouldn't / can't due to data control issues) it isn't clear to me how to get the data out that is being put in.

Issues with vercel deployment

Hey, I just followed the guide to deploy on vercel and can't find any option to sign in.

image

here's how my supabase looks like
image

Allow hosting without access to Google Fonts API

Our self-hosted typebot works pretty well! Thanks for all the work!

We only found the issue that we can't access the Google Fonts API.
Thus we somehow have to disable the requests to prevent the error windows to show up.

@baptisteArno What is your opinion on this? I would go for a solution like with the other environment variables, like disableing requests to the API in case the variable is missing.

Unable to clear variable

I have a rather complex flow setup with a loop and am trying to find a way to clear out a variable so it can be used twice within a flow without pre-filling the field.

Below is the current flow I am running, I have an issue specifcally within the dietary variable being prefilled after the second loop.

{"id":"cl3jrb5j1001s3r6c5ycfj5p6","createdAt":"2022-05-24T06:08:40.382Z","updatedAt":"2022-05-25T03:05:12.251Z","icon":"๐ŸŽถ","name":"Band Booking","publishedTypebotId":"cl3jrz8rw002o3r6c7mpib056","folderId":null,"blocks":[{"id":"cl3jrb5j1000t3r6czdf05azx","steps":[{"id":"cl1seoz570001xk1ab0rd05k6","type":"start","label":"Start","blockId":"cl3jrb5j1000t3r6czdf05azx","outgoingEdgeId":"cl3l06q5i006q3r6c3j0ggvq7"}],"title":"Start","graphCoordinates":{"x":-185.0152006544408,"y":-551.337387369039}},{"id":"cl3jrb5j1000u3r6crta0de81","steps":[{"id":"cl1sep1cc001x2e6eikrwf9jy","type":"text","blockId":"cl3jrb5j1000u3r6crta0de81","content":{"html":"

Hi! ๐Ÿ‘‹
","richText":[{"type":"p","children":[{"text":"Hi! ๐Ÿ‘‹"}]}],"plainText":"Hi! ๐Ÿ‘‹"}},{"id":"cl1sep7jn001y2e6ez7ee7eiw","type":"text","blockId":"cl3jrb5j1000u3r6crta0de81","content":{"html":"
I'm glad you are intersted in booking your band with us.
","richText":[{"type":"p","children":[{"text":"I'm glad you are intersted in booking your band with us."}]}],"plainText":"I'm glad you are intersted in booking your band with us."}},{"id":"cl1seyazl00252e6e3zsbosvm","type":"text","blockId":"cl3jrb5j1000u3r6crta0de81","content":{"html":"
I'll need to know a little more about you and your band
","richText":[{"type":"p","children":[{"text":"I'll need to know a little more about you and your band"}]}],"plainText":"I'll need to know a little more about you and your band"},"outgoingEdgeId":"cl3jrd031001v3r6ck7q3gqg6"}],"title":"Welcome","graphCoordinates":{"x":163.17629467952912,"y":-550.5805508462647}},{"id":"cl3jrb5j1000v3r6cddevm3xl","steps":[{"id":"cl1sern9200212e6esrid307i","type":"text","blockId":"cl3jrb5j1000v3r6cddevm3xl","content":{"html":"
Can we start with your full name?
","richText":[{"type":"p","children":[{"text":"Can we start with your full name?"}]}],"plainText":"Can we start with your full name?"}},{"id":"cl3jrdzkd001w3r6c7rgck4n5","type":"text input","blockId":"cl3jrb5j1000v3r6cddevm3xl","options":{"isLong":false,"labels":{"button":"Send","placeholder":"Type your full name..."},"variableId":"vcl3jre81s001x3r6cvdhixpu9"},"outgoingEdgeId":"cl3jun3d6006j3r6cfbp5zcdi"}],"title":"Q1 - Name","graphCoordinates":{"x":509.8753818681632,"y":-550.5714297344313}},{"id":"cl3jrb5j1000w3r6cfcm9mpw2","steps":[{"id":"cl1sez6zt00272e6ecsefq05y","type":"text","blockId":"cl3jrb5j1000w3r6cfcm9mpw2","content":{"html":"
Awesome, now what is the name of your band?
","richText":[{"type":"p","children":[{"text":"Awesome, now what is the name of your band?"}]}],"plainText":"Awesome, now what is the name of your band?"}},{"id":"cl1sezlw700282e6eozkzmed0","type":"text input","blockId":"cl3jrb5j1000w3r6cfcm9mpw2","options":{"isLong":false,"labels":{"button":"Send","placeholder":"Type your band name..."},"variableId":"vcl3jrezwb001z3r6crvrfawhf"}},{"id":"cl3kuapre00093r6c6zcbe5hw","blockId":"cl3jrb5j1000w3r6cfcm9mpw2","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3jrb5j1000x3r6crw45qvo9"}}],"title":"Q3 - Band Name","graphCoordinates":{"x":1197.6892954246657,"y":-555.8060713284906}},{"id":"cl3jrb5j1000x3r6crw45qvo9","steps":[{"id":"cl1sf0ohc002e2e6egrjoj10z","type":"text","blockId":"cl3jrb5j1000x3r6crw45qvo9","content":{"html":"
How many members are in your band?
","richText":[{"type":"p","children":[{"text":"How many members are in your band?"}]}],"plainText":"How many members are in your band?"}},{"id":"cl1sf1er7002f2e6eakhc25yy","type":"number input","blockId":"cl3jrb5j1000x3r6crw45qvo9","options":{"min":1,"labels":{"button":"Send","placeholder":"Type the number of members..."},"variableId":"vcl3jrgl2f00213r6cjx04i7ro"}},{"id":"cl1sf1vkf002j2e6e971somqx","type":"Condition","items":[{"id":"cl1sf1vkg002k2e6ec54p0s4v","type":1,"stepId":"cl1sf1vkf002j2e6e971somqx","content":{"comparisons":[{"id":"cl1sf1y2a002l2e6eum6kcapg","value":"5","variableId":"vcl3jrgl2f00213r6cjx04i7ro","comparisonOperator":"Greater than"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3jrwzty002k3r6ck1fnqgjw"}],"blockId":"cl3jrb5j1000x3r6crw45qvo9"},{"id":"cl1sf2iix002n2e6egibs95yb","type":"Condition","items":[{"id":"cl1sf2iix002o2e6eai567rnj","type":1,"stepId":"cl1sf2iix002n2e6egibs95yb","content":{"comparisons":[{"id":"cl1sf2jmf002p2e6exertfrjq","value":"5","variableId":"vcl3jrgl2f00213r6cjx04i7ro","comparisonOperator":"Less than"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3jumocx006h3r6ct59xqnsm"}],"blockId":"cl3jrb5j1000x3r6crw45qvo9"}],"title":"Q4 - Band size","graphCoordinates":{"x":-182.35230433962212,"y":-79.24786432350629}},{"id":"cl3jrb5j100103r6coq6etnu4","steps":[{"id":"cl1sf4ql500342e6ebj863aex","type":"text","blockId":"cl3jrb5j100103r6coq6etnu4","content":{"html":"
What genre would you classify your band as? (you can select a few)
","richText":[{"type":"p","children":[{"text":"What genre would you classify your band as? (you can select a few)"}]}],"plainText":"What genre would you classify your band as? (you can select a few)"}},{"id":"cl3jrphhd00273r6c5ch6w2n8","type":"choice input","items":[{"id":"cl3jrphhd00283r6cjxdketov","type":0,"stepId":"cl3jrphhd00273r6c5ch6w2n8","content":"Rock"},{"id":"cl3jrvbuk002c3r6c3uvngaby","type":0,"stepId":"cl3jrphhd00273r6c5ch6w2n8","content":"Classic"},{"id":"cl3jrvbjn002b3r6cw7exzwua","type":0,"stepId":"cl3jrphhd00273r6c5ch6w2n8","content":"Click to edit"},{"id":"cl3jrvb3b002a3r6cpb6dy85c","type":0,"stepId":"cl3jrphhd00273r6c5ch6w2n8","content":"Click to edit"}],"blockId":"cl3jrb5j100103r6coq6etnu4","options":{"variableId":"vcl3jruxhp00293r6cnswp780c","buttonLabel":"Send","isMultipleChoice":true},"outgoingEdgeId":"cl3jt6hcu004l3r6cktwd92oi"}],"title":"Q5 - Genre","graphCoordinates":{"x":170.89958179652714,"y":157.06734128917122}},{"id":"cl3jrb5j100133r6cfq75ctry","steps":[{"id":"cl1sfcqjw003z2e6ebmyzey4o","type":"text","blockId":"cl3jrb5j100133r6cfq75ctry","content":{"html":"
Woah, that is quite a few. I will make a note to check our space.
","richText":[{"type":"p","children":[{"text":"Woah, that is quite a few. I will make a note to check our space."}]}],"plainText":"Woah, that is quite a few. I will make a note to check our space."}},{"id":"cl3jrnhsf00253r6czkulopsr","type":"Set variable","blockId":"cl3jrb5j100133r6cfq75ctry","options":{"variableId":"vcl3jrnngd00263r6ck91tgzdj","expressionToEvaluate":"Band has {{bandsize}} members. Check capacity to make sure we can accomodate"},"outgoingEdgeId":"cl3jumu3t006i3r6cq5clztrs"}],"title":"Q4.5 - Large Band","graphCoordinates":{"x":168.327558340017,"y":-177.88719856307932}},{"id":"cl3jrb5j100163r6cybronrrq","steps":[{"id":"cl1sfgwox004o2e6evzi0n7hk","type":"text","blockId":"cl3jrb5j100163r6cybronrrq","content":{"html":"
Thank you for answering those questions.
","richText":[{"type":"p","children":[{"text":"Thank you for answering those questions."}]}],"plainText":"Thank you for answering those questions."}},{"id":"cl1sfhz4f004p2e6esidqktmr","type":"text","blockId":"cl3jrb5j100163r6cybronrrq","content":{"html":"
We'll get back to you ASAP. ๐Ÿ‘‹
","richText":[{"type":"p","children":[{"text":"We'll get back to you ASAP. ๐Ÿ‘‹"}]}],"plainText":"We'll get back to you ASAP. ๐Ÿ‘‹"}},{"id":"cl3jw4llu00a43r6ck6jlgls9","type":"Email","blockId":"cl3jrb5j100163r6cybronrrq","options":{"body":"{{name}}\n{{band}}\n{{bandsize}}\n{{note}}\n{{genre}}\n{{email}}\n{{phone}}\n{{date}}\n{{time}}\n{{facebook}}\n{{instagram}}\n{{twitter}}\n{{website}}\n{{groupmeal}}","replyTo":"[email protected]","subject":"Form","recipients":["[email protected]"],"credentialsId":"default"}}],"title":"Q10 - Finish","graphCoordinates":{"x":-197.2301111108031,"y":2269.5622361348633}},{"id":"cl3jsyj4w00433r6cl0mzxbiy","steps":[{"id":"cl3jtk93l00533r6cl1sacd40","type":"text","blockId":"cl3jsyj4w00433r6cl0mzxbiy","content":{"html":"
What date are you looking to perform?
","richText":[{"type":"p","children":[{"text":"What date are you looking to perform?"}]}],"plainText":"What date are you looking to perform?"}},{"id":"cl3jtma4e00543r6cou1ppppc","type":"text","blockId":"cl3jsyj4w00433r6cl0mzxbiy","content":{"html":"
Please note that performances are usually on a Friday or Saturday night unless otherwise advised.
","richText":[{"type":"p","children":[{"text":"Please note that performances are usually on a Friday or Saturday night unless otherwise advised."}]}],"plainText":"Please note that performances are usually on a Friday or Saturday night unless otherwise advised."}},{"id":"cl3jsyj5500443r6cmgn3lwq4","type":"date input","blockId":"cl3jsyj4w00433r6cl0mzxbiy","options":{"labels":{"to":"To:","from":"From:","button":"Send"},"hasTime":false,"isRange":false,"variableId":"vcl3jt6umg004p3r6c7s36ly3k"},"outgoingEdgeId":"cl3jtnpcv005a3r6ciivf4cr1"}],"title":"Q6 - Date","graphCoordinates":{"x":569.548321227602,"y":-175.95018645072528}},{"id":"cl3jsyzix00453r6ceo89cgem","steps":[{"id":"cl3jsq3co002q3r6cimr1bvlk","type":"text","blockId":"cl3jsyzix00453r6ceo89cgem","content":{"html":"
Thanks {{name}}, now to make sure we can contact you.
","richText":[{"type":"p","children":[{"text":"Thanks {{name}}, now to make sure we can contact you."}]}],"plainText":"Thanks {{name}}, now to make sure we can contact you."}},{"id":"cl3jsyzj500463r6c8mfg2er3","type":"email input","blockId":"cl3jsyzix00453r6ceo89cgem","options":{"labels":{"button":"Send","placeholder":"Type your email..."},"variableId":"vcl3jt0pz1004c3r6c3ld2sgxg","retryMessageContent":"This email doesn't seem to be valid. Can you type it again?"}},{"id":"cl3jsz6ha00483r6cu6nlx86v","type":"phone number input","blockId":"cl3jsyzix00453r6ceo89cgem","options":{"labels":{"button":"Send","placeholder":"Type your contact number..."},"variableId":"vcl3jt191w004d3r6c3yiu2to7","defaultCountryCode":"AU","retryMessageContent":"This phone number doesn't seem to be valid. Can you type it again?"},"outgoingEdgeId":"cl3jt1y5t004f3r6c5mbz82ro"}],"title":"Q2 - Email and Phone","graphCoordinates":{"x":857.0633567112311,"y":-551.6049854143458}},{"id":"cl3jtmx3b00553r6cjo2kb9wi","steps":[{"id":"cl3jtmx3l00563r6czquyi7op","type":"text","blockId":"cl3jtmx3b00553r6cjo2kb9wi","content":{"html":"
What is your preferred time?
","richText":[{"type":"p","children":[{"text":"What is your preferred time?"}]}],"plainText":"What is your preferred time?"}},{"id":"cl3jtnann00573r6czh5z9wut","type":"choice input","items":[{"id":"cl3jtnann00583r6c462r43tu","type":0,"stepId":"cl3jtnann00573r6czh5z9wut","content":"9PM"},{"id":"cl3jtnk2y00593r6cq1gf61hl","type":0,"stepId":"cl3jtnann00573r6czh5z9wut","content":"11PM"}],"blockId":"cl3jtmx3b00553r6cjo2kb9wi","options":{"variableId":"vcl3jtnymb005b3r6chicr7fz0","buttonLabel":"Send","isMultipleChoice":false}},{"id":"cl3kudetl000a3r6cw6w0n9x8","blockId":"cl3jtmx3b00553r6cjo2kb9wi","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3juafta005i3r6cwkswbht9"}}],"title":"Q7 - Time","graphCoordinates":{"x":931.744449322284,"y":-172.31663984519628}},{"id":"cl3juafta005i3r6cwkswbht9","steps":[{"id":"cl3jubbap005m3r6cvin4muo3","type":"text","blockId":"cl3juafta005i3r6cwkswbht9","content":{"html":"
Do you have any social media accounts for us to tag?
","richText":[{"type":"p","children":[{"text":"Do you have any social media accounts for us to tag?"}]}],"plainText":"Do you have any social media accounts for us to tag?"}},{"id":"cl3kzoz90005d3r6c6701hi36","blockId":"cl3juafta005i3r6cwkswbht9","type":"choice input","options":{"buttonLabel":"Send","isMultipleChoice":false},"items":[{"id":"cl3kzoz90005e3r6cdfn0qx0s","stepId":"cl3kzoz90005d3r6c6701hi36","type":0,"content":"Yes"},{"stepId":"cl3kzoz90005d3r6c6701hi36","type":0,"id":"cl3kzp7nh005i3r6cyuje7kwn","content":"No","outgoingEdgeId":"cl3kzqvrk005v3r6ccypvuon5"}]},{"id":"cl3juaftf005j3r6cnv4t6z2r","type":"choice input","items":[{"id":"cl3juaftf005k3r6c3vbzdl6l","type":0,"stepId":"cl3juaftf005j3r6cnv4t6z2r","content":"Facebook"},{"id":"cl3jubu2q005n3r6cgqoiab2y","type":0,"stepId":"cl3juaftf005j3r6cnv4t6z2r","content":"Instagram"},{"id":"cl3juc49h005p3r6cmhkrxove","type":0,"stepId":"cl3juaftf005j3r6cnv4t6z2r","content":"Twitter"},{"id":"cl3jubx1a005o3r6crpq2xb7o","type":0,"stepId":"cl3juaftf005j3r6cnv4t6z2r","content":"Website"}],"blockId":"cl3juafta005i3r6cwkswbht9","options":{"variableId":"vcl3jub52u005l3r6ccr6nyt97","buttonLabel":"Send","isMultipleChoice":true},"outgoingEdgeId":"cl3kzretq00643r6cbg4w0ccc"}],"title":"Q8 - Social Media","graphCoordinates":{"x":-195.77479821356104,"y":683.8175852123077}},{"id":"cl3jugsyf00673r6c2nx7e702","steps":[{"id":"cl3jugsyl00683r6cyw1ccyva","type":"text","blockId":"cl3jugsyf00673r6c2nx7e702","content":{"html":"
Can you provide your Facebook profile? <a href="https://www.facebook.com/help/211813265517027" target="_blank" rel="noreferrer" class="slate-a">Help Me
","richText":[{"type":"p","children":[{"text":"Can you provide your Facebook profile? "},{"url":"https://www.facebook.com/help/211813265517027","type":"a","children":[{"text":"Help Me"}]},{"text":""}]}],"plainText":"Can you provide your Facebook profile? Help Me"}},{"id":"cl3juk2w600693r6cge48lalk","type":"text input","blockId":"cl3jugsyf00673r6c2nx7e702","options":{"isLong":false,"labels":{"button":"Send","placeholder":"facebook.com/profile"},"variableId":"vcl3jukkf5006a3r6ce9lxb46n"},"outgoingEdgeId":"cl3jvy02r009c3r6covwb8kxy"}],"title":"Q8.1.1 Facebook","graphCoordinates":{"x":505.7905514634471,"y":678.6256853085868}},{"id":"cl3jupmj8006r3r6c69gon5mf","steps":[{"id":"cl3jupmj8006t3r6c1e1j421a","type":"text","blockId":"cl3jupmj8006r3r6c69gon5mf","content":{"html":"
Can you provide your Instagram profile? <a href="https://help.instagram.com/369207764224422" target="_blank" rel="noreferrer" class="slate-a">Help Me
","richText":[{"type":"p","children":[{"text":"Can you provide your Instagram profile? "},{"url":"https://help.instagram.com/369207764224422","type":"a","children":[{"text":"Help Me"}]},{"text":""}]}],"plainText":"Can you provide your Instagram profile? Help Me"}},{"id":"cl3jupmj8006s3r6caao5h730","type":"text input","blockId":"cl3jupmj8006r3r6c69gon5mf","options":{"isLong":false,"labels":{"button":"Send","placeholder":"Type your instagram username..."},"variableId":"vcl3jusltr006w3r6c9dppzdgy"}},{"id":"cl3kus45l000d3r6cc7m505d0","blockId":"cl3jupmj8006r3r6c69gon5mf","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3juve2n006y3r6c5009fqn4"}}],"title":"Q8.2.1 Instagram","graphCoordinates":{"x":1180.7492268234666,"y":677.6988485102947}},{"id":"cl3juvfls00713r6c3h78tjzr","steps":[{"id":"cl3juvfls00723r6c9fi55o7n","type":"text","blockId":"cl3juvfls00713r6c3h78tjzr","content":{"html":"
Can you provide your Twitter profile? <a href="https://help.twitter.com/en/managing-your-account/help-with-common-username-issues" target="_blank" rel="noreferrer" class="slate-a">Help Me
","richText":[{"type":"p","children":[{"text":"Can you provide your Twitter profile? "},{"url":"https://help.twitter.com/en/managing-your-account/help-with-common-username-issues","type":"a","children":[{"text":"Help Me"}]},{"text":""}]}],"plainText":"Can you provide your Twitter profile? Help Me"}},{"id":"cl3juvfls00733r6c7ieatbmo","type":"text input","blockId":"cl3juvfls00713r6c3h78tjzr","options":{"isLong":false,"labels":{"button":"Send","placeholder":"Type your Twitter username..."},"variableId":"vcl3juz9b800773r6ck50nrf8x"},"outgoingEdgeId":"cl3jv0jq4007g3r6ci6apjf6l"}],"title":"Q8.3.1 Twitter","graphCoordinates":{"x":497.35987954090996,"y":1043.8748316599301}},{"id":"cl3juzxi4007b3r6cba9w5kt5","steps":[{"id":"cl3juzxi5007c3r6c3k78pehk","type":"text","blockId":"cl3juzxi4007b3r6cba9w5kt5","content":{"html":"
Can you provide your website?
","richText":[{"type":"p","children":[{"text":"Can you provide your website?"}]}],"plainText":"Can you provide your website?"}},{"id":"cl3jv0vub007h3r6ccl82e48f","type":"url input","blockId":"cl3juzxi4007b3r6cba9w5kt5","options":{"labels":{"button":"Send","placeholder":"Type a URL..."},"variableId":"vcl3jv14nf007i3r6cro3os6ef","retryMessageContent":"This URL doesn't seem to be valid. Can you type it again?"}},{"id":"cl3kuwl2w000h3r6cgn217elp","blockId":"cl3juzxi4007b3r6cba9w5kt5","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3jv2p61007j3r6cvy5x0utz"}}],"title":"Q8.4.1 - Website","graphCoordinates":{"x":1184.4985648692548,"y":1070.655904907925}},{"id":"cl3jul9ve006d3r6c7rgyhfdr","steps":[{"id":"cl3jul70g006b3r6ca2kv1hfs","type":"Condition","items":[{"id":"cl3jul70h006c3r6chb8u9o2g","type":1,"stepId":"cl3jul70g006b3r6ca2kv1hfs","content":{"comparisons":[{"id":"cl3jun9wy006k3r6c42hxlb9z","value":"Facebook","variableId":"vcl3jub52u005l3r6ccr6nyt97","comparisonOperator":"Contains"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3juoi3w006m3r6c0pau1p7w"}],"blockId":"cl3jul9ve006d3r6c7rgyhfdr","outgoingEdgeId":"cl3kujvgt000b3r6cyvsanwbo"}],"title":"Q8.1 - Facebook","graphCoordinates":{"x":161.4119265486244,"y":849.4096699551883}},{"id":"cl3juphxu006o3r6c3u10ciwe","steps":[{"id":"cl3juphxu006p3r6cjq4mhln9","type":"Condition","items":[{"id":"cl3juphxu006q3r6cry3v3l07","type":1,"stepId":"cl3juphxu006p3r6cjq4mhln9","content":{"comparisons":[{"id":"cl3jun9wy006k3r6c42hxlb9z","value":"Instagram","variableId":"vcl3jub52u005l3r6ccr6nyt97","comparisonOperator":"Contains"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3juurfq006x3r6cbcww5zhr"}],"blockId":"cl3juphxu006o3r6c3u10ciwe"},{"id":"cl3kus7do000e3r6clynh2k4b","blockId":"cl3juphxu006o3r6c3u10ciwe","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3juve2n006y3r6c5009fqn4"}}],"title":"Q8.2 - Instagram","graphCoordinates":{"x":840.8618587653644,"y":825.6377575511816}},{"id":"cl3juve2n006y3r6c5009fqn4","steps":[{"id":"cl3juve2n006z3r6cqssy2b3r","type":"Condition","items":[{"id":"cl3juve2n00703r6cmaum1lqf","type":1,"stepId":"cl3juve2n006z3r6cqssy2b3r","content":{"comparisons":[{"id":"cl3jun9wy006k3r6c42hxlb9z","value":"Twitter","variableId":"vcl3jub52u005l3r6ccr6nyt97","comparisonOperator":"Contains"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3juz37600763r6c9dl9otvx"}],"blockId":"cl3juve2n006y3r6c5009fqn4","outgoingEdgeId":"cl3kuulyn000f3r6cwdeot5v9"}],"title":"Q8.3 - Twitter","graphCoordinates":{"x":165.4764349190811,"y":1133.3379328516623}},{"id":"cl3juzuaq00783r6cwb2iqn1n","steps":[{"id":"cl3juzuaq00793r6c9liudmhy","type":"Condition","items":[{"id":"cl3juzuaq007a3r6ctgjxeugj","type":1,"stepId":"cl3juzuaq00793r6c9liudmhy","content":{"comparisons":[{"id":"cl3jun9wy006k3r6c42hxlb9z","value":"Website","variableId":"vcl3jub52u005l3r6ccr6nyt97","comparisonOperator":"Contains"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3jv0btj007e3r6cj5g86fek"}],"blockId":"cl3juzuaq00783r6cwb2iqn1n"},{"id":"cl3kuwijs000g3r6c6t2bpl85","blockId":"cl3juzuaq00783r6cwb2iqn1n","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3jv2p61007j3r6cvy5x0utz"}}],"title":"Q8.4 - Website","graphCoordinates":{"x":839.9338968024243,"y":1190.0543676807665}},{"id":"cl3jv2p61007j3r6cvy5x0utz","steps":[{"id":"cl3jv2p66007k3r6cuxsuxzhc","type":"text","blockId":"cl3jv2p61007j3r6cvy5x0utz","content":{"html":"
We want to feed you before or after your performance, can you let us know if you have any dietary requirements and your preferred meal?
","richText":[{"type":"p","children":[{"text":"We want to feed you before or after your performance, can you let us know if you have any dietary requirements and your preferred meal?"}]}],"plainText":"We want to feed you before or after your performance, can you let us know if you have any dietary requirements and your preferred meal?"}},{"id":"cl3jv5stv007r3r6c2hmhpdez","type":"Set variable","blockId":"cl3jv2p61007j3r6cvy5x0utz","options":{"variableId":"vcl3jv62sy007s3r6ccyyh5lih","expressionToEvaluate":"1","isCode":true}},{"id":"cl3kyp6mi004c3r6capadgmnv","blockId":"cl3jv2p61007j3r6cvy5x0utz","type":"Set variable","options":{"variableId":"vcl3jvm5y0008r3r6cdgkb7mir","isCode":true,"expressionToEvaluate":"null"},"outgoingEdgeId":"cl3kypshz004h3r6cpjz8psie"}],"title":"Q9 - Food","graphCoordinates":{"x":-203.76553603013178,"y":1521.255866845515}},{"id":"cl3jv6ioi007t3r6cil6kfh35","steps":[{"id":"cl3jv6ioq007u3r6c9phbnyxy","type":"Condition","items":[{"id":"cl3jv6ioq007v3r6co3uii8ky","type":1,"stepId":"cl3jv6ioq007u3r6c9phbnyxy","content":{"comparisons":[{"id":"cl3jv6t8g007w3r6cebzdfy7c","value":"{{bandsize}}","variableId":"vcl3jv62sy007s3r6ccyyh5lih","comparisonOperator":"Less than"}],"logicalOperator":"AND"},"outgoingEdgeId":"cl3jw2j8d009p3r6cbv34nb7u"}],"blockId":"cl3jv6ioi007t3r6cil6kfh35"},{"id":"cl3kvd8gz000n3r6c6tevzuad","blockId":"cl3jv6ioi007t3r6cil6kfh35","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3jrb5j100163r6cybronrrq"}}],"title":"Q9.1 - Loop","graphCoordinates":{"x":171.06750553066766,"y":1522.1807418669737}},{"id":"cl3jv8mq3007y3r6cnoajkt2p","steps":[{"id":"cl3jv8mq8007z3r6clzj47y91","type":"text","blockId":"cl3jv8mq3007y3r6cnoajkt2p","content":{"html":"
For member {{loop}} can you choose a meal?
","richText":[{"type":"p","children":[{"text":"For member {{loop}} can you choose a meal?"}]}],"plainText":"For member {{loop}} can you choose a meal?"}},{"id":"cl3jva39b00813r6c529mbcwb","type":"choice input","items":[{"id":"cl3jva39b00823r6c2gwphk30","type":0,"stepId":"cl3jva39b00813r6c529mbcwb","content":"Hamburger & Chips","outgoingEdgeId":"cl3jvh7sq008i3r6c58jtujn7"},{"id":"cl3jvbiu500843r6chwdpix97","type":0,"stepId":"cl3jva39b00813r6c529mbcwb","content":"Chicken Burger & Chips","outgoingEdgeId":"cl3jvh6lr008h3r6c7myyhy5t"},{"id":"cl3jvboxj00853r6c3gvk8qku","type":0,"stepId":"cl3jva39b00813r6c529mbcwb","content":"Nachos (GF)","outgoingEdgeId":"cl3jvh4xe008g3r6cjos6gsyl"},{"stepId":"cl3jva39b00813r6c529mbcwb","type":0,"id":"cl3kv4qao000i3r6cf9ko8p9q","content":"Nothing","outgoingEdgeId":"cl3kxspyl003o3r6chm5x6qn4"}],"blockId":"cl3jv8mq3007y3r6cnoajkt2p","options":{"variableId":"vcl3jvajme00833r6c5grcv53x","buttonLabel":"Send","isMultipleChoice":false},"outgoingEdgeId":"cl3kxsr99003q3r6ckf4xszt5"}],"title":"Q9.2 - Meal","graphCoordinates":{"x":511.9705880443539,"y":1520.6910523006925}},{"id":"cl3jvfzsd008a3r6cyojkcmxg","steps":[{"id":"cl3jvkg2l008n3r6cfqdypq8u","type":"text input","blockId":"cl3jvfzsd008a3r6cyojkcmxg","options":{"isLong":false,"labels":{"button":"Send","placeholder":"Type your dietary needs..."},"variableId":"vcl3jvf4h000893r6c6wbmvkzt"}},{"id":"cl3kxo94t002z3r6cyjs2f4yq","blockId":"cl3jvfzsd008a3r6cyojkcmxg","type":"Set variable","options":{"isCode":true,"variableId":"vcl3jvm5y0008r3r6cdgkb7mir","expressionToEvaluate":"{{groupmeal}} + '1 x ' + {{meal}} + ' (' + {{dietary}} + ')\n'"}},{"id":"cl3ktvkp100063r6cbcuptb6f","blockId":"cl3jvfzsd008a3r6cyojkcmxg","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3ksmr2k00ar3r6cipdzcbjm"}}],"title":"Q9.3.1 - Dietary","graphCoordinates":{"x":1211.2108755217996,"y":1521.8784680353394}},{"id":"cl3jvg56n008b3r6cirpadg20","steps":[{"id":"cl3jvg9a0008e3r6c9viydxww","type":"text","blockId":"cl3jvg56n008b3r6cirpadg20","content":{"html":"
Does member {{loop}} have any dietary requirements?
","richText":[{"type":"p","children":[{"text":"Does member {{loop}} have any dietary requirements?"}]}],"plainText":"Does member {{loop}} have any dietary requirements?"}},{"id":"cl3jvg56u008c3r6cldq5f86b","type":"choice input","items":[{"id":"cl3jvg56u008d3r6c60v1u3gx","type":0,"stepId":"cl3jvg56u008c3r6cldq5f86b","content":"Yes","outgoingEdgeId":"cl3jvlb0a008o3r6cv4iksnjs"},{"id":"cl3jvhdkk008j3r6crihx3icn","type":0,"stepId":"cl3jvg56u008c3r6cldq5f86b","content":"No","outgoingEdgeId":"cl3jvoexa008u3r6cjdrvnlji"}],"blockId":"cl3jvg56n008b3r6cirpadg20","options":{"buttonLabel":"Send","isMultipleChoice":false},"outgoingEdgeId":"cl3jvvn2900953r6ck0kly1cy"}],"title":"Q9.3 - Dietary","graphCoordinates":{"x":853.3141395272563,"y":1521.8248220749613}},{"id":"cl3jvo6gy008s3r6ctmf3bez1","steps":[{"id":"cl3jvljid008q3r6cpzpd7i4a","type":"Set variable","blockId":"cl3jvo6gy008s3r6ctmf3bez1","options":{"isCode":true,"variableId":"vcl3jvm5y0008r3r6cdgkb7mir","expressionToEvaluate":"{{groupmeal}} + '1 x ' + {{meal}}+ '\n'"}},{"id":"cl3ktvw5100073r6csh1x21ux","blockId":"cl3jvo6gy008s3r6ctmf3bez1","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3ksmr2k00ar3r6cipdzcbjm"}}],"title":"Q9.3.2 - Dietary","graphCoordinates":{"x":1212.015777175181,"y":1827.5001318607522}},{"id":"cl3ksmr2k00ar3r6cipdzcbjm","steps":[{"id":"cl3kwpyvy00113r6ce7wjsk9g","blockId":"cl3ksmr2k00ar3r6cipdzcbjm","type":"text","content":{"html":"
{{groupmeal}}
","richText":[{"type":"p","children":[{"text":"{{groupmeal}}"}]}],"plainText":"{{groupmeal}}"}},{"id":"cl3jvqam900903r6c00lw319l","type":"Set variable","blockId":"cl3ksmr2k00ar3r6cipdzcbjm","options":{"isCode":true,"variableId":"vcl3jv62sy007s3r6ccyyh5lih","expressionToEvaluate":"{{loop}} + 1"}},{"id":"cl3jw3ueh009z3r6c0u1lzzjt","type":"Set variable","blockId":"cl3ksmr2k00ar3r6cipdzcbjm","options":{"variableId":"vcl3jvajme00833r6c5grcv53x","isCode":false,"expressionToEvaluate":"Nothing"}},{"id":"cl3jw3a1r009w3r6cvm6kebvk","type":"Set variable","blockId":"cl3ksmr2k00ar3r6cipdzcbjm","options":{"variableId":"vcl3jvf4h000893r6c6wbmvkzt","isCode":false,"expressionToEvaluate":"Nothing"},"outgoingEdgeId":"cl3kzkto600583r6cokyv9t1b"}],"title":"Q9.5 - Reset","graphCoordinates":{"x":167.49082350407159,"y":1821.9233954046108}},{"id":"cl3kxsn9b003m3r6cbngvkasu","graphCoordinates":{"x":851.9653360004035,"y":1907.7140954794586},"title":"Group #29","steps":[{"id":"cl3kxrf8y003h3r6cufu8uu5k","blockId":"cl3kxsn9b003m3r6cbngvkasu","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3ksmr2k00ar3r6cipdzcbjm"}}]},{"id":"cl3kzqbj5005m3r6ciqxxsj4o","graphCoordinates":{"x":160.5367739917987,"y":683.6664731264173},"title":"Q8.0","steps":[{"id":"cl3kzqbjc005n3r6cwa26etl9","blockId":"cl3kzqbj5005m3r6ciqxxsj4o","type":"Typebot link","options":{"typebotId":"current","blockId":"cl3jv2p61007j3r6cvy5x0utz"}}]}],"variables":[{"id":"vcl3jre81s001x3r6cvdhixpu9","name":"name"},{"id":"vcl3jrezwb001z3r6crvrfawhf","name":"band"},{"id":"vcl3jrgl2f00213r6cjx04i7ro","name":"bandsize"},{"id":"vcl3jrnngd00263r6ck91tgzdj","name":"note"},{"id":"vcl3jruxhp00293r6cnswp780c","name":"genre"},{"id":"vcl3jt0pz1004c3r6c3ld2sgxg","name":"email"},{"id":"vcl3jt191w004d3r6c3yiu2to7","name":"phone"},{"id":"vcl3jt6umg004p3r6c7s36ly3k","name":"date"},{"id":"vcl3jtnymb005b3r6chicr7fz0","name":"time"},{"id":"vcl3jub52u005l3r6ccr6nyt97","name":"social"},{"id":"vcl3jukkf5006a3r6ce9lxb46n","name":"facebook"},{"id":"vcl3jusltr006w3r6c9dppzdgy","name":"instagram"},{"id":"vcl3juz9b800773r6ck50nrf8x","name":"twitter"},{"id":"vcl3jv14nf007i3r6cro3os6ef","name":"website"},{"id":"vcl3jv62sy007s3r6ccyyh5lih","name":"loop"},{"id":"vcl3jvajme00833r6c5grcv53x","name":"meal"},{"id":"vcl3jvf4h000893r6c6wbmvkzt","name":"dietary"},{"id":"vcl3jvm5y0008r3r6cdgkb7mir","name":"groupmeal"}],"edges":[{"id":"cl3jrd031001v3r6ck7q3gqg6","to":{"blockId":"cl3jrb5j1000v3r6cddevm3xl"},"from":{"stepId":"cl1seyazl00252e6e3zsbosvm","blockId":"cl3jrb5j1000u3r6crta0de81"}},{"id":"cl3jrwzty002k3r6ck1fnqgjw","to":{"blockId":"cl3jrb5j100133r6cfq75ctry"},"from":{"itemId":"cl1sf1vkg002k2e6ec54p0s4v","stepId":"cl1sf1vkf002j2e6e971somqx","blockId":"cl3jrb5j1000x3r6crw45qvo9"}},{"id":"cl3jrx3fk002m3r6cr7f0kvu3","to":{"blockId":"cl3jrb5j100103r6coq6etnu4"},"from":{"stepId":"cl1sf2iix002n2e6egibs95yb","blockId":"cl3jrb5j1000x3r6crw45qvo9"}},{"id":"cl3jt1y5t004f3r6c5mbz82ro","to":{"blockId":"cl3jrb5j1000w3r6cfcm9mpw2"},"from":{"stepId":"cl3jsz6ha00483r6cu6nlx86v","blockId":"cl3jsyzix00453r6ceo89cgem"}},{"id":"cl3jt6hcu004l3r6cktwd92oi","to":{"blockId":"cl3jsyj4w00433r6cl0mzxbiy"},"from":{"stepId":"cl3jrphhd00273r6c5ch6w2n8","blockId":"cl3jrb5j100103r6coq6etnu4"}},{"id":"cl3jtnpcv005a3r6ciivf4cr1","to":{"stepId":"cl3jtmx3l00563r6czquyi7op","blockId":"cl3jtmx3b00553r6cjo2kb9wi"},"from":{"stepId":"cl3jsyj5500443r6cmgn3lwq4","blockId":"cl3jsyj4w00433r6cl0mzxbiy"}},{"id":"cl3jufskd00643r6csxfi8r7k","to":{"blockId":"cl3juafta005i3r6cwkswbht9"},"from":{"stepId":"cl3jtnann00573r6czh5z9wut","blockId":"cl3jtmx3b00553r6cjo2kb9wi"}},{"id":"cl3jumocx006h3r6ct59xqnsm","to":{"blockId":"cl3jrb5j100103r6coq6etnu4"},"from":{"itemId":"cl1sf2iix002o2e6eai567rnj","stepId":"cl1sf2iix002n2e6egibs95yb","blockId":"cl3jrb5j1000x3r6crw45qvo9"}},{"id":"cl3jumu3t006i3r6cq5clztrs","to":{"blockId":"cl3jrb5j100103r6coq6etnu4"},"from":{"stepId":"cl3jrnhsf00253r6czkulopsr","blockId":"cl3jrb5j100133r6cfq75ctry"}},{"id":"cl3jun3d6006j3r6cfbp5zcdi","to":{"blockId":"cl3jsyzix00453r6ceo89cgem"},"from":{"stepId":"cl3jrdzkd001w3r6c7rgck4n5","blockId":"cl3jrb5j1000v3r6cddevm3xl"}},{"id":"cl3juoi3w006m3r6c0pau1p7w","to":{"blockId":"cl3jugsyf00673r6c2nx7e702"},"from":{"itemId":"cl3jul70h006c3r6chb8u9o2g","stepId":"cl3jul70g006b3r6ca2kv1hfs","blockId":"cl3jul9ve006d3r6c7rgyhfdr"}},{"id":"cl3juurfq006x3r6cbcww5zhr","to":{"blockId":"cl3jupmj8006r3r6c69gon5mf"},"from":{"itemId":"cl3juphxu006q3r6cry3v3l07","stepId":"cl3juphxu006p3r6cjq4mhln9","blockId":"cl3juphxu006o3r6c3u10ciwe"}},{"id":"cl3juz37600763r6c9dl9otvx","to":{"blockId":"cl3juvfls00713r6c3h78tjzr"},"from":{"itemId":"cl3juve2n00703r6cmaum1lqf","stepId":"cl3juve2n006z3r6cqssy2b3r","blockId":"cl3juve2n006y3r6c5009fqn4"}},{"id":"cl3jv0btj007e3r6cj5g86fek","to":{"blockId":"cl3juzxi4007b3r6cba9w5kt5"},"from":{"itemId":"cl3juzuaq007a3r6ctgjxeugj","stepId":"cl3juzuaq00793r6c9liudmhy","blockId":"cl3juzuaq00783r6cwb2iqn1n"}},{"id":"cl3jv0jq4007g3r6ci6apjf6l","to":{"blockId":"cl3juzuaq00783r6cwb2iqn1n"},"from":{"stepId":"cl3juvfls00733r6c7ieatbmo","blockId":"cl3juvfls00713r6c3h78tjzr"}},{"id":"cl3jvh4xe008g3r6cjos6gsyl","to":{"blockId":"cl3jvg56n008b3r6cirpadg20"},"from":{"itemId":"cl3jvboxj00853r6c3gvk8qku","stepId":"cl3jva39b00813r6c529mbcwb","blockId":"cl3jv8mq3007y3r6cnoajkt2p"}},{"id":"cl3jvh6lr008h3r6c7myyhy5t","to":{"blockId":"cl3jvg56n008b3r6cirpadg20"},"from":{"itemId":"cl3jvbiu500843r6chwdpix97","stepId":"cl3jva39b00813r6c529mbcwb","blockId":"cl3jv8mq3007y3r6cnoajkt2p"}},{"id":"cl3jvh7sq008i3r6c58jtujn7","to":{"blockId":"cl3jvg56n008b3r6cirpadg20"},"from":{"itemId":"cl3jva39b00823r6c2gwphk30","stepId":"cl3jva39b00813r6c529mbcwb","blockId":"cl3jv8mq3007y3r6cnoajkt2p"}},{"id":"cl3jvlb0a008o3r6cv4iksnjs","to":{"blockId":"cl3jvfzsd008a3r6cyojkcmxg"},"from":{"itemId":"cl3jvg56u008d3r6c60v1u3gx","stepId":"cl3jvg56u008c3r6cldq5f86b","blockId":"cl3jvg56n008b3r6cirpadg20"}},{"id":"cl3jvoexa008u3r6cjdrvnlji","to":{"blockId":"cl3jvo6gy008s3r6ctmf3bez1"},"from":{"itemId":"cl3jvhdkk008j3r6crihx3icn","stepId":"cl3jvg56u008c3r6cldq5f86b","blockId":"cl3jvg56n008b3r6cirpadg20"}},{"id":"cl3jvvn2900953r6ck0kly1cy","to":{"blockId":"cl3jvo6gy008s3r6ctmf3bez1"},"from":{"stepId":"cl3jvg56u008c3r6cldq5f86b","blockId":"cl3jvg56n008b3r6cirpadg20"}},{"id":"cl3jvy02r009c3r6covwb8kxy","to":{"blockId":"cl3juphxu006o3r6c3u10ciwe"},"from":{"stepId":"cl3juk2w600693r6cge48lalk","blockId":"cl3jugsyf00673r6c2nx7e702"}},{"id":"cl3jw2j8d009p3r6cbv34nb7u","to":{"blockId":"cl3jv8mq3007y3r6cnoajkt2p"},"from":{"itemId":"cl3jv6ioq007v3r6co3uii8ky","stepId":"cl3jv6ioq007u3r6c9phbnyxy","blockId":"cl3jv6ioi007t3r6cil6kfh35"}},{"from":{"blockId":"cl3jul9ve006d3r6c7rgyhfdr","stepId":"cl3jul70g006b3r6ca2kv1hfs"},"to":{"blockId":"cl3juphxu006o3r6c3u10ciwe","stepId":"cl3juphxu006p3r6cjq4mhln9"},"id":"cl3kujvgt000b3r6cyvsanwbo"},{"from":{"blockId":"cl3juve2n006y3r6c5009fqn4","stepId":"cl3juve2n006z3r6cqssy2b3r"},"to":{"blockId":"cl3juzuaq00783r6cwb2iqn1n","stepId":"cl3juzuaq00793r6c9liudmhy"},"id":"cl3kuulyn000f3r6cwdeot5v9"},{"from":{"blockId":"cl3jv8mq3007y3r6cnoajkt2p","stepId":"cl3jva39b00813r6c529mbcwb","itemId":"cl3kv4qao000i3r6cf9ko8p9q"},"to":{"blockId":"cl3kxsn9b003m3r6cbngvkasu"},"id":"cl3kxspyl003o3r6chm5x6qn4"},{"from":{"blockId":"cl3jv8mq3007y3r6cnoajkt2p","stepId":"cl3jva39b00813r6c529mbcwb"},"to":{"blockId":"cl3kxsn9b003m3r6cbngvkasu"},"id":"cl3kxsr99003q3r6ckf4xszt5"},{"from":{"blockId":"cl3jv2p61007j3r6cvy5x0utz","stepId":"cl3kyp6mi004c3r6capadgmnv"},"to":{"blockId":"cl3jv6ioi007t3r6cil6kfh35"},"id":"cl3kypshz004h3r6cpjz8psie"},{"from":{"blockId":"cl3ksmr2k00ar3r6cipdzcbjm","stepId":"cl3jw3a1r009w3r6cvm6kebvk"},"to":{"blockId":"cl3jv6ioi007t3r6cil6kfh35"},"id":"cl3kzkto600583r6cokyv9t1b"},{"from":{"blockId":"cl3juafta005i3r6cwkswbht9","stepId":"cl3kzoz90005d3r6c6701hi36","itemId":"cl3kzp7nh005i3r6cyuje7kwn"},"to":{"blockId":"cl3kzqbj5005m3r6ciqxxsj4o"},"id":"cl3kzqvrk005v3r6ccypvuon5"},{"from":{"blockId":"cl3juafta005i3r6cwkswbht9","stepId":"cl3juaftf005j3r6cnv4t6z2r"},"to":{"blockId":"cl3jul9ve006d3r6c7rgyhfdr","stepId":"cl3jul70g006b3r6ca2kv1hfs"},"id":"cl3kzretq00643r6cbg4w0ccc"},{"from":{"blockId":"cl3jrb5j1000t3r6czdf05azx","stepId":"cl1seoz570001xk1ab0rd05k6"},"to":{"blockId":"cl3jrb5j1000u3r6crta0de81"},"id":"cl3l06q5i006q3r6c3j0ggvq7"}],"theme":{"chat":{"inputs":{"color":"#303235","backgroundColor":"#FFFFFF","placeholderColor":"#9095A0"},"buttons":{"color":"#FFFFFF","backgroundColor":"#0042DA"},"hostAvatar":{"isEnabled":true},"guestAvatar":{"isEnabled":false},"hostBubbles":{"color":"#303235","backgroundColor":"#F7F8FF"},"guestBubbles":{"color":"#FFFFFF","backgroundColor":"#FF8E21"}},"general":{"font":"Open Sans","background":{"type":"Color","content":"#474a4d"}}},"settings":{"general":{"isBrandingEnabled":true,"isInputPrefillEnabled":true,"isNewResultOnRefreshEnabled":false},"metadata":{"description":"Build beautiful conversational forms and embed them directly in your applications without a line of code. Triple your response rate and collect answers that has more value compared to a traditional form."},"typingEmulation":{"speed":300,"enabled":true,"maxDelay":1.5}},"publicId":"band-booking-ycfj5p6","customDomain":null,"workspaceId":"cl3jr7v7l230809liobdo2neu"}

UpgradeModal directory name

The name of the directory of UpgradeModal (apps/builder/components/shared/modals/UpgradeModal.) ends with a dot, is this intentional?
The dot at the end of the directory name makes it impossible to check out the repository using Windows.

Data migrated, can't run the manual migrations anymore

I pulled the v2.1.0 code and rebuilt the app within Docker (using docker-compose build). When starting the app, the prisma db migrations happened as expected, but what's the best way to run the remaining migrations when deploying via Docker?

builder_1  | The following migrations have been applied:
builder_1  |
builder_1  | migrations/
builder_1  |   โ””โ”€ 20220513223344_add_workspaces/
builder_1  |     โ””โ”€ migration.sql
builder_1  |   โ””โ”€ 20220514235014_remove_owner_id/
builder_1  |     โ””โ”€ migration.sql
builder_1  |
builder_1  | All migrations have been successfully applied.
builder_1  | info  - Loaded env from /app/.env.production
builder_1  | Listening on port 3000

Originally posted by @teq-dev in #37 (comment)

Docker build problem after latest commits

#19 5.627 models:build: $ tsc
#19 6.918 models:build: src/typebot/steps/bubble.ts(2,26): error TS2307: Cannot find module '@udecode/plate-core' or its corresponding type declarations.
#19 6.948 models:build: error Command failed with exit code 2.
#19 6.949 models:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
#19 6.955 models:build: Error: command finished with error: command (packages/models) yarn run build exited (2)
#19 6.955
#19 6.955  Tasks:    1 successful, 2 total
#19 6.955 Cached:    0 cached, 2 total
#19 6.955 command (packages/models) yarn run build exited (2)
#19 6.956   Time:    6.668s
#19 6.956
#19 6.974 error Command failed with exit code 2.
#19 6.974 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
------
executor failed running [/bin/sh -c yarn turbo run build --scope=${SCOPE} --include-dependencies --no-deps]: exit code: 2
ERROR: Service 'viewer' failed to build : Build failed```

Error installing Typebot with Docker

Hi @baptisteArno

Thanks for this awesome project. ๐Ÿ‘

I'm getting some errors when trying to install on my VPS with Docker here is the complete execution output for your reference.

root@vps-falkenstein:/var/www/typebot# docker-compose up -d
WARNING: Python-dotenv could not parse statement starting at line 11
Creating network "typebot_default" with the default driver
Creating volume "typebot_db_data" with default driver
Creating volume "typebot_s3_data" with default driver
Pulling db (postgres:13)...
13: Pulling from library/postgres
214ca5fb9032: Pull complete
e6930973d723: Pull complete
aea7c534f4e1: Pull complete
d0ab8814f736: Pull complete
648cc138980a: Pull complete
7804b894301c: Pull complete
cfce56252c3f: Pull complete
8cce7305e3b6: Pull complete
aa0c0227e86a: Pull complete
8246cee774af: Pull complete
8a72a860cc25: Pull complete
d30d1a75aee3: Pull complete
7dd91cedb27f: Pull complete
Digest: sha256:e3354da5b11f8c52eca6ae00725acf5bb0d07c17d33ceea95d706188e14a0dd5
Status: Downloaded newer image for postgres:13
Building builder
Sending build context to Docker daemon  44.97MB
Step 1/32 : FROM node:16-slim AS base
16-slim: Pulling from library/node
c32ce6654453: Pull complete 
866efb834763: Pull complete 
3009c2701a70: Pull complete 
704508b5309b: Pull complete 
11cc6386a88d: Pull complete 
Digest: sha256:e5936cf8dbbb3c0d9d337c0e9f23e56e00b7e62280a8a617d12adfdda8ca9f11
Status: Downloaded newer image for node:16-slim
 ---> 005beb7a8100
Step 2/32 : WORKDIR /app
 ---> Running in d89fee3eb850
Removing intermediate container d89fee3eb850
 ---> 204f6b33adec
Step 3/32 : ARG SCOPE
 ---> Running in dcf93e573c50
Removing intermediate container dcf93e573c50
 ---> 438d839cbd39
Step 4/32 : ENV SCOPE=${SCOPE}
 ---> Running in 6aa1552089d5
Removing intermediate container 6aa1552089d5
 ---> 11ed24329051
Step 5/32 : FROM base AS pruner
 ---> 11ed24329051
Step 6/32 : RUN yarn global add [email protected]
 ---> Running in d17dddc953fe
yarn global v1.22.18
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
[4/4] Building fresh packages...
success Installed "[email protected]" with binaries:
      - turbo
Done in 3.49s.
Removing intermediate container d17dddc953fe
 ---> 6bc808ba3306
Step 7/32 : COPY . .
 ---> 0534d980b902
Step 8/32 : RUN turbo prune --scope=${SCOPE} --docker
 ---> Running in 90269a99a778
Generating pruned monorepo for builder in /app/out
 - Added builder
 - Added utils
 - Added models
 - Added db
 - Added typebot-js
 - Added bot-engine
Removing intermediate container 90269a99a778
 ---> c7db93fc3180
Step 9/32 : FROM base AS installer
 ---> 11ed24329051
Step 10/32 : COPY --from=pruner /app/out/json/ .
 ---> d03f9574fb3b
Step 11/32 : COPY --from=pruner /app/out/yarn.lock ./yarn.lock
 ---> e291d9392a71
Step 12/32 : RUN yarn install --frozen-lockfile
 ---> Running in b6ce7a9577d5
yarn install v1.22.18
[1/4] Resolving packages...
[2/4] Fetching packages...
[3/4] Linking dependencies...
warning " > [email protected]" has unmet peer dependency "react@^18.1.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "prop-types@^15.5.9".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react@>= 16.3".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react-dom@>= 16.3".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react@>=0.16.8".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react-dom@>=0.16.8".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react-dom@^15.5.4 || ^16.0.0 || ^17.0.0 || ^18.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react@>=16.6.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "react-dom@>=16.6.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > @typescript-eslint/[email protected]" has unmet peer dependency "@typescript-eslint/parser@^5.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "next@>=10.2.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > bot-engine > [email protected]" has unmet peer dependency "prettier@>=2.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > db > [email protected]" has unmet peer dependency "@types/node@*".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > [email protected]" has unmet peer dependency "react@^17.0.2 || ^18.0.0-0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > [email protected]" has unmet peer dependency "react-dom@^17.0.2 || ^18.0.0-0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/[email protected]" has unmet peer dependency "react@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/[email protected]" has unmet peer dependency "react-dom@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/[email protected]" has unmet peer dependency "slate@>=0.66.1".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/[email protected]" has unmet peer dependency "slate-history@>=0.66.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/[email protected]" has unmet peer dependency "slate-react@>=0.74.2".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > typebot-js > [email protected]" has incorrect peer dependency "eslint@^8.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > typebot-js > [email protected]" has unmet peer dependency "webpack@^5.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @giphy/[email protected]" has incorrect peer dependency "[email protected] - 17".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > [email protected]" has incorrect peer dependency "react@^0.14.0 || ^15.0.0-0 || ^16.0.0 || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > [email protected]" has incorrect peer dependency "react@^16.0.0 || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > [email protected]" has incorrect peer dependency "react-dom@^16.0.0 || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > [email protected]" has incorrect peer dependency "react@^16.8.3 || ^17.0.0-0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > [email protected]" has unmet peer dependency "react-is@>= 16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > next > [email protected]" has unmet peer dependency "react@>= 16.8.0 || 17.x.x || ^18.0.0-0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > [email protected]" has unmet peer dependency "react@>=16.8".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > [email protected]" has unmet peer dependency "react@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @emotion/react > @emotion/[email protected]" has unmet peer dependency "@babel/core@^7.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @giphy/react-components > [email protected]" has incorrect peer dependency "react@^16.8.0  || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @giphy/react-components > [email protected]" has incorrect peer dependency "react-dom@^16.8.0  || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @udecode/plate-ui-link > @udecode/[email protected]" has unmet peer dependency "react-is@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @udecode/plate-ui-toolbar > [email protected]" has unmet peer dependency "@popperjs/core@^2.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @udecode/plate-ui-toolbar > [email protected]" has incorrect peer dependency "react@^16.8.0  || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @udecode/plate-ui-toolbar > [email protected]" has incorrect peer dependency "react-dom@^16.8.0  || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > kbar > @reach/[email protected]" has incorrect peer dependency "react@^16.8.0 || 17.x".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > kbar > @reach/[email protected]" has incorrect peer dependency "react-dom@^16.8.0 || 17.x".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > kbar > [email protected]" has incorrect peer dependency "react@^16.6.3 || ^17.0.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > @udecode/zustood > [email protected]" has unmet peer dependency "react@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > @udecode/zustood > [email protected]" has unmet peer dependency "scheduler@>=0.19.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @emotion/react > @emotion/babel-plugin > @babel/[email protected]" has unmet peer dependency "@babel/core@^7.0.0-0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > kbar > @reach/portal > @reach/[email protected]" has incorrect peer dependency "react@^16.8.0 || 17.x".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > kbar > @reach/portal > @reach/[email protected]" has incorrect peer dependency "react-dom@^16.8.0 || 17.x".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > @udecode/zustood > react-tracked > [email protected]" has unmet peer dependency "react@>=16.8.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > models > @udecode/plate-core > @udecode/zustood > react-tracked > [email protected]" has unmet peer dependency "scheduler@>=0.19.0".
warning "workspace-aggregator-730bcd56-a5db-4ff8-bfe8-9fad0bca398e > builder > @chakra-ui/react > @chakra-ui/modal > @chakra-ui/focus-lock > [email protected]" has incorrect peer dependency "react@^16.8.0 || ^17.0.0".
[4/4] Building fresh packages...
Done in 43.84s.
Removing intermediate container b6ce7a9577d5
 ---> 1527d936658d
Step 13/32 : FROM base AS builder
 ---> 11ed24329051
Step 14/32 : COPY --from=installer /app/ .
 ---> 5619449d2f4d
Step 15/32 : COPY --from=pruner /app/out/full/ .
 ---> f4fe53274771
Step 16/32 : RUN apt-get -qy update && apt-get -qy install openssl
 ---> Running in 5844438c2aca
Get:1 http://deb.debian.org/debian buster InRelease [122 kB]
Get:2 http://security.debian.org/debian-security buster/updates InRelease [65.4 kB]
Get:3 http://deb.debian.org/debian buster-updates InRelease [51.9 kB]
Get:4 http://security.debian.org/debian-security buster/updates/main amd64 Packages [323 kB]
Get:5 http://deb.debian.org/debian buster/main amd64 Packages [7911 kB]
Get:6 http://deb.debian.org/debian buster-updates/main amd64 Packages [8796 B]
Fetched 8482 kB in 1s (6152 kB/s)
Reading package lists...
Reading package lists...
Building dependency tree...
Reading state information...
The following package was automatically installed and is no longer required:
  lsb-base
Use 'apt autoremove' to remove it.
The following additional packages will be installed:
  libssl1.1
Suggested packages:
  ca-certificates
The following NEW packages will be installed:
  libssl1.1 openssl
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 2405 kB of archives.
After this operation, 5701 kB of additional disk space will be used.
Get:1 http://security.debian.org/debian-security buster/updates/main amd64 libssl1.1 amd64 1.1.1n-0+deb10u2 [1551 kB]
Get:2 http://security.debian.org/debian-security buster/updates/main amd64 openssl amd64 1.1.1n-0+deb10u2 [855 kB]
debconf: delaying package configuration, since apt-utils is not installed
Fetched 2405 kB in 0s (39.1 MB/s)
Selecting previously unselected package libssl1.1:amd64.
(Reading database ... 6469 files and directories currently installed.)
Preparing to unpack .../libssl1.1_1.1.1n-0+deb10u2_amd64.deb ...
Unpacking libssl1.1:amd64 (1.1.1n-0+deb10u2) ...
Selecting previously unselected package openssl.
Preparing to unpack .../openssl_1.1.1n-0+deb10u2_amd64.deb ...
Unpacking openssl (1.1.1n-0+deb10u2) ...
Setting up libssl1.1:amd64 (1.1.1n-0+deb10u2) ...
debconf: unable to initialize frontend: Dialog
debconf: (TERM is not set, so the dialog frontend is not usable.)
debconf: falling back to frontend: Readline
debconf: unable to initialize frontend: Readline
debconf: (Can't locate Term/ReadLine.pm in @INC (you may need to install the Term::ReadLine module) (@INC contains: /etc/perl /usr/local/lib/x86_64-linux-gnu/perl/5.28.1 /usr/local/share/perl/5.28.1 /usr/lib/x86_64-linux-gnu/perl5/5.28 /usr/share/perl5 /usr/lib/x86_64-linux-gnu/perl/5.28 /usr/share/perl/5.28 /usr/local/lib/site_perl /usr/lib/x86_64-linux-gnu/perl-base) at /usr/share/perl5/Debconf/FrontEnd/Readline.pm line 7.)
debconf: falling back to frontend: Teletype
Setting up openssl (1.1.1n-0+deb10u2) ...
Processing triggers for libc-bin (2.28-10+deb10u1) ...
Removing intermediate container 5844438c2aca
 ---> a4912c8d793c
Step 17/32 : RUN yarn turbo run build --scope=${SCOPE} --include-dependencies --no-deps
 ---> Running in 9f9cbc6ee681
yarn run v1.22.18
$ /app/node_modules/.bin/turbo run build --scope=builder --include-dependencies --no-deps
 WARNING  cannot find a .git folder. Falling back to manual file hashing (which may be slower). If you are running this build in a pruned directory, you can ignore this message. Otherwise, please initialize a git repository in the root of your monorepo
โ€ข Packages in scope: bot-engine, builder, db, models, typebot-js, utils
โ€ข Running build in 6 packages
db:build: cache miss, executing ebfbb18ffaf9b65b
typebot-js:build: cache miss, executing 72f4f6ad7415a99d
db:build: $ yarn generate:schema
typebot-js:build: $ yarn lint && rollup -c
db:build: $ dotenv -e ../../apps/builder/.env.local prisma generate
typebot-js:build: $ eslint src --ext .ts && eslint tests --ext .ts
db:build: Prisma schema loaded from prisma/schema.prisma
db:build: 
db:build: โœ” Generated Prisma Client (3.14.0 | library) to ./../../node_modules/@prisma/client in 1.17s
db:build: You can now start using Prisma Client in your code. Reference: https://pris.ly/d/client
db:build: ```
db:build: import { PrismaClient } from '@prisma/client'
db:build: const prisma = new PrismaClient()
db:build: ```
models:build: cache miss, executing fbc869cfbcfcceeb
models:build: $ tsc
typebot-js:build: 
typebot-js:build: src/index.ts โ†’ dist/index.js...
utils:build: cache miss, executing ef821bbc6752e2ea
typebot-js:build: (!) Circular dependency
typebot-js:build: src/embedTypes/chat/index.ts -> src/embedTypes/chat/proactiveMessage.ts -> src/embedTypes/chat/index.ts
typebot-js:build: created dist/index.js in 5m 38.2s
typebot-js:build: 
typebot-js:build: src/index.ts โ†’ dist/index.umd.min.js...
utils:build: $ yarn rollup -c
utils:build: $ /app/node_modules/.bin/rollup -c
utils:build: 
utils:build: src/index.ts โ†’ dist/cjs/index.js, dist/esm/index.js...
typebot-js:build: (!) Circular dependency
typebot-js:build: src/embedTypes/chat/index.ts -> src/embedTypes/chat/proactiveMessage.ts -> src/embedTypes/chat/index.ts
typebot-js:build: created dist/index.umd.min.js in 11m 16.1s
utils:build: created dist/cjs/index.js, dist/esm/index.js in 11m 18.2s
utils:build: 
utils:build: dist/esm/types/index.d.ts โ†’ dist/index.d.ts...
utils:build: created dist/index.d.ts in 57ms
bot-engine:build: cache miss, executing 4d941e0993c8ab7f
bot-engine:build: $ yarn rollup -c
bot-engine:build: $ /app/node_modules/.bin/rollup -c
bot-engine:build: 
bot-engine:build: src/index.ts โ†’ dist/cjs/index.js, dist/esm/index.js...
bot-engine:build: Killed
bot-engine:build: error Command failed with exit code 137.
bot-engine:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
bot-engine:build: error Command failed with exit code 137.
bot-engine:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
bot-engine:build: Error: command finished with error: command (packages/bot-engine) yarn run build exited (137)
command (packages/bot-engine) yarn run build exited (137)

 Tasks:    4 successful, 5 total
Cached:    0 cached, 5 total
  Time:    17m22.358s 

error Command failed with exit code 137.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
The command '/bin/sh -c yarn turbo run build --scope=${SCOPE} --include-dependencies --no-deps' returned a non-zero code: 137
ERROR: Service 'builder' failed to build : Build failed

Here is my Builder .env.production

DATABASE_URL=postgresql://postgres:typebot@db:5432/typebot
NEXT_PUBLIC_VIEWER_URL=http://localhost:8081
ENCRYPTION_SECRET=SgVkYp2s5v8y/B?E(H+MbQeThWmZq4t6
ADMIN_EMAIL=[email protected]
NEXTAUTH_URL=http://localhost:8082
NEXTAUTH_URL_INTERNAL=http://host.docker.internal:8082
SMTP_USERNAME=[email protected]
SMTP_PASSWORD=myStrongpassword
SMTP_HOST=smtp.gmail.com
SMTP_PORT=465
NEXT_PUBLIC_SMTP_FROM="Typebot Notifications" <[email protected]>

Here is my Viewer .env.production

DATABASE_URL=postgresql://postgres:typebot@db:5432/typebot
NEXT_PUBLIC_VIEWER_URL=http://localhost:8081
ENCRYPTION_SECRET=SgVkYp2s5v8y/B?E(H+MbQeThWmZq4t6
ADMIN_EMAIL=[email protected]

Other Information:

  • Docker version 20.10.12, build e91ed57
  • docker-compose version 1.29.2, build 5becea4c
  • Linux vps-falkenstein 5.4.0-91-generic #102-Ubuntu SMP Fri Nov 5 16:31:28 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Auth providers

@baptisteArno I trying to run the app with docker... that app is building and starting fine.

Next step, I try to use nginx over that docker and proxy requests with the domain app.example.com

I set NEXTAUTH_URL=https://app.example.com
What I should set in .env.production to get something more like this https://monosnap.com/file/xs17jNNfoXlbR8Ah3eFJ2Emil6Zj5b ?
For example, I want to have Google auth, and regular authorization by email... Maybe somewhere is a list of correct values?

Reset variables before restart of the bot

I have a fairly complex bot, where in some point, I offer to restart the QA process

Before the restart, I need to clear the variables, so the visitor can type new answers, without the need to delete old answers first

I tried to "Set variables" and select only variables, but that doesn't work because if you don't put anything in the "Value" field, Typebot doesn't take this into account at all

image

I also tried to "Set variables" and put the one space in the "Value" field. In that case, when the bot is restarted, you get "0" in the question field

image

Can you tell me is it possible to reset the variable to be empty?

Self-hosted - Workspace Member Invitation emails not delivered

Hi, I've tried to invite other users via Workspace->Members, but the user never receives the invitation email. Also, I don't see the invitation email hitting my SMTP server from Typebot. Other emails (such as email login magic link) are working correctly.

Type 'undefined' is not assignable to type 'number'.

There is issue when building docker image

builder:build: https://nextjs.org/telemetry
builder:build: 
builder:build: info  - Checking validity of types...
builder:build: Failed to compile.
builder:build: 
builder:build: ./components/share/integrations/modals/React/ReactInstructions.tsx:60:51
builder:build: Type error: Type 'number | undefined' is not assignable to type 'number'.
builder:build:   Type 'undefined' is not assignable to type 'number'.
builder:build: 
builder:build:   58 |       />
builder:build:   59 |       <Text>Initialize the typebot</Text>
builder:build: > 60 |       <PopupReactCode withStarterVariables={true} delay={inputValue} />
builder:build:      |                                                   ^
builder:build:   61 |     </Stack>
builder:build:   62 |   )
builder:build:   63 | }
builder:build: error Command failed with exit code 1.
builder:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
builder:build: Error: command finished with error: command (apps/builder) yarn run build exited (1)
command (apps/builder) yarn run build exited (1)

Make GitHub identity provider optional

When selfhosting this application for our organization, we don't want users to be able to sign up via GitHub, but the GitHub button cannot be removed currently.
Additionally, it might generally be a good idea to specify the client-id and client-secret via an environment variable and not in the source code. ๐Ÿ˜‰

I would change the [...nextauth].ts file to only include the GitHub IDP when the required environment variables are set, but this would probably break your current deployment, right?

Alternatively, we could implement this in a less clean way and add an environment variable that, when set, disables the GitHub login.

Errors during Docker build

I encountered the following declaration error during the Docker build process. This happened in two places: bot-engine:build and builder:build. The error was only fatal during the builder:build step.

builder:build: info  - Checking validity of types...
builder:build: Failed to compile.
builder:build:
builder:build: ./components/auth/SocialLoginButtons.tsx:6:27
builder:build: Type error: Could not find a declaration file for module 'qs'. '/app/node_modules/qs/lib/index.js' implicitly has an 'any' type.
builder:build:   Try `npm i --save-dev @types/qs` if it exists or add a new declaration (.d.ts) file containing `declare module 'qs';`
builder:build:
builder:build:   4 | import { useRouter } from 'next/router'
builder:build:   5 | import React from 'react'
builder:build: > 6 | import { stringify } from 'qs'
builder:build:     |                           ^
builder:build:   7 | import { FacebookLogo, GoogleLogo } from 'assets/logos'
builder:build:   8 |
builder:build:   9 | export const SocialLoginButtons = () => {
builder:build: error Command failed with exit code 1.
builder:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
builder:build: Error: command finished with error: command (apps/builder) yarn run build exited (1)
command (apps/builder) yarn run build exited (1)
bot-engine:build: cache miss, executing 2e4d68d48ed032ad
bot-engine:build: $ yarn rollup -c
bot-engine:build: $ /app/node_modules/.bin/rollup -c
bot-engine:build:
bot-engine:build: src/index.ts โ†’ dist/cjs/index.js, dist/esm/index.js...
bot-engine:build: (!) Plugin typescript: @rollup/plugin-typescript TS7016: Could not find a declaration file for module 'qs'. '/app/node_modules/qs/lib/index.js' implicitly has an 'any' type.
bot-engine:build:   Try `npm i --save-dev @types/qs` if it exists or add a new declaration (.d.ts) file containing `declare module 'qs';`
bot-engine:build: src/services/integration.ts: (20:27)
bot-engine:build:
bot-engine:build: 20 import { stringify } from 'qs'
bot-engine:build:                              ~~~~
bot-engine:build:

To allow the build process to finish, I added the following to apps/builder/tsconfig.json:

teq-dev@050f8c7

I also encountered the following Type error during the builder:build process:

builder:build: info  - Checking validity of types...
builder:build: Failed to compile.
builder:build:
builder:build: ./services/graph.ts:75:17
builder:build: Type error: Argument of type 'string' is not assignable to parameter of type 'never'.
builder:build:
builder:build:   73 |       ? sourcePosition.x + (targetPosition.x - sourcePosition.x) / 2
builder:build:   74 |       : sourcePosition.x - (sourcePosition.x - targetPosition.x) / 2
builder:build: > 75 |   segments.push(`L${firstSegmentX},${sourcePosition.y}`)
builder:build:      |                 ^
builder:build:   76 |   segments.push(`L${firstSegmentX},${targetPosition.y}`)
builder:build:   77 |   segments.push(`L${targetPosition.x},${targetPosition.y}`)
builder:build:   78 |   return segments.join(' ')
builder:build: error Command failed with exit code 1.
builder:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
builder:build: Error: command finished with error: command (apps/builder) yarn run build exited (1)
command (apps/builder) yarn run build exited (1)

To allow the build process to finish, I updated apps/builder/services/graph.ts as follows:

teq-dev@03ebdd5

After these changes, the Docker build was successful!

Docker self hosting build of viewer failed. Error occurred prerendering page "/404"

I have followed the steps for the Self Hosting but the viewer compilation fails during the prerendering page "/404" in nextjs build.

The database inspector at http://localhost:5555/ works fine but the builder at http://localhost:3000/ only displays a compilation error message.

Here are the relevant lines from the terminal build command:

#21 28.01 viewer:build: $ next build
#21 28.41 viewer:build: info  - Loaded env from /app/apps/viewer/.env.production
#21 28.62 viewer:build: warn  - You have enabled experimental feature(s).
#21 28.62 viewer:build: warn  - Experimental features are not covered by semver, and may cause unexpected or broken application behavior. Use them at your own risk.
#21 28.62 viewer:build:
#21 28.64 viewer:build: Attention: Next.js now collects completely anonymous telemetry regarding usage.
#21 28.64 viewer:build: This information is used to shape Next.js' roadmap and prioritize features.
#21 28.64 viewer:build: You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
#21 28.64 viewer:build: https://nextjs.org/telemetry
#21 28.64 viewer:build:
#21 28.69 viewer:build: info  - Checking validity of types...
#21 34.23 viewer:build: info  - Creating an optimized production build...
#21 44.38 viewer:build: info  - Compiled successfully
#21 44.38 viewer:build: info  - Collecting page data...
#21 46.47 viewer:build: info  - Generating static pages (0/1)
#21 46.60 viewer:build:
#21 46.60 viewer:build: Error occurred prerendering page "/404". Read more: https://nextjs.org/docs/messages/prerender-error
#21 46.60 viewer:build: Error: Minified React error #321; visit https://reactjs.org/docs/error-decoder.html?invariant=321 for the full message or use the non-minified dev environment for full errors and additional helpful warnings.
#21 46.60 viewer:build:     at S (/app/apps/viewer/node_modules/react/cjs/react.production.min.js:18:327)
#21 46.60 viewer:build:     at Object.exports.useContext (/app/apps/viewer/node_modules/react/cjs/react.production.min.js:22:269)
#21 46.60 viewer:build:     at Html (/app/apps/viewer/.next/server/pages/_document.js:538:73)
#21 46.60 viewer:build:     at d (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:33:498)
#21 46.60 viewer:build:     at bb (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:36:16)
#21 46.60 viewer:build:     at a.b.render (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:42:43)
#21 46.60 viewer:build:     at a.b.read (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:41:83)
#21 46.60 viewer:build:     at Object.exports.renderToStaticMarkup (/app/node_modules/react-dom/cjs/react-dom-server.node.production.min.js:51:446)
#21 46.60 viewer:build:     at renderToHTML (/app/node_modules/next/dist/server/render.js:909:39)
#21 46.60 viewer:build:     at async /app/node_modules/next/dist/export/worker.js:269:36
#21 46.60 viewer:build: info  - Generating static pages (1/1)
#21 46.60 viewer:build:
#21 46.60 viewer:build: > Build error occurred
#21 46.60 viewer:build: Error: Export encountered errors on following paths:
#21 46.60 viewer:build:         /404
#21 46.60 viewer:build:     at /app/node_modules/next/dist/export/index.js:498:19
#21 46.60 viewer:build:     at runMicrotasks (<anonymous>)
#21 46.60 viewer:build:     at processTicksAndRejections (node:internal/process/task_queues:96:5)
#21 46.60 viewer:build:     at async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:75:20)
#21 46.60 viewer:build:     at async /app/node_modules/next/dist/build/index.js:1024:17
#21 46.60 viewer:build:     at async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:75:20)
#21 46.60 viewer:build:     at async /app/node_modules/next/dist/build/index.js:898:13
#21 46.60 viewer:build:     at async Span.traceAsyncFn (/app/node_modules/next/dist/trace/trace.js:75:20)
#21 46.60 viewer:build:     at async Object.build [as default] (/app/node_modules/next/dist/build/index.js:82:25)
#21 46.66 viewer:build: error Command failed with exit code 1.
#21 46.66 viewer:build: info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
#21 46.67 viewer:build: Error: command finished with error: command (apps/viewer) yarn run build exited (1)
#21 46.67 command (apps/viewer) yarn run build exited (1)
#21 46.67
#21 46.67  Tasks:    4 successful, 5 total
#21 46.67 Cached:    0 cached, 5 total
#21 46.67   Time:    46s
#21 46.67
#21 46.69 error Command failed with exit code 1.
#21 46.69 info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
------
failed to solve: rpc error: code = Unknown desc = executor failed running [/bin/sh -c yarn turbo run build --scope=${SCOPE} --include-dependencies]: exit code: 1

Removing collaborator from flow results in 500 error

We receive a 500 error in the browser, and the following error from the application when attempting to remove an existing collaborator from a flow. This only occurs for collaborators that have accepted the invitation to the flow and logged in. Pending collaborators who have not logged-in can be removed from the flow without issue.

builder_1  | PrismaClientKnownRequestError: 
builder_1  | Invalid `prisma.collaboratorsOnTypebots.delete()` invocation:
builder_1  | 
builder_1  | 
builder_1  |   An operation failed because it depends on one or more records that were required but not found. Record to delete does not exist.
builder_1  |     at Object.request (/app/node_modules/@prisma/client/runtime/index.js:39818:15)
builder_1  |     at async PrismaClient._request (/app/node_modules/@prisma/client/runtime/index.js:40649:18)
builder_1  |     at async handler (/app/.next/server/pages/api/typebots/[typebotId]/collaborators/[userId].js:80:9) {
builder_1  |   code: 'P2025',
builder_1  |   clientVersion: '3.11.1',
builder_1  |   meta: { cause: 'Record to delete does not exist.' }
builder_1  | }

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.