<?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>Forem: Siddharth Dayalwal</title>
    <description>The latest articles on Forem by Siddharth Dayalwal (@siddharth_hacks).</description>
    <link>https://forem.com/siddharth_hacks</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%2F222609%2Fbff16af9-a357-484e-82ed-53b46cd21e22.png</url>
      <title>Forem: Siddharth Dayalwal</title>
      <link>https://forem.com/siddharth_hacks</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/siddharth_hacks"/>
    <language>en</language>
    <item>
      <title>Designing Content Systems that Understand and Act</title>
      <dc:creator>Siddharth Dayalwal</dc:creator>
      <pubDate>Sat, 21 Mar 2026 04:16:19 +0000</pubDate>
      <link>https://forem.com/storyblok/designing-content-systems-that-understand-and-act-5fal</link>
      <guid>https://forem.com/storyblok/designing-content-systems-that-understand-and-act-5fal</guid>
      <description>&lt;p&gt;Modern JavaScript applications don’t just render UI anymore. They orchestrate search, personalization, analytics, AI services, localization workflows, and multi-channel publishing. And underneath all of it sits content.&lt;/p&gt;

&lt;p&gt;The problem is that most teams still treat content like static data, something you store, fetch, render, and then forget. That model worked when applications were simple. It breaks down when your system needs to reason about content, react to it, and automate around it.&lt;/p&gt;

&lt;p&gt;If publishing a page triggers five scripts, three webhooks, and two background jobs, you’re not managing content anymore, you are managing side effects.&lt;/p&gt;

&lt;p&gt;To scale without increasing fragility, content systems need to evolve in three ways: they need to &lt;strong&gt;understand meaning, react to events, and orchestrate durable workflows&lt;/strong&gt;. In this article, we’ll explore these three pillars and how they shape the architecture of modern, AI-native content systems.&lt;/p&gt;

&lt;h2&gt;
  
  
  What AI-Native actually means
&lt;/h2&gt;

&lt;p&gt;When people talk about AI-native systems, they often imagine assistants in the UI. But AI becomes far more useful when it’s embedded deeper in the architecture. &lt;/p&gt;

&lt;p&gt;For AI to work effectively in a content system, three capabilities are required:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Meaning&lt;/strong&gt;, so AI can understand what content represents&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Events&lt;/strong&gt;, so the system knows when something changes&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Workflows&lt;/strong&gt;, so AI output can trigger real actions&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Without meaning, AI cannot reason about content. Without events, it doesn’t know when to act. Without workflows, its output has nowhere to go. These three capabilities turn a traditional CMS into an AI-native content system.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Store Meaning, Not Just Fields
&lt;/h2&gt;

&lt;p&gt;Traditional CMS architectures are built around fields: title, body, tags, metadata, and more. Search relies on keywords, and filters rely on attributes. When other systems need smarter logic, they rebuild their own interpretation of the content. Over time this leads to duplicated logic across the stack. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A semantic layer changes this&lt;/strong&gt;. *&lt;strong&gt;*Instead of representing content only through fields, the system also represents it through **meaning&lt;/strong&gt;; often using embeddings or vector indexing. This shared semantic representation allows different systems to operate from the same understanding of content. The same layer can power search relevance, AI agents, internal tools, and backend services. Meaning is modeled once and reused everywhere.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Publish Is a Signal
&lt;/h2&gt;

&lt;p&gt;Publishing content isn’t the end of a workflow. It’s a &lt;strong&gt;signal&lt;/strong&gt;. Content state changes usually trigger multiple processes: indexing, notifications, AI tagging, localization, or distribution. Many teams handle this through webhook chains or scripts. That works initially, but it becomes fragile as complexity grows. An event-driven approach scales better. &lt;/p&gt;

&lt;p&gt;Instead of embedding logic in the publish action, the system emits an event that other services can subscribe to. A simplified example might look like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// publish-content.js&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;eventBus&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;./eventBus.js&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;async&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;publishContent&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;database&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;save&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;eventBus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;emit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content.published&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;locale&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;content&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;locale&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;p&gt;Subscribers can then react to that event:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight jsx"&gt;&lt;code&gt;&lt;span class="c1"&gt;// ai-tagging.js&lt;/span&gt;
&lt;span class="nx"&gt;eventBus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content.published&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;aiService&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;autoTag&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="c1"&gt;// localization.js&lt;/span&gt;
&lt;span class="nx"&gt;eventBus&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;content.published&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="k"&gt;async &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&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="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;localizationWorkflow&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;start&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&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;p&gt;Each responsibility remains isolated. New capabilities can subscribe without modifying existing logic. For JavaScript teams already familiar with event-driven systems, this pattern feels natural. Applying it to content workflows simply brings the same architectural discipline to another layer of the stack. &lt;strong&gt;Events scale. Scripts chains don’t.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is also where workflow automation tools begin to matter. Instead of wiring scripts together manually, modern systems are starting to orchestrate reactions visually. Features like &lt;a href="https://www.storyblok.com/lp/flowmotion" rel="noopener noreferrer"&gt;Storyblok FlowMotion&lt;/a&gt; allow teams to trigger structured workflows from content events, turning what used to be invisible automation into something observable and maintainable.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Orchestrate, Don’t Glue
&lt;/h2&gt;

&lt;p&gt;As systems grow, workflows become more complex. Publishing a piece of content might involve:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;AI classification&lt;/li&gt;
&lt;li&gt;Human review&lt;/li&gt;
&lt;li&gt;Localization&lt;/li&gt;
&lt;li&gt;Multi-channel distribution&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If these steps live across scattered scripts, the process becomes hard to understand and maintain. Workflow orchestration solves this by making the process explicit.&lt;/p&gt;

&lt;p&gt;Instead of chaining handlers together, the system defines a clear workflow where each step has visible state. AI actions, human approvals, and system tasks all exist within the same flow. This makes automation easier to observe, easier to debug, and safer to evolve.&lt;/p&gt;

&lt;h2&gt;
  
  
  Design Systems, Not Side Effects
&lt;/h2&gt;

&lt;p&gt;JavaScript developers already understand APIs, events, and distributed systems. Applying the same architectural thinking to content unlocks a more resilient approach. When content systems model meaning, emit events, and orchestrate workflows, something important changes. &lt;/p&gt;

&lt;p&gt;Content stops being passive data. It becomes an active participant in the system, something that can &lt;strong&gt;understand context, trigger actions, and move through intelligent processes&lt;/strong&gt;. That’s the difference between static content and a living content system.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>webdev</category>
      <category>architecture</category>
      <category>ai</category>
    </item>
    <item>
      <title>Building a Custom Calendar with React + Storyblok: A Recap of Our Bryntum Integration Tutorial</title>
      <dc:creator>Siddharth Dayalwal</dc:creator>
      <pubDate>Fri, 12 Dec 2025 12:24:03 +0000</pubDate>
      <link>https://forem.com/storyblok/building-a-custom-calendar-with-react-storyblok-a-recap-of-our-bryntum-integration-tutorial-582k</link>
      <guid>https://forem.com/storyblok/building-a-custom-calendar-with-react-storyblok-a-recap-of-our-bryntum-integration-tutorial-582k</guid>
      <description>&lt;p&gt;At Storyblok, we love collaborating with teams building exceptional frontend experiences. Recently, we partnered again with &lt;a href="https://bryntum.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Bryntum&lt;/strong&gt;&lt;/a&gt; to bring you a hands-on tutorial on &lt;strong&gt;creating a custom &lt;a href="https://bryntum.com/products/calendar/" rel="noopener noreferrer"&gt;Bryntum Calendar&lt;/a&gt; React component for Storyblok&lt;/strong&gt;. This guide is great for React developers who want to integrate advanced UI components without building them from scratch, and for Storyblok users to make their interfaces mode dynamic and content-driven.&lt;/p&gt;

&lt;p&gt;To follow along, you will just need a basic React setup (React 18+), a Storyblok space with the React SDK, and access to the Bryntum Calendar (trial or license). Once you have these in place, the tutorial walks you through connecting structured Storyblok content to a fully-featured calendar UI in a straightforward and developer-friendly way.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dive straight into the tutorial: Check out the complete guide on Integrating Bryntum Calendar + Storyblok + React Component&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Why Bryntum + Storyblok Works So Well
&lt;/h2&gt;

&lt;p&gt;Bryntum builds &lt;strong&gt;high-performance visual UI components&lt;/strong&gt;, including calendars, schedulers, and Gantt charts, that solve problems developers rarely want to rebuild from scratch. A calendar UI, in particular, hides a surprising amount of complexity: time zones, navigation, layouts, event logic, conflict resolution… the list goes on.&lt;/p&gt;

&lt;p&gt;Storyblok complements this perfectly with its &lt;strong&gt;headless CMS&lt;/strong&gt;, offering structured content, visual editing, and a schema that adapts to whatever your project needs.&lt;/p&gt;

&lt;p&gt;Together, they give you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fully functional &lt;strong&gt;calendar interface&lt;/strong&gt; powered by Bryntum&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;content-driven configuration layer&lt;/strong&gt; using Storyblok&lt;/li&gt;
&lt;li&gt;A smooth &lt;strong&gt;React developer experience&lt;/strong&gt; with the Storyblok React SDK&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It’s the best of both worlds: editors manage content, while your components handle the logic.&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%2Fv0p4gdxzi6p5mmah9m6g.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%2Fv0p4gdxzi6p5mmah9m6g.png" alt=" " width="800" height="433"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  What You’ll Learn in Bryntum’s Tutorial
&lt;/h2&gt;

&lt;p&gt;This tutorial walks you step-by-step through building a working calendar UI using &lt;strong&gt;React, Storyblok, and Bryntum Calendar&lt;/strong&gt;. Here’s what you’ll take away:&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;1. A Ready-to-Use Calendar Component&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bryntum handles layout, event rendering, drag-and-drop interactions, and multiple views so you can focus on integrating, and not rebuilding the core functionality.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;2. Fetching and Rendering Storyblok Content in React&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You’ll learn how to work with Storyblok’s React SDK using:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;useStoryblokState&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;apiPlugin&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;a custom Storyblok client&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These help you connect Storyblok entries (like Events or Calendars) directly to Bryntum’s configuration.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;3. Mapping CMS Content to Bryntum’s Data Model&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;Bryntum Calendar expects a specific schema. The tutorial shows how to map Storyblok’s structured content to Bryntum’s data stores, an essential skill when building headless, UI-heavy applications.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;4. Using Storyblok’s Visual Editor With Custom Components&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;You’ll integrate your calendar into the Visual Editor through the &lt;code&gt;StoryblokComponent&lt;/code&gt; renderer so editors can preview updates instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;strong&gt;5. A Clean, Reusable Integration Pattern&lt;/strong&gt;
&lt;/h3&gt;

&lt;p&gt;By the end, you’ll have a self-contained React component that reads from Storyblok and renders a fully interactive Bryntum calendar. No hacks. No unnecessary complexity. Just a clean, scalable pattern you can reuse across projects.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why This Matters for Developers
&lt;/h2&gt;

&lt;p&gt;Building a production-ready calendar UI is notoriously difficult and maintaining it is even harder.&lt;/p&gt;

&lt;p&gt;This tutorial gives you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A battle-tested calendar component you don’t need to rebuild&lt;/li&gt;
&lt;li&gt;A consistent data flow powered by Storyblok&lt;/li&gt;
&lt;li&gt;A scalable integration pattern you can apply to other Bryntum components&lt;/li&gt;
&lt;li&gt;A way to empower editors without sacrificing structure or performance&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you're building dashboards, booking systems, internal tools, or anything time or event-based, this integration gives you a huge head start.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ready to Try It Out?
&lt;/h2&gt;

&lt;p&gt;If you want to explore how Storyblok and Bryntum work together in a real project, this tutorial is the perfect starting point. Try the build yourself, explore the code, and experiment with your own content types. You’ll learn a lot along the way.&lt;/p&gt;

&lt;h2&gt;
  
  
  Resources &amp;amp; Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Read the full tutorial&lt;/strong&gt;: &lt;a href="https://bryntum.com/blog/creating-a-custom-bryntum-calendar-react-component-for-storyblok/" rel="noopener noreferrer"&gt;Creating a custom Bryntum Calendar React component for Storyblok&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Explore the completed code&lt;/strong&gt;: &lt;a href="https://github.com/bryntum/bryntum-calendar-storyblok-quick-start/tree/completed-app" rel="noopener noreferrer"&gt;GitHub repository for the tutorial&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://www.storyblok.com/join-discord" rel="noopener noreferrer"&gt;Storyblok Discord Community&lt;/a&gt;: Connect with other developers working on exciting projects.&lt;/li&gt;
&lt;li&gt;Read the earlier guide: &lt;a href="https://www.storyblok.com/mp/mastering-scheduling-and-gantt-charting-a-recap-of-bryntum-s-guide" rel="noopener noreferrer"&gt;Building a Bryntum Gantt UI component with React and Storyblok&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>storyblok</category>
      <category>react</category>
      <category>calendar</category>
      <category>component</category>
    </item>
    <item>
      <title>Global Financial Starter: Multilingual Template – Bejamas x Storyblok, Powered by Astro</title>
      <dc:creator>Siddharth Dayalwal</dc:creator>
      <pubDate>Wed, 17 Sep 2025 10:30:00 +0000</pubDate>
      <link>https://forem.com/storyblok/global-financial-starter-multilingual-template-bejamas-x-storyblok-powered-by-astro-5495</link>
      <guid>https://forem.com/storyblok/global-financial-starter-multilingual-template-bejamas-x-storyblok-powered-by-astro-5495</guid>
      <description>&lt;p&gt;Exciting news for Astro and Storyblok fans! With our friends at &lt;a href="https://bejamas.com/" rel="noopener noreferrer"&gt;Bejamas&lt;/a&gt;, we’ve launched the &lt;strong&gt;Global Financial Starter: Multilingual Template&lt;/strong&gt;, a production-ready Astro and Storyblok project that delivers fast, compliant, and global online presence for international sites.&lt;/p&gt;

&lt;p&gt;Whether you're a frontend team, an agency, or a solo developer, this starter is designed to help you spin up multilingual websites for financial brands, campaigns, or products.&lt;/p&gt;

&lt;p&gt;Storyblok and Bejamas share the same mission–to make it easier for developers to launch global digital experiences without compromising performance and flexibility. This starter is the result of one such partnership. It's not just a showcase, but a project you can clone, adapt, and ship to production.&lt;/p&gt;

&lt;p&gt;Keep reading to learn about the template's features, how it works, and how to get started building with it.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Curious already? &lt;a href="https://astro-storyblok-finance-starter.netlify.app/" rel="noopener noreferrer"&gt;Explore the live demo&lt;/a&gt; before you dive in.&lt;/p&gt;
&lt;/blockquote&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%2Foq63nql735kia5xagval.webp" 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%2Foq63nql735kia5xagval.webp" alt="Global Financial Starter: Multilingual Template" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Get started
&lt;/h2&gt;

&lt;p&gt;Go from zero to a live project in minutes:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Fork and clone the &lt;a href="https://github.com/bejamas/astro-storyblok-finance-starter" rel="noopener noreferrer"&gt;GitHub Repository&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Sign up to Storyblok and create a new space&lt;/li&gt;
&lt;li&gt;&lt;a href="https://astro-storyblok-finance-starter.netlify.app/.netlify/functions/clone-storyblok-space" rel="noopener noreferrer"&gt;Clone the Storyblok Space&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Install dependencies and setup environment variables&lt;/li&gt;
&lt;li&gt;Create your project on Netlify and deploy!&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;To kick-start your project, follow the step-by-step guide on the &lt;a href="https://astro.build/themes/details/global-financial-starter-multilingual-template/" rel="noopener noreferrer"&gt;&lt;strong&gt;Astro Template page&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The highlights
&lt;/h2&gt;

&lt;p&gt;The Global Financial Starter is built with a modern, headless stack designed for performance, scalability, and ease of use: Astro, Storyblok, Netlify, and PostHog.&lt;/p&gt;

&lt;p&gt;It comes pre-configured with the essential features your team needs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Modular content model&lt;/strong&gt; – pre-built blocks like hero, services, reports, testimonials, and more.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Financial reports&lt;/strong&gt; – a dedicated content type with a report list page.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Multilingual by default&lt;/strong&gt; – built-in language switcher with optional AI-assisted translations.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Visual editing&lt;/strong&gt; – live preview with Storyblok’s block-based approach.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;SEO ready&lt;/strong&gt; – every page includes metadata fields.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Optimized performance&lt;/strong&gt; – responsive images, static output, and &lt;a href="https://pagespeed.web.dev/analysis/https-astro-storyblok-finance-starter-netlify-app/41ym06mwtn?form_factor=desktop" rel="noopener noreferrer"&gt;https://pagespeed.web.dev/analysis/https-astro-storyblok-finance-starter-netlify-app/41ym06mwtn?form_factor=desktop&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A/B testing&lt;/strong&gt; – PostHog integration to run experiments and A/B tests without extra setup.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  See it in action
&lt;/h2&gt;

&lt;p&gt;Don’t just take our word for it, explore the starter yourself with a &lt;a href="https://astro-storyblok-finance-starter.netlify.app/" rel="noopener noreferrer"&gt;live demo site&lt;/a&gt; or &lt;a href="https://www.youtube.com/watch?v=2hPhwubis7Q" rel="noopener noreferrer"&gt;watch a demo video on YouTube&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Show us what you got
&lt;/h2&gt;

&lt;p&gt;We bring you this starter with Bejamas so you can move faster when building multilingual landing pages, creating campaign microsites, or scaling a global financial brand.&lt;/p&gt;

&lt;p&gt;Try it today, experiment with it, and let us know what you think:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Contributions on &lt;a href="https://github.com/bejamas/astro-storyblok-finance-starter" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt; are welcome: issues, PRs, or any other feedback.&lt;/li&gt;
&lt;li&gt;Join the &lt;a href="https://www.storyblok.com/join-discord" rel="noopener noreferrer"&gt;Storyblok Discord&lt;/a&gt; community and share what you build.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Related resources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.storyblok.com/docs/guides/astro/" rel="noopener noreferrer"&gt;Integrate Astro with Storyblok&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/storyblok/blueprint-core-astro" rel="noopener noreferrer"&gt;Storyblok's Astro blueprint repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.storyblok.com/docs/packages/storyblok-astro" rel="noopener noreferrer"&gt;Storyblok Astro SDK&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>multilingual</category>
      <category>financial</category>
      <category>storyblok</category>
      <category>astro</category>
    </item>
    <item>
      <title>Mastering Scheduling and Gantt Charting: A Recap of Bryntum's Guide</title>
      <dc:creator>Siddharth Dayalwal</dc:creator>
      <pubDate>Fri, 14 Feb 2025 09:19:36 +0000</pubDate>
      <link>https://forem.com/storyblok/mastering-scheduling-and-gantt-charting-a-recap-of-bryntums-guide-17li</link>
      <guid>https://forem.com/storyblok/mastering-scheduling-and-gantt-charting-a-recap-of-bryntums-guide-17li</guid>
      <description>&lt;p&gt;Building a Gantt chart from scratch is no easy task—it can quickly become a complex challenge or even a blocker for your team. Fortunately, you don’t have to tackle it alone. That’s where the &lt;a href="https://bryntum.com/products/gantt/" rel="noopener noreferrer"&gt;&lt;strong&gt;Bryntum Gantt chart&lt;/strong&gt;&lt;/a&gt; comes in, providing a robust, pre-built scheduling solution that saves countless development hours. But what if you could take it a step further? Imagine seamlessly integrating it with Storyblok, allowing content editors to control project timelines without requiring developer intervention.&lt;/p&gt;

&lt;p&gt;To help you achieve this, we collaborated with &lt;a href="https://bryntum.com/" rel="noopener noreferrer"&gt;&lt;strong&gt;Bryntum&lt;/strong&gt;&lt;/a&gt; to create a step-by-step guide on building a &lt;a href="https://bryntum.com/blog/creating-a-custom-bryntum-gantt-react-component-for-storyblok/" rel="noopener noreferrer"&gt;Bryntum Gantt UI component with React and Storyblok&lt;/a&gt;. Here’s why this guide is a game-changer for developers using Storyblok.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Perfect Match: Storyblok and Bryntum
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Storyblok’s&lt;/strong&gt; joyful headless CMS empowers developers and content teams to create, scale, and deliver impactful digital experiences. &lt;strong&gt;Bryntum&lt;/strong&gt;, on the other hand, specializes in visual UI components like &lt;strong&gt;Gantt charts&lt;/strong&gt;, built for seamless integration with modern web frameworks.&lt;/p&gt;

&lt;p&gt;With Bryntum’s Gantt component, you get:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;fully customizable UI&lt;/strong&gt; to match your project’s unique needs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Powerful scheduling and tracking&lt;/strong&gt; for better project visibility.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Seamless integration with Storyblok’s React SDK&lt;/strong&gt;, enabling effortless rendering and updates.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;By combining Storyblok’s structured content management with Bryntum’s interactive Gantt charts, you get a powerful system for planning and tracking projects with precision.&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%2F4jefb6eonb7n6rs6b3lr.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%2F4jefb6eonb7n6rs6b3lr.png" alt="Custom Bryntum Gantt React component for Storyblok" width="800" height="379"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What You’ll Learn from Bryntum's Guide
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Fundamentals of Scheduling and Gantt Charting:&lt;/strong&gt; Understand how Gantt charts work and why they are essential for visualizing complex project timelines.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Integrating Bryntum Gantt with React:&lt;/strong&gt; Learn how to use Bryntum’s pre-built Gantt chart UI component to save hours of development effort.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customizing and Extending the Gantt Chart:&lt;/strong&gt; Discover how to customize event rendering and align integration with Storyblok’s API-first architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Building a Fully Functional Gantt-Driven UI:&lt;/strong&gt; Create a dynamic, Gantt-powered UI that enables non-developers to manage project schedules effortlessly.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;By the end of this guide, you will have a ready-to-use &lt;strong&gt;Gantt chart UI powered by Storyblok + Bryntum Gantt + React&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why This Matters for Developers
&lt;/h3&gt;

&lt;p&gt;Developing a Gantt chart UI component from the ground up is probably one of the most complex frontend challenges. It involves handling dependencies, interactions, and rendering large datasets efficiently. With the Bryntum chart, you get a completely optimized and feature-rich solution up straight. &lt;/p&gt;

&lt;p&gt;On top of it, its effortless integration with Storyblok enables content editors and non-technical users to manage tasks as per their needs without requiring code changes—making developers’ lives easier. This means you can focus on building innovative and powerful solutions rather than reinventing the wheel.&lt;/p&gt;

&lt;h3&gt;
  
  
  Ready to Try It Out?
&lt;/h3&gt;

&lt;p&gt;To conclude, the best way to see how Storyblok and Bryntum work together is to build something yourself. It’s time to explore Bryntum’s guide and see how it can complement your Storyblok experience by putting it into action. Dive in and take your project management skills to the next level!&lt;/p&gt;

&lt;h3&gt;
  
  
  Resources &amp;amp; Links
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Checkout the &lt;a href="https://bryntum.com/blog/creating-a-custom-bryntum-gantt-react-component-for-storyblok/" rel="noopener noreferrer"&gt;comprehensive guide&lt;/a&gt; on creating a custom Bryntum Gantt React component for Storyblok.&lt;/li&gt;
&lt;li&gt;You can find the code for the complete tutorial in this &lt;a href="https://github.com/bryntum/bryntum-gantt-storyblok-starter/tree/completed-app" rel="noopener noreferrer"&gt;GitHub repository&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Don’t forget to join &lt;a href="https://discord.gg/jKrbAMz" rel="noopener noreferrer"&gt;Storyblok Discord Community&lt;/a&gt; and connect with other developers working on exciting projects.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>storyblok</category>
      <category>react</category>
      <category>projectmanagement</category>
      <category>uicomponents</category>
    </item>
    <item>
      <title>Local Hack Day : Build</title>
      <dc:creator>Siddharth Dayalwal</dc:creator>
      <pubDate>Sun, 17 Jan 2021 22:34:38 +0000</pubDate>
      <link>https://forem.com/siddharth_hacks/local-hack-day-build-gl9</link>
      <guid>https://forem.com/siddharth_hacks/local-hack-day-build-gl9</guid>
      <description>&lt;p&gt;Local Hack Day : Build&lt;/p&gt;

&lt;p&gt;I never thought I would come so far!&lt;/p&gt;

&lt;p&gt;This has been a fantastic journey, I contributed a lot and learned at the same time. learning with people, building various projects, sharing ideas and views and what not.&lt;br&gt;
Local Hack Day Build has given us the opportunity to open up ourselves and come ahead and make ourselves shine.&lt;br&gt;
I was proud to be part of EddieHub Community! As I started, people in the community were super interactive which gave me boost, i actively took part in everything!&lt;br&gt;
Attended live sessions, various workshops, mini-events and what not, it has been altogether an incredible one.&lt;/p&gt;
&lt;h2&gt;
  
  
  CodeLess API
&lt;/h2&gt;

&lt;p&gt;Its call API Chaining and it requires a backend that uses the new api pattern&lt;/p&gt;

&lt;p&gt;If it is properly setup, you can automatically call it from the frontend like so:&lt;/p&gt;

&lt;p&gt;The POST post-chain would be encoded as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{ 
    ...[your_data_being_sent]... 
    chain:{ 
        key:dept_id, 
        combine:'false', 
        type:'postchain', 
        order:{dept/show:company_id,company/update:return} 
    } 
} 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And then call via Curl(or via javascript) as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -v -H "Content-Type: application/json" -H "Authorization: Bearer [access token]" -X POST -d "{'chain':{'key':'dept_id','combine':'false','type':'postchain','order':{'dept/show':'company_id','company/update':'return'}}}" "http://localhost:8080/v0.1/person/show/1" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If you need to send Max/Offset variables, do so as follows:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;curl -v -H "Content-Type: application/json" -H "Authorization: Bearer [access token]" -X POST -d "{'chain':{'key':'dept_id','combine':'false','type':'postchain','order':{'dept/show':'company_id','company/update':'return'}}}" "http://localhost:8080/v0.1/person/show/1?max=1,1,1&amp;amp;offset=0,0,0" 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Thanks for reading!&lt;/p&gt;

</description>
      <category>mlh</category>
      <category>majorleaguehacking</category>
      <category>localhackday</category>
    </item>
  </channel>
</rss>
