🔒 Revert ddos lockdown
@ -28,24 +28,24 @@ if (
|
|||||||
})
|
})
|
||||||
)
|
)
|
||||||
|
|
||||||
// if (isNotEmpty(env('SMTP_FROM')) && process.env.SMTP_AUTH_DISABLED !== 'true')
|
if (isNotEmpty(env('SMTP_FROM')) && process.env.SMTP_AUTH_DISABLED !== 'true')
|
||||||
// providers.push(
|
providers.push(
|
||||||
// EmailProvider({
|
EmailProvider({
|
||||||
// server: {
|
server: {
|
||||||
// host: process.env.SMTP_HOST,
|
host: process.env.SMTP_HOST,
|
||||||
// port: process.env.SMTP_PORT ? Number(process.env.SMTP_PORT) : 25,
|
port: process.env.SMTP_PORT ? Number(process.env.SMTP_PORT) : 25,
|
||||||
// secure: process.env.SMTP_SECURE
|
secure: process.env.SMTP_SECURE
|
||||||
// ? process.env.SMTP_SECURE === 'true'
|
? process.env.SMTP_SECURE === 'true'
|
||||||
// : false,
|
: false,
|
||||||
// auth: {
|
auth: {
|
||||||
// user: process.env.SMTP_USERNAME,
|
user: process.env.SMTP_USERNAME,
|
||||||
// pass: process.env.SMTP_PASSWORD,
|
pass: process.env.SMTP_PASSWORD,
|
||||||
// },
|
},
|
||||||
// },
|
},
|
||||||
// from: env('SMTP_FROM'),
|
from: env('SMTP_FROM'),
|
||||||
// sendVerificationRequest,
|
sendVerificationRequest,
|
||||||
// })
|
})
|
||||||
// )
|
)
|
||||||
|
|
||||||
if (
|
if (
|
||||||
isNotEmpty(process.env.GOOGLE_CLIENT_ID) &&
|
isNotEmpty(process.env.GOOGLE_CLIENT_ID) &&
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
import { Flex, Stack, Heading, Box, Text, Button } from '@chakra-ui/react'
|
import {
|
||||||
|
Flex,
|
||||||
|
Stack,
|
||||||
|
Heading,
|
||||||
|
Box,
|
||||||
|
Text,
|
||||||
|
Button,
|
||||||
|
Image,
|
||||||
|
} from '@chakra-ui/react'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import Image from 'next/image'
|
|
||||||
import { ArrowRight } from 'assets/icons/ArrowRight'
|
import { ArrowRight } from 'assets/icons/ArrowRight'
|
||||||
import { Flare } from 'assets/illustrations/Flare'
|
import { Flare } from 'assets/illustrations/Flare'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
@ -50,7 +57,13 @@ export const EasyBuildingExperience = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</Flex>
|
</Flex>
|
||||||
</Stack>
|
</Stack>
|
||||||
<Box rounded="md" data-aos="fade"></Box>
|
<Box rounded="md" data-aos="fade">
|
||||||
|
<Image
|
||||||
|
src="https://s3.typebot.io/builder-dnd.png"
|
||||||
|
alt="incomplete results illustration"
|
||||||
|
placeholder="blur"
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Flex>
|
</Flex>
|
||||||
)
|
)
|
||||||
|
@ -1,6 +1,13 @@
|
|||||||
import { Flex, Stack, Heading, Box, Text, Button } from '@chakra-ui/react'
|
import {
|
||||||
|
Flex,
|
||||||
|
Stack,
|
||||||
|
Heading,
|
||||||
|
Box,
|
||||||
|
Text,
|
||||||
|
Button,
|
||||||
|
Image,
|
||||||
|
} from '@chakra-ui/react'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import Image from 'next/image'
|
|
||||||
import { ArrowRight } from 'assets/icons/ArrowRight'
|
import { ArrowRight } from 'assets/icons/ArrowRight'
|
||||||
import { Flare } from 'assets/illustrations/Flare'
|
import { Flare } from 'assets/illustrations/Flare'
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
@ -51,6 +58,13 @@ export const EasyEmbed = () => {
|
|||||||
</Button>
|
</Button>
|
||||||
</Flex>
|
</Flex>
|
||||||
</Stack>
|
</Stack>
|
||||||
|
<Box rounded="md" data-aos="fade">
|
||||||
|
<Image
|
||||||
|
src="https://s3.typebot.io/native-feeling.png"
|
||||||
|
alt="incomplete results illustration"
|
||||||
|
placeholder="blur"
|
||||||
|
/>
|
||||||
|
</Box>
|
||||||
</Stack>
|
</Stack>
|
||||||
</Flex>
|
</Flex>
|
||||||
)
|
)
|
||||||
|
@ -1,10 +1,8 @@
|
|||||||
import { Box, BoxProps } from '@chakra-ui/react'
|
import { Box, BoxProps, Image } from '@chakra-ui/react'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import Image from 'next/image'
|
|
||||||
import spotlightSrc from 'public/images/homepage/spotlight.png'
|
|
||||||
|
|
||||||
export const BackgroundSpotlight = (props: BoxProps) => (
|
export const BackgroundSpotlight = (props: BoxProps) => (
|
||||||
<Box {...props}>
|
<Box {...props}>
|
||||||
<Image src={spotlightSrc} alt="spotlight" />
|
<Image src="https://s3.typebot.io/spotlight.png" alt="spotlight" />
|
||||||
</Box>
|
</Box>
|
||||||
)
|
)
|
||||||
|
@ -7,12 +7,12 @@ import {
|
|||||||
Stack,
|
Stack,
|
||||||
Text,
|
Text,
|
||||||
VStack,
|
VStack,
|
||||||
|
Image,
|
||||||
} from '@chakra-ui/react'
|
} from '@chakra-ui/react'
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import { Header } from '../../common/Header/Header'
|
import { Header } from '../../common/Header/Header'
|
||||||
import { BackgroundPolygons } from './BackgroundPolygons'
|
import { BackgroundPolygons } from './BackgroundPolygons'
|
||||||
import * as Logos from './Brands'
|
import * as Logos from './Brands'
|
||||||
import Image from 'next/image'
|
|
||||||
import Link from 'next/link'
|
import Link from 'next/link'
|
||||||
|
|
||||||
export const Hero = () => {
|
export const Hero = () => {
|
||||||
@ -93,12 +93,12 @@ export const Hero = () => {
|
|||||||
data-aos="zoom-out-up"
|
data-aos="zoom-out-up"
|
||||||
data-aos-delay="800"
|
data-aos-delay="800"
|
||||||
>
|
>
|
||||||
{/* <Image
|
<Image
|
||||||
src={builderScreenshotSrc}
|
src="https://s3.typebot.io/builder.png"
|
||||||
alt="Builder screenshot"
|
alt="Builder screenshot"
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
style={{ borderRadius: '10px' }}
|
style={{ borderRadius: '10px' }}
|
||||||
/> */}
|
/>
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
</VStack>
|
</VStack>
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
import { Avatar, Flex, HStack, Stack, Text } from '@chakra-ui/react'
|
import { Avatar, Flex, HStack, Stack, Text, Image } from '@chakra-ui/react'
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import Image from 'next/image'
|
|
||||||
import { TestimonialData } from './Testimonials'
|
import { TestimonialData } from './Testimonials'
|
||||||
import {
|
import {
|
||||||
CapterraIcon,
|
CapterraIcon,
|
||||||
@ -32,8 +31,8 @@ export const Testimonial = ({
|
|||||||
src={avatarSrc}
|
src={avatarSrc}
|
||||||
alt={name}
|
alt={name}
|
||||||
placeholder="blur"
|
placeholder="blur"
|
||||||
width={40}
|
width="40px"
|
||||||
height={40}
|
height="40px"
|
||||||
className="rounded-full"
|
className="rounded-full"
|
||||||
/>
|
/>
|
||||||
) : (
|
) : (
|
||||||
|
@ -1,23 +1,10 @@
|
|||||||
import { Flex, Heading, SimpleGrid, Stack, VStack } from '@chakra-ui/react'
|
import { Flex, Heading, SimpleGrid, Stack, VStack } from '@chakra-ui/react'
|
||||||
import * as React from 'react'
|
import * as React from 'react'
|
||||||
import joshuaPictureSrc from 'public/images/homepage/joshua.jpg'
|
|
||||||
import julienPictureSrc from 'public/images/homepage/julien.jpeg'
|
|
||||||
import nicolaiPictureSrc from 'public/images/homepage/nicolai.jpg'
|
|
||||||
import annaFilouPictureSrc from 'public/images/homepage/annaFilou.jpeg'
|
|
||||||
import theoPictureSrc from 'public/images/homepage/theo.jpeg'
|
|
||||||
import abhayPictureSrc from 'public/images/homepage/abhay.jpeg'
|
|
||||||
import lucasPictureSrc from 'public/images/homepage/lucas.png'
|
|
||||||
import oscarPictureSrc from 'public/images/homepage/oscar.jpeg'
|
|
||||||
import invictuzPictureSrc from 'public/images/homepage/invictuz.png'
|
|
||||||
import laszloPictureSrc from 'public/images/homepage/laszlo.jpeg'
|
|
||||||
import kurniaPictureSrc from 'public/images/homepage/kurnia.jpeg'
|
|
||||||
import stevePictureSrc from 'public/images/homepage/steve.jpg'
|
|
||||||
import { Testimonial } from './Testimonial'
|
import { Testimonial } from './Testimonial'
|
||||||
import { StaticImageData } from 'next/image'
|
|
||||||
|
|
||||||
export type TestimonialData = {
|
export type TestimonialData = {
|
||||||
name: string
|
name: string
|
||||||
avatarSrc?: StaticImageData
|
avatarSrc?: string
|
||||||
provider: 'email' | 'productHunt' | 'capterra' | 'reddit'
|
provider: 'email' | 'productHunt' | 'capterra' | 'reddit'
|
||||||
role?: string
|
role?: string
|
||||||
content: string | React.ReactNode
|
content: string | React.ReactNode
|
||||||
@ -28,7 +15,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Joshua Lim',
|
name: 'Joshua Lim',
|
||||||
role: 'Growth Strategist @ Socialhackrs Media',
|
role: 'Growth Strategist @ Socialhackrs Media',
|
||||||
avatarSrc: joshuaPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/joshua.jpg',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
content:
|
content:
|
||||||
'I upgraded my typeforms to typebots and saw a conversion rate increase from 14% to 43% on my marketing campaigns. I noticed the improvement on day one. That was a game-changer.',
|
'I upgraded my typeforms to typebots and saw a conversion rate increase from 14% to 43% on my marketing campaigns. I noticed the improvement on day one. That was a game-changer.',
|
||||||
@ -37,7 +24,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
name: 'Laszlo Csömör',
|
name: 'Laszlo Csömör',
|
||||||
role: 'Digital Marketing Expert',
|
role: 'Digital Marketing Expert',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
avatarSrc: laszloPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/laszlo.jpeg',
|
||||||
content: (
|
content: (
|
||||||
<>
|
<>
|
||||||
Typebot is one of the best chatbot builders with its intelligent
|
Typebot is one of the best chatbot builders with its intelligent
|
||||||
@ -53,6 +40,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
name: 'Mario Barretta',
|
name: 'Mario Barretta',
|
||||||
role: 'Customer Care Manager',
|
role: 'Customer Care Manager',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
|
avatarSrc: 'https://s3.typebot.io/barretta.jpeg',
|
||||||
content: (
|
content: (
|
||||||
<>
|
<>
|
||||||
Thanks to typebot I can finally make site forms much more modern and I
|
Thanks to typebot I can finally make site forms much more modern and I
|
||||||
@ -69,7 +57,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Lucas Barp',
|
name: 'Lucas Barp',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
avatarSrc: lucasPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/lucas.png',
|
||||||
role: 'Founder at Barp Digital',
|
role: 'Founder at Barp Digital',
|
||||||
content:
|
content:
|
||||||
'The result of your work is incredible and can make life easier for many people.',
|
'The result of your work is incredible and can make life easier for many people.',
|
||||||
@ -87,14 +75,14 @@ const testimonials: TestimonialData[][] = [
|
|||||||
name: 'Oscar',
|
name: 'Oscar',
|
||||||
role: 'CEO',
|
role: 'CEO',
|
||||||
provider: 'capterra',
|
provider: 'capterra',
|
||||||
avatarSrc: oscarPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/oscar.jpeg',
|
||||||
content:
|
content:
|
||||||
'Within 5 minutes of signing up you can already have your bot running thanks to the templates it comes with. I have used many tools to make bots but none as simple, easy and powerful as Typebot.',
|
'Within 5 minutes of signing up you can already have your bot running thanks to the templates it comes with. I have used many tools to make bots but none as simple, easy and powerful as Typebot.',
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Julien Muratot',
|
name: 'Julien Muratot',
|
||||||
role: 'Growth Manager @ Hornetwork',
|
role: 'Growth Manager @ Hornetwork',
|
||||||
avatarSrc: julienPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/julien.jpeg',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
content:
|
content:
|
||||||
'I run Google ads all year long on our landing page that contains a typebot. I saw a 2x increase on our conversation rate compared to our old WordPress form.',
|
'I run Google ads all year long on our landing page that contains a typebot. I saw a 2x increase on our conversation rate compared to our old WordPress form.',
|
||||||
@ -102,14 +90,14 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: '_Invictuz',
|
name: '_Invictuz',
|
||||||
provider: 'reddit',
|
provider: 'reddit',
|
||||||
avatarSrc: invictuzPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/invictuz.png',
|
||||||
content:
|
content:
|
||||||
"This is the sickest open-source project I've ever seen and demoed. The use case is so cool and modern and I can't believe how easy this is to get started using. The feature richness and polish in this project is incredible, it feel like a mature product. Unbelievable that this was built by one person. This is better than the demos of chatbot builders I've seen from full-fledged companies. I'm going to learn Typescript so that I can contribute to this someday. Mind-blowing stuff...",
|
"This is the sickest open-source project I've ever seen and demoed. The use case is so cool and modern and I can't believe how easy this is to get started using. The feature richness and polish in this project is incredible, it feel like a mature product. Unbelievable that this was built by one person. This is better than the demos of chatbot builders I've seen from full-fledged companies. I'm going to learn Typescript so that I can contribute to this someday. Mind-blowing stuff...",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: 'Theo Marechal',
|
name: 'Theo Marechal',
|
||||||
provider: 'productHunt',
|
provider: 'productHunt',
|
||||||
avatarSrc: theoPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/theo.jpeg',
|
||||||
role: 'Nocode expert and content creator',
|
role: 'Nocode expert and content creator',
|
||||||
content: (
|
content: (
|
||||||
<>
|
<>
|
||||||
@ -126,7 +114,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Abhay Kulkarni',
|
name: 'Abhay Kulkarni',
|
||||||
provider: 'productHunt',
|
provider: 'productHunt',
|
||||||
avatarSrc: abhayPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/abhay.jpeg',
|
||||||
role: 'Founder at Webisharp',
|
role: 'Founder at Webisharp',
|
||||||
content:
|
content:
|
||||||
'Using this tool for the last 2 hours & built a full lead capture bot. Pretty good experience till now. @baptiste_arnaud All the best for future :)',
|
'Using this tool for the last 2 hours & built a full lead capture bot. Pretty good experience till now. @baptiste_arnaud All the best for future :)',
|
||||||
@ -136,7 +124,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Steve de Jong',
|
name: 'Steve de Jong',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
avatarSrc: stevePictureSrc,
|
avatarSrc: 'https://s3.typebot.io/steve.jpg',
|
||||||
role: 'CEO at Stillio',
|
role: 'CEO at Stillio',
|
||||||
content: (
|
content: (
|
||||||
<>
|
<>
|
||||||
@ -171,7 +159,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
name: 'Kurnia Kwik',
|
name: 'Kurnia Kwik',
|
||||||
role: 'Founder at DigitalPointer.ID',
|
role: 'Founder at DigitalPointer.ID',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
avatarSrc: kurniaPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/kurnia.jpeg',
|
||||||
content: (
|
content: (
|
||||||
<>
|
<>
|
||||||
I have several chatbot builders, but Typebot is the one I use the
|
I have several chatbot builders, but Typebot is the one I use the
|
||||||
@ -184,7 +172,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Nicolai Grut',
|
name: 'Nicolai Grut',
|
||||||
role: 'CEO @ EcommerceNotebook.com',
|
role: 'CEO @ EcommerceNotebook.com',
|
||||||
avatarSrc: nicolaiPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/nicolai.jpg',
|
||||||
provider: 'email',
|
provider: 'email',
|
||||||
content:
|
content:
|
||||||
'I am really loving using Typebot! So good. I have used all the top bots and yours is definitely the most user friendly, and yet still so powerful.',
|
'I am really loving using Typebot! So good. I have used all the top bots and yours is definitely the most user friendly, and yet still so powerful.',
|
||||||
@ -192,7 +180,7 @@ const testimonials: TestimonialData[][] = [
|
|||||||
{
|
{
|
||||||
name: 'Anna Filou',
|
name: 'Anna Filou',
|
||||||
provider: 'productHunt',
|
provider: 'productHunt',
|
||||||
avatarSrc: annaFilouPictureSrc,
|
avatarSrc: 'https://s3.typebot.io/annaFilou.jpeg',
|
||||||
role: 'Geek, Designer, Illustrator, Web Dev',
|
role: 'Geek, Designer, Illustrator, Web Dev',
|
||||||
content:
|
content:
|
||||||
"Seems like the product I've been waiting for Typeform to make! 😝",
|
"Seems like the product I've been waiting for Typeform to make! 😝",
|
||||||
|
@ -5,7 +5,7 @@ export const SocialMetaTags = ({
|
|||||||
title = 'Typebot - Open-source conversational apps builder',
|
title = 'Typebot - Open-source conversational apps builder',
|
||||||
description = 'Powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.',
|
description = 'Powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.',
|
||||||
currentUrl,
|
currentUrl,
|
||||||
imagePreviewUrl = 'https://www.typebot.io/images/preview.png',
|
imagePreviewUrl = 'https://s3.typebot.io/preview.png',
|
||||||
}: {
|
}: {
|
||||||
title?: string
|
title?: string
|
||||||
description?: string
|
description?: string
|
||||||
|
@ -1,9 +1,7 @@
|
|||||||
import { Stack, Text, Box, Flex, Heading } from '@chakra-ui/react'
|
import { Stack, Text, Box, Flex, Heading, Image } from '@chakra-ui/react'
|
||||||
import { Header } from 'components/common/Header/Header'
|
import { Header } from 'components/common/Header/Header'
|
||||||
import { SocialMetaTags } from 'components/common/SocialMetaTags'
|
import { SocialMetaTags } from 'components/common/SocialMetaTags'
|
||||||
import React from 'react'
|
import React from 'react'
|
||||||
import selfie from '../public/images/about/selfie.png'
|
|
||||||
import Image from 'next/image'
|
|
||||||
import { Footer } from 'components/common/Footer'
|
import { Footer } from 'components/common/Footer'
|
||||||
import { TextLink } from 'components/common/TextLink'
|
import { TextLink } from 'components/common/TextLink'
|
||||||
|
|
||||||
@ -30,7 +28,7 @@ const AboutPage = () => {
|
|||||||
</Text>
|
</Text>
|
||||||
<Flex w="full" justify="center">
|
<Flex w="full" justify="center">
|
||||||
<Box as="figure" maxW="200px">
|
<Box as="figure" maxW="200px">
|
||||||
<Image src={selfie} alt="selfie" />
|
<Image src="https://s3.typebot.io/selfie.png" alt="selfie" />
|
||||||
</Box>
|
</Box>
|
||||||
</Flex>
|
</Flex>
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 536 B |
Before Width: | Height: | Size: 658 KiB |
Before Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 44 KiB |
Before Width: | Height: | Size: 32 KiB |
Before Width: | Height: | Size: 51 KiB |
Before Width: | Height: | Size: 69 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 7.7 KiB |
Before Width: | Height: | Size: 215 KiB |
Before Width: | Height: | Size: 5.1 KiB |
Before Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 12 KiB |
Before Width: | Height: | Size: 482 KiB |
@ -23,7 +23,7 @@ export const SEO = ({
|
|||||||
<link
|
<link
|
||||||
rel="icon"
|
rel="icon"
|
||||||
type="image/png"
|
type="image/png"
|
||||||
href={favIconUrl ?? 'https://viewer.typebot.io/favicon.png'}
|
href={favIconUrl ?? 'https://s3.typebot.io/favicon.png'}
|
||||||
/>
|
/>
|
||||||
<meta name="title" content={title ?? typebotName} />
|
<meta name="title" content={title ?? typebotName} />
|
||||||
<meta
|
<meta
|
||||||
|