🔒 Revert ddos lockdown
@ -28,24 +28,24 @@ if (
|
||||
})
|
||||
)
|
||||
|
||||
// if (isNotEmpty(env('SMTP_FROM')) && process.env.SMTP_AUTH_DISABLED !== 'true')
|
||||
// providers.push(
|
||||
// EmailProvider({
|
||||
// server: {
|
||||
// host: process.env.SMTP_HOST,
|
||||
// port: process.env.SMTP_PORT ? Number(process.env.SMTP_PORT) : 25,
|
||||
// secure: process.env.SMTP_SECURE
|
||||
// ? process.env.SMTP_SECURE === 'true'
|
||||
// : false,
|
||||
// auth: {
|
||||
// user: process.env.SMTP_USERNAME,
|
||||
// pass: process.env.SMTP_PASSWORD,
|
||||
// },
|
||||
// },
|
||||
// from: env('SMTP_FROM'),
|
||||
// sendVerificationRequest,
|
||||
// })
|
||||
// )
|
||||
if (isNotEmpty(env('SMTP_FROM')) && process.env.SMTP_AUTH_DISABLED !== 'true')
|
||||
providers.push(
|
||||
EmailProvider({
|
||||
server: {
|
||||
host: process.env.SMTP_HOST,
|
||||
port: process.env.SMTP_PORT ? Number(process.env.SMTP_PORT) : 25,
|
||||
secure: process.env.SMTP_SECURE
|
||||
? process.env.SMTP_SECURE === 'true'
|
||||
: false,
|
||||
auth: {
|
||||
user: process.env.SMTP_USERNAME,
|
||||
pass: process.env.SMTP_PASSWORD,
|
||||
},
|
||||
},
|
||||
from: env('SMTP_FROM'),
|
||||
sendVerificationRequest,
|
||||
})
|
||||
)
|
||||
|
||||
if (
|
||||
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 Image from 'next/image'
|
||||
import { ArrowRight } from 'assets/icons/ArrowRight'
|
||||
import { Flare } from 'assets/illustrations/Flare'
|
||||
import Link from 'next/link'
|
||||
@ -50,7 +57,13 @@ export const EasyBuildingExperience = () => {
|
||||
</Button>
|
||||
</Flex>
|
||||
</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>
|
||||
</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 Image from 'next/image'
|
||||
import { ArrowRight } from 'assets/icons/ArrowRight'
|
||||
import { Flare } from 'assets/illustrations/Flare'
|
||||
import Link from 'next/link'
|
||||
@ -51,6 +58,13 @@ export const EasyEmbed = () => {
|
||||
</Button>
|
||||
</Flex>
|
||||
</Stack>
|
||||
<Box rounded="md" data-aos="fade">
|
||||
<Image
|
||||
src="https://s3.typebot.io/native-feeling.png"
|
||||
alt="incomplete results illustration"
|
||||
placeholder="blur"
|
||||
/>
|
||||
</Box>
|
||||
</Stack>
|
||||
</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 Image from 'next/image'
|
||||
import spotlightSrc from 'public/images/homepage/spotlight.png'
|
||||
|
||||
export const BackgroundSpotlight = (props: BoxProps) => (
|
||||
<Box {...props}>
|
||||
<Image src={spotlightSrc} alt="spotlight" />
|
||||
<Image src="https://s3.typebot.io/spotlight.png" alt="spotlight" />
|
||||
</Box>
|
||||
)
|
||||
|
@ -7,12 +7,12 @@ import {
|
||||
Stack,
|
||||
Text,
|
||||
VStack,
|
||||
Image,
|
||||
} from '@chakra-ui/react'
|
||||
import * as React from 'react'
|
||||
import { Header } from '../../common/Header/Header'
|
||||
import { BackgroundPolygons } from './BackgroundPolygons'
|
||||
import * as Logos from './Brands'
|
||||
import Image from 'next/image'
|
||||
import Link from 'next/link'
|
||||
|
||||
export const Hero = () => {
|
||||
@ -93,12 +93,12 @@ export const Hero = () => {
|
||||
data-aos="zoom-out-up"
|
||||
data-aos-delay="800"
|
||||
>
|
||||
{/* <Image
|
||||
src={builderScreenshotSrc}
|
||||
<Image
|
||||
src="https://s3.typebot.io/builder.png"
|
||||
alt="Builder screenshot"
|
||||
placeholder="blur"
|
||||
style={{ borderRadius: '10px' }}
|
||||
/> */}
|
||||
/>
|
||||
</Box>
|
||||
</Box>
|
||||
</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 Image from 'next/image'
|
||||
import { TestimonialData } from './Testimonials'
|
||||
import {
|
||||
CapterraIcon,
|
||||
@ -32,8 +31,8 @@ export const Testimonial = ({
|
||||
src={avatarSrc}
|
||||
alt={name}
|
||||
placeholder="blur"
|
||||
width={40}
|
||||
height={40}
|
||||
width="40px"
|
||||
height="40px"
|
||||
className="rounded-full"
|
||||
/>
|
||||
) : (
|
||||
|
@ -1,23 +1,10 @@
|
||||
import { Flex, Heading, SimpleGrid, Stack, VStack } from '@chakra-ui/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 { StaticImageData } from 'next/image'
|
||||
|
||||
export type TestimonialData = {
|
||||
name: string
|
||||
avatarSrc?: StaticImageData
|
||||
avatarSrc?: string
|
||||
provider: 'email' | 'productHunt' | 'capterra' | 'reddit'
|
||||
role?: string
|
||||
content: string | React.ReactNode
|
||||
@ -28,7 +15,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Joshua Lim',
|
||||
role: 'Growth Strategist @ Socialhackrs Media',
|
||||
avatarSrc: joshuaPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/joshua.jpg',
|
||||
provider: 'email',
|
||||
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.',
|
||||
@ -37,7 +24,7 @@ const testimonials: TestimonialData[][] = [
|
||||
name: 'Laszlo Csömör',
|
||||
role: 'Digital Marketing Expert',
|
||||
provider: 'email',
|
||||
avatarSrc: laszloPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/laszlo.jpeg',
|
||||
content: (
|
||||
<>
|
||||
Typebot is one of the best chatbot builders with its intelligent
|
||||
@ -53,6 +40,7 @@ const testimonials: TestimonialData[][] = [
|
||||
name: 'Mario Barretta',
|
||||
role: 'Customer Care Manager',
|
||||
provider: 'email',
|
||||
avatarSrc: 'https://s3.typebot.io/barretta.jpeg',
|
||||
content: (
|
||||
<>
|
||||
Thanks to typebot I can finally make site forms much more modern and I
|
||||
@ -69,7 +57,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Lucas Barp',
|
||||
provider: 'email',
|
||||
avatarSrc: lucasPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/lucas.png',
|
||||
role: 'Founder at Barp Digital',
|
||||
content:
|
||||
'The result of your work is incredible and can make life easier for many people.',
|
||||
@ -87,14 +75,14 @@ const testimonials: TestimonialData[][] = [
|
||||
name: 'Oscar',
|
||||
role: 'CEO',
|
||||
provider: 'capterra',
|
||||
avatarSrc: oscarPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/oscar.jpeg',
|
||||
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.',
|
||||
},
|
||||
{
|
||||
name: 'Julien Muratot',
|
||||
role: 'Growth Manager @ Hornetwork',
|
||||
avatarSrc: julienPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/julien.jpeg',
|
||||
provider: 'email',
|
||||
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.',
|
||||
@ -102,14 +90,14 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: '_Invictuz',
|
||||
provider: 'reddit',
|
||||
avatarSrc: invictuzPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/invictuz.png',
|
||||
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...",
|
||||
},
|
||||
{
|
||||
name: 'Theo Marechal',
|
||||
provider: 'productHunt',
|
||||
avatarSrc: theoPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/theo.jpeg',
|
||||
role: 'Nocode expert and content creator',
|
||||
content: (
|
||||
<>
|
||||
@ -126,7 +114,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Abhay Kulkarni',
|
||||
provider: 'productHunt',
|
||||
avatarSrc: abhayPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/abhay.jpeg',
|
||||
role: 'Founder at Webisharp',
|
||||
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 :)',
|
||||
@ -136,7 +124,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Steve de Jong',
|
||||
provider: 'email',
|
||||
avatarSrc: stevePictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/steve.jpg',
|
||||
role: 'CEO at Stillio',
|
||||
content: (
|
||||
<>
|
||||
@ -171,7 +159,7 @@ const testimonials: TestimonialData[][] = [
|
||||
name: 'Kurnia Kwik',
|
||||
role: 'Founder at DigitalPointer.ID',
|
||||
provider: 'email',
|
||||
avatarSrc: kurniaPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/kurnia.jpeg',
|
||||
content: (
|
||||
<>
|
||||
I have several chatbot builders, but Typebot is the one I use the
|
||||
@ -184,7 +172,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Nicolai Grut',
|
||||
role: 'CEO @ EcommerceNotebook.com',
|
||||
avatarSrc: nicolaiPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/nicolai.jpg',
|
||||
provider: 'email',
|
||||
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.',
|
||||
@ -192,7 +180,7 @@ const testimonials: TestimonialData[][] = [
|
||||
{
|
||||
name: 'Anna Filou',
|
||||
provider: 'productHunt',
|
||||
avatarSrc: annaFilouPictureSrc,
|
||||
avatarSrc: 'https://s3.typebot.io/annaFilou.jpeg',
|
||||
role: 'Geek, Designer, Illustrator, Web Dev',
|
||||
content:
|
||||
"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',
|
||||
description = 'Powerful blocks to create unique chat experiences. Embed them anywhere on your apps and start collecting results like magic.',
|
||||
currentUrl,
|
||||
imagePreviewUrl = 'https://www.typebot.io/images/preview.png',
|
||||
imagePreviewUrl = 'https://s3.typebot.io/preview.png',
|
||||
}: {
|
||||
title?: 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 { SocialMetaTags } from 'components/common/SocialMetaTags'
|
||||
import React from 'react'
|
||||
import selfie from '../public/images/about/selfie.png'
|
||||
import Image from 'next/image'
|
||||
import { Footer } from 'components/common/Footer'
|
||||
import { TextLink } from 'components/common/TextLink'
|
||||
|
||||
@ -30,7 +28,7 @@ const AboutPage = () => {
|
||||
</Text>
|
||||
<Flex w="full" justify="center">
|
||||
<Box as="figure" maxW="200px">
|
||||
<Image src={selfie} alt="selfie" />
|
||||
<Image src="https://s3.typebot.io/selfie.png" alt="selfie" />
|
||||
</Box>
|
||||
</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
|
||||
rel="icon"
|
||||
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
|
||||
|