duda
How we built the new Duda homepage on Editor 2.0

Renana Dar • Apr 22, 2024

It all kicked off with a vision, courtesy of our senior design guru. And let me tell you, one thing we've learned over the years is you never, ever mess with a designer's vision.


Now… Any website’s homepage isn't just some random page (if such a thing exists)—it's the face of a business, showing off its vibe and essence. 


But it’s particularly crucial for the homepage of a website builder catering to professionals–Duda’s very own homepage.


What I'm trying to get across is that when we were building Duda's homepage, we didn't just go through the motions. It was personal—for our design guru and for all of us on the team.


We poured our hearts and souls into every pixel and every word, making sure it tells the story of 'Duda' in the best way possible. 


That’s how seriously we approached the creation of the new Duda homepage.

But hey, no pressure, right?


However, that’s not why we decided to put these thoughts on paper—we're not here to toot our own horn. 


We wanted to share the thought process and techniques behind this homepage to help you—yeah, you, our awesome users—make your own homepage, or any other page, shine. 


The first thing we want you to leave this blog post with is that when it comes to building websites with Duda, everything is possible!


There’s really nothing you can’t do with Duda


Our design guru knows she can let her dreams run wild. Whatever she puts on the design table, we can bring to life with Duda—whether through offered functionality or by creating custom designs using our Native Widget Builder


Sure, creating custom designs might involve a designer and developer hand. So what?


If you want to build something complex and highly specific to the experience you want to convey, ready-made functionality might not cut it.

 

Don’t get me wrong—you can build a stunning website with Duda without ever using a designer or touching code. In fact, most of your designs will be like that.


But there are those cases where you want to be able to go beyond what is available out-of-the-box.


What you should look for is a website building tool that can be low-code on one hand, for those designs that don’t require a lot of custom work, and on the other hand, a tool that can allow you to use code and custom functionality to execute unique ideas and stretch the design limits.


This balance between the two is exactly where Duda shines and our new homepage is the perfect example.


The technology


Let’s talk a little bit about the infrastructure on which this homepage was built.


When we set out to build the new homepage, we felt relieved to have Duda’s Editor 2.0 on our side.


Our commitment has always been to help you, our customers, deliver beautiful, high-performing websites quickly and at scale, and Duda’s Editor 2.0 (still in beta, formerly All-Flex Editor) embodies that commitment and more. 


Based fully on Flex technology, Editor 2.0 offers enhanced editing capabilities, presenting a whole new way to put widgets on the canvas and redefining the relationship between widgets and how they adjust to one another. Inner Columns and Advanced Grids are only part of the tools you can use to design with Editor 2.0.


In short, you can create advanced designs faster than ever, increasing productivity and producing powerful designs, at scale. Whether you look at design power, productivity, or performance, this editor provides an experience like no other.


Editor 2.0 includes some nifty capabilities and advantages, to name a few:


  • Precise breakpoint control without using code
  • Automatic element reorganization for responsive design
  • Increased performance in CWV and lighthouse scores


If you want to learn more about Editor.2.0, be sure to check out our webinar featuring exclusive Q&A on Duda's Editor 2.0, or join the beta group.


It’s quite symbolic, if you think about it: creating our next generation of homepages with Editor 2.0 - an editor that empowers web pros to build the next generation of websites.


Editor 2.0 is exactly what we needed for this homepage.


That and our Native Widget Builder.


Our Native Widget Builder is a powerful tool that allows us and our customers to create reusable customizable widgets that are ideally tailored to meet our requirements and the requirements of any client. Our Experts portal flashes out the endless possibilities. Just dig into the various profiles presenting how agencies have created custom widgets such as interactive galleries, custom shapes, and even scroll-progress indicators.


OK, so the technology is covered. But how exactly did we build this homepage?


Let’s take a closer look at how we married the visuals, messaging, and Duda’s powerful editor together to bring Duda’s story to life in vivid color on the digital page.

 

Let’s talk hero 




How cool is the hero section, right?


It lets us spin four different stories, all in the same prime real estate above the fold without subjecting users to endless scrolling.


The whole concept was to tell the story of Duda's unique advantages right from the get-go.


We've got a dynamic banner showcasing various animations, a background, and a text slider—all synced up perfectly. The background and banner area switch up in sync with the text slider, complete with a slick progress bar indicating the transition between these three elements.

 

This magnificent fusion of visuals and text harmony was done using Editor 2.0 and our Native Widget Builder.


Want the lowdown on this widget?


Here’s the HTML, Javascript and CSS code:


HTML

 

<div class="home-page-header" data-color="pink">

  <div class="content">

    <div class="animation-wrapper">

      <video poster="{{poster1}}" playsinline muted class="pink" id="pinkPlayer" data-seconds="{{slide1seconds}}">

        <source src="{{slide1video.videoUrl}}" type="video/mp4" />

      </video>

      <video playsinline muted class="green" id="greenPlayer" data-seconds="{{slide2seconds}}">

        <source src="{{slide2video.videoUrl}}" type="video/mp4" />

      </video>

      <video playsinline muted class="purple" id="purplePlayer" data-seconds="{{slide3seconds}}">

        <source src="{{slide3video.videoUrl}}" type="video/mp4" />

      </video>

      <video playsinline muted class="blue" id="bluePlayer" data-seconds="{{slide4seconds}}">

        <source src="{{slide4video.videoUrl}}" type="video/mp4" />

      </video>

    </div>

    <div class="text-wrapper">

      <div class="item" data-color="pink">

        <div class="playing-bar">

          <div class="bar"></div>

        </div>

        <div class="title">

          {{slide1title}}

        </div>

        <div class="txt">

          {{slide1txt}}

        </div>

      </div>

      <!-- /item -->

      <div class="item" data-color="green">

        <div class="playing-bar">

          <div class="bar"></div>

        </div>

        <div class="title">

          {{slide2title}}

        </div>

        <div class="txt">

          {{slide2txt}}

        </div>

      </div>

      <!-- /item -->

      <div class="item" data-color="purple">

        <div class="playing-bar">

          <div class="bar"></div>

        </div>

        <div class="title">

          {{slide3title}}

        </div>

        <div class="txt">

          {{slide3txt}}

        </div>

      </div>

      <!-- /item -->

      <div class="item" data-color="blue">

        <div class="playing-bar">

          <div class="bar"></div>

        </div>

        <div class="title">

          {{slide4title}}

        </div>

        <div class="txt">

          {{slide4txt}}

        </div>

      </div>

      <!-- /item -->

    </div>

  </div>

</div>

<img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-pink.png?v=1" width="0" height="0" />

<img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-green.png?v=1" width="0" height="0" />

<img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-purple.png?v=1" width="0" height="0" />

<img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-blue.png?v=1" width="0" height="0" />

JavaScript

 

let firstItem = $(".home-page-header .item:first-child");

$(".home-page-header .item").on("click", function () {

 $(".home-page-header .item").removeClass("active");


 $(this).addClass("active");


 $(".home-page-header").attr("data-color", $(this).attr("data-color"));

 // document.getElementById($(this).attr("data-color") + "Player").seek(1);


 // console.log($(this).attr("data-color"));

 document.getElementById(

  $(this).attr("data-color") + "Player"

 ).currentTime = 0;

 document.getElementById($(this).attr("data-color") + "Player").play();

});

function checkBarWidth() {

 let currentPlayerColor = $(".home-page-header").attr("data-color");

 // console.log(currentPlayerColor);

 // console.clear();

 let barLoadingwidth =

  (document.getElementById(currentPlayerColor + "Player").currentTime /

  Number(

  $("#" + currentPlayerColor + "Player").attr("data-seconds")

  )) *

  100;

 // console.log(barLoadingwidth);

 $(".home-page-header .item:not(.active) .playing-bar .bar")

  .width("0%")

  .css("transition-duration", "0s");

 $(".home-page-header .item.active .playing-bar .bar")

  .width(barLoadingwidth + "%")

  .css("transition-duration", ".25s");

 if (

  $(".home-page-header .item.active .playing-bar").width() <

  $(".home-page-header .item.active .bar").width()

 ) {

  if ($(".home-page-header .item.active").next(".item").length == 0) {

  firstItem.click();

  } else {

  $(".home-page-header .item.active").next(".item").click();

  }

 }

}

setInterval(checkBarWidth, 250);


let runClick = true;

addEventListener("scroll", (event) => {

 if (runClick) {

  if (window.scrollY > $(".home-page-header").offset().top * 0.2) {

  firstItem.click();

  runClick = false;

  }

 }

});


CSS

 

.home-page-header {

 padding-top: 50px;

 width: 100%;

 display: flex;

 justify-content: center;

 transition: all ease 0.5s;

 background-position: center bottom;

 background-repeat: no-repeat;

 background-size: 100% 150%;

 .content {

  display: flex;

  width: 100%;

  max-width: 1188px;

  flex-direction: column;

  padding: 0 20px;

  @media (max-width: 640px) {

  padding: 0 15px;

  }

  .animation-wrapper {

  display: flex;

  margin-bottom: 40px;

  border-radius: 20px;

  width: 100%;

  dotlottie-player {

  display: none;

  }

  video {

  display: none !important;

  border-radius: 20px;

  margin: 0 !important;

  width: 100%;

  backdrop-filter: blur(105px);

  @media (max-width: 640px) {

  border-radius: 10px;

  }

  &.pink {

  box-shadow: 0px 760px 213px 0px rgba(64, 12, 35, 0),

  0px 486px 194px 0px rgba(64, 12, 35, 0.03),

  0px 273px 164px 0px rgba(64, 12, 35, 0.11),

  0px 122px 122px 0px rgba(64, 12, 35, 0.19),

  0px 30px 67px 0px rgba(64, 12, 35, 0.21);

  }

  &.green {

  box-shadow: 0px 789px 221px 0px rgba(7, 39, 21, 0),

  0px 505px 202px 0px rgba(7, 39, 21, 0.03),

  0px 284px 170px 0px rgba(7, 39, 21, 0.11),

  0px 126px 126px 0px rgba(7, 39, 21, 0.19),

  0px 32px 69px 0px rgba(7, 39, 21, 0.21);

  }

  &.purple {

  box-shadow: 0px 760px 213px 0px rgba(64, 12, 35, 0),

  0px 486px 194px 0px rgba(64, 12, 35, 0.03),

  0px 273px 164px 0px rgba(64, 12, 35, 0.11),

  0px 122px 122px 0px rgba(64, 12, 35, 0.19),

  0px 30px 67px 0px rgba(64, 12, 35, 0.21);

  }

  &.blue {

  box-shadow: 0px 789px 221px 0px rgba(12, 28, 64, 0),

  0px 505px 202px 0px rgba(12, 28, 64, 0.03),

  0px 284px 170px 0px rgba(12, 28, 64, 0.11),

  0px 126px 126px 0px rgba(12, 28, 64, 0.19),

  0px 32px 69px 0px rgba(12, 28, 64, 0.21);

  }

  }

  }

  .text-wrapper {

  display: flex;

  width: 100%;

  justify-content: space-between;

  align-items: center;

  margin-bottom: 150px;

  gap: 30px;

  z-index: 1;

  @media (max-width: 640px) {

  position: relative;

  width: 100%;

  height: 150px;

  margin-bottom: 20px;

  }

  .item {

  cursor: pointer;

  color: #fff;

  text-align: left;

  width: 100%;

  @media (max-width: 640px) {

  opacity: 0;

  position: absolute;

  width: 100%;

  top: 0;

  transition: 0.2s ease all;

  }

  .playing-bar {

  height: 3px;

  width: 100%;

  background-color: rgba($color: #ffffff, $alpha: 0.2);

  margin-bottom: 15px;

  position: relative;

  border-radius: 30px;

     overflow: hidden;

  .bar {

  position: absolute;

  top: 0;

  bottom: 0;

  content: " ";

  width: 0;

  background-color: #fff;

  transition: all 0.25s linear;

  }

  }


  .title {

  font-family: "CalSans-SemiBold";

  margin-bottom: 15px;

  font-size: 22px;

  font-weight: 600;

  line-height: 24px;

  letter-spacing: 0.01em;

  }

  .txt {

  font-size: 17px;

  font-weight: 550;

  line-height: 22px;

  letter-spacing: -0.01em;

  opacity: 0.9;

  }

  &.active{

  @media (max-width: 640px) {

    opacity: 1;

    }

  }

  }

  }

 }


 &[data-color="pink"] {

  background-image: url("https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-pink.png?v=1");

  dotlottie-player.pink {

  display: block;

  }

  video.pink {

  display: block !important;

  }

 }

 &[data-color="green"] {

  background-image: url("https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-green.png?v=1");

  dotlottie-player.green {

  display: block;

  }

  video.green {

  display: block !important;

  }

 }

 &[data-color="purple"] {

  background-image: url("https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-purple.png?v=1");

  dotlottie-player.purple {

  display: block;

  }

  video.purple {

  display: block !important;

  }

 }

 &[data-color="blue"] {

  background-image: url("https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-header/bg-blue.png?v=1");

  dotlottie-player.blue {

  display: block;

  }

  video.blue {

  display: block !important;

  }

 }

}



Static sections aka ‘non-custom widget’ sections 


A brochure with a picture of a cell phone and a graph on it.


Take, for instance, the social proof section, along with other non-custom widget sections on the homepage—they're all about simplicity with a touch of elegance. Nestled between our dynamic sections, these areas maintain a clean, straightforward vibe.


Built using standard functionality within Duda, these sections feature basic layouts with columns and inner columns—easy to whip up in no time.


Now, social proof—this gem deserves a prime spot on your homepage. We've preached its importance before. Remember our DudaCon session? We dived into website conversions and the psychology of visitors with Andy Crestodina and Nancy Harhut. Among the golden nuggets shared was the vital role of social proof on every page, especially the homepage.


In Andy’s words, “When you say it, it’s marketing. When they say it, it’s social proof.”


So, naturally, we positioned a social proof section right after the hero section.


Read to do it yourself? Here's a snapshot of the components hierarchy in the Editor 2.0, illustrating how to craft these sections:



Section: Scale faster than you ever thought possible 




This section dives into the story about how easy it is to scale your website building operations with Duda–whether you have 10 clients or 10,000 all with unique needs. 


And when we talk scale, we're talking flexibility too. That is, ultimate flexibility to quickly build any type of site your client could ask for, from brochure-style websites to data-driven sites to eCommerce and transactional sites. The possibilities with Duda are endless.


The design flexibility of this section reflects this.


Check out how the image seamlessly adapts to the text on the left. Plus, we've added an intuitive expand and collapse feature for added convenience.


Just like the hero section, this area is built on a custom widget, giving us the freedom to tailor it precisely to our needs.


Here’s the code:


HTML

 

<script

 src="https://unpkg.com/@dotlottie/player-component@latest/dist/dotlottie-player.mjs"

 type="module"

></script>

<div class="home-page-scale {{style}}">

 <div class="content">

  <div class="text-wrapper">

  <div class="main-title">

     {{mainTitle}}

  </div>

  <div class="main-text">

     {{mainDescription}}

  </div>


  <div class="items">

    {{#each list}}

    <div class="item {{#equals @index 0}}active{{/equals}}" item-order="{{@index}}">

    <div class="title">

    {{this.title}}

    </div>

    <div class="txt">

    {{this.text}}

    </div>

    {{#if this.buttonText}}

    <a href="{{this.buttonLink.href}}" class="arrow-button">

    {{this.buttonText}}

    <div class="icon">

                                <svg width="26" height="26" viewBox="0 0 26 26" fill="none" xmlns="http://www.w3.org/2000/svg">

                                    <g clip-path="url(#clip0_4230_15343)">

                                        <path d="M17.5002 8.5L7.5835 18.4166" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/>

                                        <path d="M8.6665 7.58325H18.4165V17.3333" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/>

                                    </g>

                                    <defs>

                                        <clipPath id="clip0_4230_15343">

                                        <rect width="26" height="26" fill="white"/>

                                        </clipPath>

                                    </defs>

                                </svg>

    </div>

    </a>

    {{/if}}

    </div>

    <!-- /item -->

                {{/each}}

  </div>

  <!-- /items -->

  {{#custom_link buttonLink class="button"}}

     {{buttonText}}

            {{/custom_link}}

  </div>

  <!-- /text-wrapper -->

  <div class="visual-wrapper">

     {{#each list}}

    <div class="item {{#equals @index 0}}active{{/equals}}">

     {{#if this.jsonUrl}}

           <dotlottie-player

               id="player{{@index}}"

    src="{{this.jsonUrl}}"

    autoplay

    loop

    ></dotlottie-player>

     {{/if}}

     {{#if this.img}}

           <img src="{{this.img}}">

     {{/if}}

    </div>

            {{/each}}

  </div>

  <!-- /visual-wrapper -->

 </div>

</div>

<svg width="0" height="0" class="hidden">

 <symbol

  fill="none"

  xmlns="http://www.w3.org/2000/svg"

  viewBox="0 0 26 26"

  id="Frame"

 >

  <g clip-path="url(#clip0_4230_15343)">

  <path

  d="M17.5002 8.5L7.5835 18.4166"

  stroke="#0D101C"

  stroke-width="2"

  stroke-linecap="square"

  stroke-linejoin="round"

  ></path>

  <path

  d="M8.6665 7.58325H18.4165V17.3333"

  stroke="#0D101C"

  stroke-width="2"

  stroke-linecap="square"

  stroke-linejoin="round"

  ></path>

  </g>

  <defs>

  <clipPath id="clip0_4230_15343">

  <rect width="26" height="26" fill="white"></rect>

  </clipPath>

  </defs>

 </symbol>

</svg>

JavaScript

 

$(".home-page-scale .text-wrapper .item").on("click", function () {

    

    if(document.getElementById("player"+$(this).attr("item-order")) != null){

    document.getElementById("player"+$(this).attr("item-order")).seek(0);

    }

    

 $(".home-page-scale .text-wrapper .item").removeClass("active");

 $(this).addClass("active");

 $(".home-page-scale .visual-wrapper .item").removeClass("active");

 let currentItemNum =

  $(".home-page-scale .text-wrapper .items .item.active").index() + 1;

 $(

  ".home-page-scale .visual-wrapper .item:nth-child(" +

  currentItemNum +

  ")"

 ).addClass("active");

});


var clicksOnSection = true;

window.setInterval(function () {

 if (clicksOnSection) {

        let numberOfNextItem = Number($(".home-page-scale .text-wrapper .item.active").attr('item-order'))+1; 


  var nextButton = $(".home-page-scale .text-wrapper .item[item-order="+numberOfNextItem+"]");

  if (nextButton.length) {

  nextButton.click();

  } else {

  $(".home-page-scale .text-wrapper .item:first").click();

  }

 }

}, 9000);

$("body").on("mousedown", ".home-page-scale .text-wrapper .item", function () {

 clicksOnSection = false;

});


CSS

 

.home-page-scale { width: 100%; display: flex; justify-content: center; transition: all ease 0.5s; background-position: center bottom; background-repeat: no-repeat; background-size: 100% 150%; .content { display: flex; width: 100%; flex-direction: row; align-items: center; justify-content: space-between; .visual-wrapper { display: flex; max-width: 750px; .item { display: none; border-radius: 12px 0 0 12px; overflow: hidden; &.active { display: flex; } } } .text-wrapper { display: flex; flex-basis: 48%; flex-shrink: 0; justify-content: flex-start; flex-direction: column; padding-right: 70px; text-align: left; max-width: 720px; .main-title { font-family: "CalSans-SemiBold"; font-size: 50px; font-weight: 600; line-height: 52px; letter-spacing: 0em; color: #0d101c; margin: 0 0 15px 20px; } .main-text { font-family: DudaSans-Medium; font-size: 20px; font-weight: 550; line-height: 27px; letter-spacing: -0.015em; color: #61616c; margin: 0 0 20px 20px; } .item { cursor: pointer; text-align: left; padding: 20px; border-radius: 15px; margin-bottom: 10px; transition: ease .25s background; .title { color: #0d101c; font-family: "CalSans-SemiBold"; margin-bottom: 5px; font-size: 22px; font-weight: 600; line-height: 24px; letter-spacing: 0.01em; } .txt { font-size: 17px; font-family: DudaSans-Medium; line-height: 22px; letter-spacing: -0.01em; opacity: 0.9; margin-bottom: 10px; display: none; color: #61616C; } .arrow-button { font-size: 18px; font-family: DudaSans-Medium; line-height: 22px; letter-spacing: -0.01em; text-align: left; color: #0d101c; display: flex; align-items: center; text-decoration: none; display: none; .icon { width: 26px; height: 26px; transition: all 0.2s ease; svg{ stroke: #0D101C; } } &:hover { .icon { transform: rotate(45deg); } } } &:hover { background: #f8f5f4; } &.active { background: #f8f5f4; .txt, .arrow-button { display: flex; } } } .button { margin: 10px 0 0 20px; width: 248px; height: 53px; border-radius: 100px; background-color: #f56d41; color: #fff; display: flex; font-size: 18px; font-weight: 550; line-height: 27px; letter-spacing: 0em; justify-content: center; align-items: center; text-decoration: none; font-family: var(--btn-text-font-family); transition: background-color .2s ease, border-color .2s ease; &:hover{ background-color: var(--btn-hover-bg); } } } } &.dark{ .text-wrapper { .main-title { color: #fff; } .main-text { color: #E4E4E6; } .item { .title { color: #fff; } .txt{ color: #E4E4E6; } .arrow-button { color: #fff; .icon { svg{ stroke: #fff; } } } &:hover { background: #272B35; } &.active { background: #272B35; } } } } }



Section: Increase revenue and drive customer value


When you’re in the business of building websites, bringing beautiful sites to life isn’t the end of the story–you’ve also got to think about your bottom line. 


This section of the homepage showcases the wide variety of ways Duda can help professional website builders – like you! – capture opportunities, drive more value, and ultimately grow your revenue. 


Your eye is immediately drawn to the revenue chart on the right that’s shooting up quickly. Meanwhile, the floating boxes on the left showcase the wide range of opportunities to add functionality and value to your client websites through Duda’s rapidly expanding App Store, for example. 


Similar to the hero section, this area cleverly maximizes space without overwhelming the viewer, delivering multiple messages all couched under the theme of helping you increase your revenue, and showcasing numerous apps with finesse.



Now, for the code:


HTML

 

<div class="home-page-increase">

  <div class="floating-boxes">

    <div class="row">

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Chaty.png" />

          <div class="title">Chaty</div>

          <div class="txt"> 20+ apps like WhatsApp & Messenger in one widget </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Agentz.ai.png" />

          <div class="title">Agentz.ai</div>

          <div class="txt"> AI bot for website, SMS, calls, automating 24/7 </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Book Like A Boss.png" />

          <div class="title">Book Like A Boss</div>

          <div class="txt"> Take bookings & automate your scheduling </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/WooRank.png" />

          <div class="title">WooRank</div>

          <div class="txt"> Score your site’s SEO and gain guidance and insights </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Termageddon.png" />

          <div class="title">Termageddon</div>

          <div class="txt"> generate policies to help comply with privacy laws </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Subscribers.png" />

          <div class="title">Subscribers</div>

          <div class="txt"> Send smart automated push notifications </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/vcita.png" />

          <div class="title">vcita</div>

          <div class="txt"> Online scheduling, payments, CRM and marketing app. </div>

        </div>

      </div>

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/UserWay.png" />

          <div class="title">UserWay</div>

          <div class="txt"> Leading accessibility plugin and compliance solution </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Squeaky.png" />

          <div class="title">Squeaky</div>

          <div class="txt"> Use analytics and heatmaps to understand visitor behavior </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Bookingmood.png" />

          <div class="title">Bookingmood</div>

          <div class="txt"> Attract and manage bookings from your own website </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Paperform.png" />

          <div class="title">Paperform</div>

          <div class="txt">A Digital Swiss Army Knife</div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Chatway.png" />

          <div class="title">Chatway</div>

          <div class="txt"> Live chat app for website support </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Lunchbox.png" />

          <div class="title">Lunchbox</div>

          <div class="txt"> Maximize Your Revenue Potential With Lunchbox </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Owwlish.png" />

          <div class="title">Owwlish</div>

          <div class="txt"> Builds and sells beautiful online courses right into your website </div>

        </div>

      </div>

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Zip.png" />

          <div class="title">Zip</div>

          <div class="txt"> Buy now, pay later. Anywhere. Split any purchase installments </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Movylo.png" />

          <div class="title">Movylo</div>

          <div class="txt"> Collect leads, automate drip campaigns, convert customers! </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/AudioEye.png" />

          <div class="title">AudioEye</div>

          <div class="txt"> #1 web accessibility solution for WCAG & ADA compliance </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Termly.png" />

          <div class="title">Termly</div>

          <div class="txt"> All-in-one data privacy compliance and legal policies. </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Uberall.png" />

          <div class="title">Uberall</div>

          <div class="txt"> Turn online interactions into offline sales </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Klarna.png" />

          <div class="title">Klarna</div>

          <div class="txt">Buy Now, Pay Later</div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Usercentrics.png" />

          <div class="title">Usercentrics</div>

          <div class="txt"> Cookie, Data and Privacy Compliance for GDPR </div>

        </div>

      </div>

    </div>

    <!-- /row -->

    <div class="row">

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Chaty.png" />

          <div class="title">Chaty</div>

          <div class="txt"> 20+ apps like WhatsApp & Messenger in one widget </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Agentz.ai.png" />

          <div class="title">Agentz.ai</div>

          <div class="txt"> AI bot for website, SMS, calls, automating 24/7 </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Book Like A Boss.png" />

          <div class="title">Book Like A Boss</div>

          <div class="txt"> Take bookings & automate your scheduling </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/WooRank.png" />

          <div class="title">WooRank</div>

          <div class="txt"> Score your site’s SEO and gain guidance and insights </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Termageddon.png" />

          <div class="title">Termageddon</div>

          <div class="txt"> generate policies to help comply with privacy laws </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Subscribers.png" />

          <div class="title">Subscribers</div>

          <div class="txt"> Send smart automated push notifications </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/vcita.png" />

          <div class="title">vcita</div>

          <div class="txt"> Online scheduling, payments, CRM and marketing app. </div>

        </div>

      </div>

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/UserWay.png" />

          <div class="title">UserWay</div>

          <div class="txt"> Leading accessibility plugin and compliance solution </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Squeaky.png" />

          <div class="title">Squeaky</div>

          <div class="txt"> Use analytics and heatmaps to understand visitor behavior </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Bookingmood.png" />

          <div class="title">Bookingmood</div>

          <div class="txt"> Attract and manage bookings from your own website </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Paperform.png" />

          <div class="title">Paperform</div>

          <div class="txt">A Digital Swiss Army Knife</div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Chatway.png" />

          <div class="title">Chatway</div>

          <div class="txt"> Live chat app for website support </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Lunchbox.png" />

          <div class="title">Lunchbox</div>

          <div class="txt"> Maximize Your Revenue Potential With Lunchbox </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Owwlish.png" />

          <div class="title">Owwlish</div>

          <div class="txt"> Builds and sells beautiful online courses right into your website </div>

        </div>

      </div>

      <div class="column">

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Zip.png" />

          <div class="title">Zip</div>

          <div class="txt"> Buy now, pay later. Anywhere. Split any purchase installments </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Movylo.png" />

          <div class="title">Movylo</div>

          <div class="txt"> Collect leads, automate drip campaigns, convert customers! </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/AudioEye.png" />

          <div class="title">AudioEye</div>

          <div class="txt"> #1 web accessibility solution for WCAG & ADA compliance </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Termly.png" />

          <div class="title">Termly</div>

          <div class="txt"> All-in-one data privacy compliance and legal policies. </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Uberall.png" />

          <div class="title">Uberall</div>

          <div class="txt"> Turn online interactions into offline sales </div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Klarna.png" />

          <div class="title">Klarna</div>

          <div class="txt">Buy Now, Pay Later</div>

        </div>

        <div class="box">

          <img src="https://du-cdn.cdn-website.com/duda_website/images/widgets/home-page-increase/Usercentrics.png" />

          <div class="title">Usercentrics</div>

          <div class="txt"> Cookie, Data and Privacy Compliance for GDPR </div>

        </div>

      </div>

    </div>

    <!-- /row -->

  </div>

  <div class="animation">

    <script src="https://unpkg.com/@lottiefiles/lottie-player@latest/dist/lottie-player.js"></script>

    <script src="https://unpkg.com/@lottiefiles/lottie-interactivity@latest/dist/lottie-interactivity.min.js"></script>

    {{#if this.jsonUrl}}

      <lottie-player id="increasePlayer" src="{{this.jsonUrl}}"></lottie-player>

    {{/if}}

  </div>

</div>

JavaScript

 

const floatingBoxes = $(".floating-boxes");

const row = floatingBoxes.html();

// floatingBoxes.append(row);


LottieInteractivity.create({

 player: "#increasePlayer",

 mode: "scroll",

 actions: [

  {

  visibility: [0.3, 1.0],

  type: "play",

  },

 ],

});

CSS

 

$backgroundColor: #1f232e;

.home-page-increase {

 width: 100%;

 display: flex;

 justify-content: center;

 border-radius: 20px;

 background-color: $backgroundColor;

 max-width: 1220px;

 padding: 30px 24px;

 gap: 20px;

    @media(max-width: 1200px){

        border-radius: 0;

    }

    @media(max-width: 640px){

    padding: 30px 13px;

    }

 .floating-boxes {

  position: relative;

  display: flex;

  gap: 15px;

  width: 100%;

  overflow: hidden;

  border-radius: 20px;

  height: 393px;

  flex-direction: column;

  &::after {

  content: " ";

  position: absolute;

  top: 0;

  bottom: 0;

  right: 0;

  left: 0;


  background: linear-gradient(

  0deg,

  rgba($backgroundColor, 0) 60%,

  rgba($backgroundColor, 1) 100%

  ),

  linear-gradient(

  180deg,

  rgba($backgroundColor, 0) 60%,

  rgba($backgroundColor, 1) 100%

  );

  // background-color: $backgroundColor;

  }


  .row {

  display: flex;

  width: 100%;

  height: 933px;

  animation: floatingImages 30s linear infinite;

  gap: 15px;

       @media(max-width: 1200px){

                justify-content: center;

       }

  @keyframes floatingImages {

  0% {

  transform: translateY(0);

  }

  100% {

  transform: translateY(-938px);

  }

  }


  .column {

  display: flex;

  flex-direction: column;

  gap: 15px;

           @media(max-width: 640px){

    gap: 13px;

                }

  &:nth-child(2) {

  animation: floatingCol2 30s linear infinite;

  @keyframes floatingCol2 {

  0% {

  transform: translateY(0);

  }

  50% {

  transform: translateY(80px);

  }

  100% {

  transform: translateY(0);

  }

  }

  // transform: translateY(-80px);

  }

  &:nth-child(3) {

  animation: floatingCol3 30s linear infinite;

  @keyframes floatingCol3 {

  0% {

  transform: translateY(0);

  }

  50% {

  transform: translateY(40px);

  }

  100% {

  transform: translateY(0);

  }

  }

  // transform: translateY(-40px);

                    @media(max-width: 880px){

                        display: none;

                    }

  }


  .box {

  flex-shrink: 0;

  width: 270px;

  height: 119px;

  border-radius: 15px;

  background-color: #272b35;

  border: 1px solid #42454e;

  padding: 15px 22px;

  color: #fff;

  font-family: "DudaSans-Medium";

               @media(max-width: 640px){

                        width: unset;

    padding: 15px 12px;

                    }

  img {

  max-width: 32px;

  float: left;

                        @media(max-width: 640px){

    max-width: 30px;

                        }

  }

  .title {

  float: left;

  font-size: 18px;

  margin: 10px 0 0 10px;

  letter-spacing: -0.02em;

                   @media(max-width: 640px){

    font-size: 13px;

     margin: 10px 0 0 7px;

                        }

  }

  .txt {

  float: left;

  margin-top: 8px;

  font-size: 16px;

  line-height: 22.56px;

  letter-spacing: -0.02em;

  color: rgba(255, 255, 255, 0.9);

                   @media(max-width: 640px){

    font-size: 12px;

                            line-height: 18px;

                        }

  }

  }

  }

  }

 }

 .animation {

  display: flex;

  align-items: center;

  width: 288px;

     flex-shrink: 0;

     @media(max-width: 1200px){

         display: none;

     }

 }

}



Testimonials carousel




The testimonial carousel is another tailor-made widget that showcases success stories in a captivating manner. What makes it stand out? Well, it's not your typical carousel—each tile in the carousel is unique. Some feature just text, while others put the spotlight on an image. 


Each tile also elevates a single insightful tidbit from the story behind it. And again, each one is unique. 


For some tiles, we’ve highlighted the numbers, underscoring the tangible impact of Duda’s platform on our customer’s business (see Develomark’s incredible growth from $150k to $1.8 million in revenue in 3 years). 


For other tiles, it’s a callout quote. Scroll to the right, for example, to see Retailgear’s spot-on quote that “With Duda, everything is possible.”


The variety in both visual styling and language make each tile stand out, drawing the user into the experience. 


HTML

 

<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/OwlCarousel2/2.3.4/assets/owl.carousel.min.css" />

<div class="testimonials-carousel">

    <div class="bdy owl-carousel">

        {{#each testimonials}}

            <div class="item {{this.style}}" style="background-image: url({{this.image}}); background-color: {{this.bg-color}}; color: {{this.font-color}};">

                {{#if this.testimonial}}

                <div class="testimonial">{{this.testimonial}}</div>

                {{/if}}

                {{#if this.name}}

                <div class="name">{{this.name}}</div>

                {{/if}}

                <div class="logo">

                    <img src="{{this.logo}}">

                </div>

                {{#if this.first-title}}

                <div class="title">{{this.first-title}}</div>

                {{/if}}

                {{#if this.first-description}}

                <div class="description">{{this.first-description}}</div>

                {{/if}}

                {{#if this.second-title}}

                <div class="title">{{this.second-title}}</div>

                {{/if}}

                {{#if this.second-description}}

                <div class="description">{{this.second-description}}</div>

                {{/if}}

                <a class="button" href="{{this.link.value}}" style="color: {{this.font-color}};">

                    {{this.button-text}}

                    {{#equals this.icon "arrow"}}

                    <svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">

                        <g clip-path="url(#clip0_7110_5748)">

                                <path d="M11.4987 2.50012L1.58203 12.4167" stroke="{{this.font-color}}" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/>

                                <path d="M2.66406 1.58301H12.4141V11.333" stroke="{{this.font-color}}" stroke-width="2" stroke-linecap="square" stroke-linejoin="round"/>

                        </g>

                        <defs>

                            <clipPath id="clip0_7110_5748">

                                <rect width="14" height="14" fill="{{this.font-color}}"/>

                            </clipPath>

                        </defs>

                    </svg>

                    {{/equals}}

                    {{#equals this.icon "play"}}

                    <svg xmlns="http://www.w3.org/2000/svg" width="13" height="16" viewBox="0 0 13 16" fill="none">

                      <path d="M1 1V15L12 8L1 1Z" stroke="{{this.font-color}}" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>

                    </svg>

                    {{/equals}}


                </a>

            </div>

        {{/each}}

    </div>

</div>


JavaScript

 

const testimonialBdy = $(".testimonials-carousel .bdy");


dmAPI.loadScript('https://cdn.jsdelivr.net/npm/owl.carousel@2.3.4/dist/owl.carousel.min.js',function() {

    testimonialBdy.owlCarousel({

        margin: 35,

        autoWidth:true,

        dots: false,

        responsive:{

            0:{

                margin: 20

            },

            600:{

                margin: 35

            }

        }


    });

});


CSS

 

section:has(.testimonials-carousel) {

    overflow-x: hidden;

}

.testimonials-carousel{

    float: left;

    width: 100%;

    .owl-carousel{

        .owl-stage-outer{

            overflow: unset;

        }

        .owl-item{ 

            img{

                width: unset;

            }

        }

    }

    .item{

        float: left;

        width: 390px;

        height: 368px;

        border-radius: 20px;

        background-size: cover;

        background-position: center;

        padding: 40px;

        display: flex;

        flex-direction: column;

        @media(max-width: 640px){

            width: 300px;

            height: 283px;

            border-radius: 15px;

            padding: 27px;

        }

        a{

            text-decoration: none; 

        }

        .logo{

            svg{

                @media(max-width: 640px){

                    max-height: 29px;

                }

            }

        }

        .button{

            font-size: 18px;

            font-style: normal;

            font-weight: 550;

            line-height: 100%; /* 18px */

            letter-spacing: -0.18px;

            margin-top: 26px;

            display: flex;

            align-items: center;

            @media(max-width: 640px){

                font-size: 14px;

                line-height: 14px;

                letter-spacing: -1%;

                margin-top: 18px;

            }

            svg{

                margin-left: 8px;

                @media(max-width: 640px){

                    max-height: 10px;

                }

            }

        }

        &.style-1{

            .testimonial{

                font-family: "CalSans-SemiBold";

                font-size: 32px;

                font-style: normal;

                font-weight: 600;

                line-height: 120%; /* 38.4px */

                letter-spacing: 0.16px;

                @media(max-width: 640px){

                    font-size: 24px;

                    line-height: 28.8px;

                    letter-spacing: 0.5%;

                }

            }

            .logo{

                margin-top: auto;

            }

        }

        &.style-2{

            .testimonial{

                font-family: "CalSans-SemiBold";

                font-size: 25px;

                font-style: normal;

                font-weight: 600;

                line-height: 120%; /* 30px */

                letter-spacing: 0.125px;

                margin-bottom: 10px;

                @media(max-width: 640px){

                    font-size: 18px;

                    line-height: 21.6px;

                    letter-spacing: 0.5%;

                }

                &:before {

                    content: "“";

                    margin-left: -12px;

                    transform: translate(-8px, -5px);

                    display: inline-block;

                    @media(max-width: 640px){

                        margin-left: -10px;

                        transform: translate(-4px, -5px);

                    }

                }

                &:after{

                    content: "”";

                }

            }

            .name{

                opacity: 0.8;

                font-size: 17px;

                font-style: normal;

                font-weight: 550;

                line-height: 134%; /* 22.78px */

                letter-spacing: -0.17px;

                font-family: 'DudaSans-Medium';

                @media(max-width: 640px){

                    font-size: 14px;

                    line-height: 18.76px;

                    letter-spacing: -1%;

                }

            }

            .logo{

                margin-top: auto;

            }

        }

        &.style-3{

            .logo{

                margin-bottom: auto;

            }

            .title{

                font-family: "CalSans-SemiBold";

                font-size: 48px;

                font-style: normal;

                font-weight: 600;

                line-height: 100%; /* 57.6px */

                letter-spacing: 0.24px;

                @media(max-width: 640px){

                    font-size: 36px;

                    line-height: 43.2px;

                    letter-spacing: -0.5%;

                }

            }

            .description{

                font-size: 17px;

                font-style: normal;

                font-weight: 550;

                line-height: 134%; /* 22.78px */

                letter-spacing: -0.17px;

                opacity: 0.8;

                @media(max-width: 640px){

                    font-size: 14px;

                    line-height: 18.76px;

                    letter-spacing: -1%;

                }

            }

            :nth-child(3){

                margin-bottom: 30px;

                @media(max-width: 640px){

                    margin-bottom: 12px;

                }

            }

            .button{

                margin-top: auto;

            }

        }

    }

}



The bottom inspirational collage




This section serves as an inspiration board, showcasing various examples of real customer websites to spark your creativity.


In this section, we fully leaned into “show don’t tell.” There are very few words because the example websites speak for themselves with their stunning designs.


Unlike some of our custom widgets, this section doesn’t rely on specialized coding. Instead, it utilizes overlapping columns and animation. Essentially, it's a section with three columns, each with different padding from the top, and images stacked vertically within those columns.


That’s a wrap


That’s it folks - Duda’s homepage unraveled. 


As I mentioned at the very beginning of this post, the key takeaway is this homepage is just a glimpse into the endless potential of what you can achieve. With Duda, you're not confined by boundaries—you're empowered to stretch the platform to its limits and beyond. 


Want to share your thoughts on our new homepage? Don’t hesitate to reach out in the Duda community.

A website shows a picture of a tropical island in the middle of the ocean.
By Shawn Davis 02 May, 2024
Third party aggregation platforms are vacuuming up small business profits with no recourse. What if it didn’t have to be this way? See how one SaaS company is giving SMBs the tools they need to fight back.
Forbes logo and the headline How Verticalized SaaS Companies Can Accelerate Their Growth In 2024
By Itai Sadan 29 Apr, 2024
Uncover the playbook for vertical SaaS success in 2024! Dive into the transformative power of multi-product strategies with insights from Itai Sadan, CEO and cofounder of Duda. Learn how to skyrocket revenue, boost customer loyalty, and dominate your market niche.
Entrepreneur's logo and How to design an eye-catching website that truly captures your audience.
By Itai Sadan 24 Apr, 2024
The rules governing a "well-designed website" are in constant flux. So getting insights into the latest web design trends for 2024 is crucial to captivate visitors and engage the right audience for your business.
Show More

Latest Posts

Share by: