<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Tudor Wolff</title>
    <description>The latest articles on DEV Community by Tudor Wolff (@its_tudes).</description>
    <link>https://dev.to/its_tudes</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F618592%2F47ee84c1-1948-4dee-8607-a1c71f00cc85.png</url>
      <title>DEV Community: Tudor Wolff</title>
      <link>https://dev.to/its_tudes</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/its_tudes"/>
    <language>en</language>
    <item>
      <title>KendoReact Challenge: Bark Board</title>
      <dc:creator>Tudor Wolff</dc:creator>
      <pubDate>Mon, 24 Mar 2025 00:14:44 +0000</pubDate>
      <link>https://dev.to/its_tudes/kendoreact-challenge-bark-board-2i67</link>
      <guid>https://dev.to/its_tudes/kendoreact-challenge-bark-board-2i67</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/kendoreact"&gt;KendoReact Free Components Challenge&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What I Built
&lt;/h2&gt;

&lt;p&gt;My partner and I embraced the &lt;a href="https://dev.to/challenges/kendoreact"&gt;KendoReact Free Components Challenge&lt;/a&gt; by creating a NextJS web application that captures the playful spirit and unique traits of your dog, then presents it in a personalized report. The report is generated solely from a URL, making it easy to share with friends, family, vets, or anyone looking after your fur baby.&lt;/p&gt;

&lt;p&gt;We named our project &lt;strong&gt;Bark Board&lt;/strong&gt;—and it truly lives up to the hype!&lt;/p&gt;

&lt;h3&gt;
  
  
  Demo
&lt;/h3&gt;

&lt;p&gt;Before diving into the details, I’m sure you’re eager to try it out:&lt;/p&gt;

&lt;p&gt;🌐 - Experience the app at &lt;a href="https://barkboard-ashen.vercel.app/" rel="noopener noreferrer"&gt;this link&lt;/a&gt;.&lt;br&gt;&lt;br&gt;
🖥️ - &lt;a href="https://github.com/itstudes/barkboard" rel="noopener noreferrer"&gt;The source code&lt;/a&gt; is available on Github under an MIT license.&lt;/p&gt;

&lt;p&gt;Here’s how it works:&lt;br&gt;
The application guides users through a form where they provide essential details about their beloved pet. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdir35lmyxpk27m2iin0h.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fdir35lmyxpk27m2iin0h.png" alt="Bark Board Form Input Example" width="800" height="376"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The form covers:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Basic information such as name, breed, age, and weight.&lt;/li&gt;
&lt;li&gt;Key attributes that define their personality.&lt;/li&gt;
&lt;li&gt;Insights into their dog’s behavior.&lt;/li&gt;
&lt;li&gt;A selection of words your dog recognizes—feel free to choose a few.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once completed, the app generates a shareable report:&lt;br&gt;
This unique URL can be shared with anyone, offering a quick and charming profile of your dog.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fqco4vavjuu0sg4u82j.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0fqco4vavjuu0sg4u82j.png" alt="Bark Board Report Example" width="800" height="378"&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;
  
  
  KendoReact Experience
&lt;/h2&gt;

&lt;p&gt;Working with the KendoReact library was a mostly seamless and enjoyable experience, especially in conjunction with the NextJS framework.&lt;/p&gt;

&lt;p&gt;We built a NextJS TypeScript project with Bootstrap theming using the &lt;a href="https://marketplace.visualstudio.com/items?itemName=KendoUI.kendotemplatewizard" rel="noopener noreferrer"&gt;Template Wizard Visual Studio Code tool&lt;/a&gt; and &lt;a href="https://www.telerik.com/kendo-react-ui/components/installation/vscode-extensions/vscode-wizard" rel="noopener noreferrer"&gt;that workflow&lt;/a&gt;. The setup was straightforward and hassle-free.&lt;/p&gt;

&lt;p&gt;Here are the top 10 KendoReact components we utilized:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/buttons/button" rel="noopener noreferrer"&gt;&lt;code&gt;Button&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/buttons/chiplist" rel="noopener noreferrer"&gt;&lt;code&gt;ChipList&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/grid" rel="noopener noreferrer"&gt;&lt;code&gt;Grid&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/dropdowns/dropdownlist" rel="noopener noreferrer"&gt;&lt;code&gt;DropDownList&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/inputs/slider" rel="noopener noreferrer"&gt;&lt;code&gt;Slider&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/dialogs" rel="noopener noreferrer"&gt;&lt;code&gt;Dialog&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/layout/stacklayout" rel="noopener noreferrer"&gt;&lt;code&gt;StackLayout&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/layout/tilelayout" rel="noopener noreferrer"&gt;&lt;code&gt;TileLayout&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/layout/stepper" rel="noopener noreferrer"&gt;&lt;code&gt;Stepper&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/kendo-react-ui/components/common/svgicon" rel="noopener noreferrer"&gt;&lt;code&gt;SvgIcon&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;In truth, we integrated even more than these 10 components throughout the project!&lt;/p&gt;

&lt;p&gt;While the development process was largely smooth, we did encounter a couple of challenges, which I discuss below.&lt;/p&gt;
&lt;h3&gt;
  
  
  Challenge 1: Styling
&lt;/h3&gt;

&lt;p&gt;One major hurdle was understanding how Telerik expects developers to integrate standard CSS classes from their chosen styling library (e.g., Bootstrap). &lt;/p&gt;

&lt;p&gt;I initially aimed to apply familiar classes like &lt;code&gt;mt-2&lt;/code&gt; and &lt;code&gt;p-3&lt;/code&gt;, but they didn’t work as expected. I spent considerable time combing through documentation, seeking guidance from ChatGPT, and debugging in the browser.&lt;/p&gt;

&lt;p&gt;In hindsight, a simple Bootstrap cheat sheet would have been immensely helpful. &lt;/p&gt;

&lt;p&gt;Links that assisted me:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/design-system/docs/themes/kendo-themes/bootstrap/" rel="noopener noreferrer"&gt;https://www.telerik.com/design-system/docs/themes/kendo-themes/bootstrap/&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.telerik.com/design-system/docs/themes/kendo-themes/bootstrap/theme-variables/" rel="noopener noreferrer"&gt;https://www.telerik.com/design-system/docs/themes/kendo-themes/bootstrap/theme-variables/&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Challenge 2: TileLayout
&lt;/h3&gt;

&lt;p&gt;For our report, we envisioned an Apple-inspired tile view (check out &lt;a href="https://www.figma.com/community/file/1004760541629050707" rel="noopener noreferrer"&gt;this Figma file&lt;/a&gt; if you need a visual reference). &lt;/p&gt;

&lt;p&gt;We discovered the &lt;code&gt;TileLayout&lt;/code&gt; component, which was easy to implement. However, we soon realized that the default &lt;code&gt;k-card&lt;/code&gt; CSS class applied a &lt;code&gt;width: 65vw;&lt;/code&gt;, which disrupted our layout since every card inherited this style. A simple CSS override resolved the issue:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nc"&gt;.k-card&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;width&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="nl"&gt;height&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="m"&gt;100%&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Challenge 3: Sneaky chip Property in ChipList
&lt;/h3&gt;

&lt;p&gt;Another interesting nuance was observed in the Chip example. You can instantiate a Chip like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chip&lt;/span&gt;
  &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Small Rounded&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;value&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;small rounded chip&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;svgIcon&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;homeIcon&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;rounded&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;small&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;themeColor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;info&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="na"&gt;fillMode&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;outline&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;However, when configuring a &lt;code&gt;ChipList&lt;/code&gt;, additional properties (other than text and value) must be explicitly defined, as shown in the example below:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight tsx"&gt;&lt;code&gt;&lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;ChipList&lt;/span&gt;
   &lt;span class="na"&gt;data&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;commandChips&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
   &lt;span class="na"&gt;selection&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="s"&gt;"multiple"&lt;/span&gt;
   &lt;span class="na"&gt;chip&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;ChipProps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="nc"&gt;Chip&lt;/span&gt;
          &lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="p"&gt;...&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;themeColor&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataItem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;themeColor&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;fillMode&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataItem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;fillMode&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
          &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;=&lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="nx"&gt;props&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;dataItem&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
        &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
      &lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;/&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This subtle distinction took a bit of unraveling, but it eventually became clear.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;We really had so much fun with Bark Board! &lt;/p&gt;

&lt;p&gt;There's a lot more on the horizon, and we're eager to roll out new features that further enhance your experience. Your feedback is invaluable—please feel free to share your thoughts, suggestions, and feature requests in the repository and on this blog post. &lt;/p&gt;

&lt;p&gt;Let’s make Bark Board even better together!&lt;/p&gt;

&lt;h2&gt;
  
  
  My Team
&lt;/h2&gt;

&lt;p&gt;The team was a duo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a class="mentioned-user" href="https://dev.to/its_tudes"&gt;@its_tudes&lt;/a&gt; &lt;/li&gt;
&lt;li&gt;&lt;a class="mentioned-user" href="https://dev.to/tam_dev"&gt;@tam_dev&lt;/a&gt;&lt;/li&gt;
&lt;/ol&gt;

</description>
      <category>devchallenge</category>
      <category>kendoreactchallenge</category>
      <category>react</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
