<?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: Dennis Adriaansen</title>
    <description>The latest articles on DEV Community by Dennis Adriaansen (@dennisadriaans).</description>
    <link>https://dev.to/dennisadriaans</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%2F2763536%2F52eae38a-6274-4a87-8d63-804bf4b6e25e.jpeg</url>
      <title>DEV Community: Dennis Adriaansen</title>
      <link>https://dev.to/dennisadriaans</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/dennisadriaans"/>
    <language>en</language>
    <item>
      <title>Why I'm Building Angular Charts</title>
      <dc:creator>Dennis Adriaansen</dc:creator>
      <pubDate>Wed, 04 Mar 2026 12:17:39 +0000</pubDate>
      <link>https://dev.to/dennisadriaans/why-im-building-angular-charts-3gk9</link>
      <guid>https://dev.to/dennisadriaans/why-im-building-angular-charts-3gk9</guid>
      <description>&lt;p&gt;React has &lt;strong&gt;Tremor&lt;/strong&gt;; Vue developers have &lt;strong&gt;Nuxt Charts&lt;/strong&gt;, and now, the Angular community finally has a dedicated, modern data visualization library: &lt;strong&gt;Angular Charts&lt;/strong&gt; (&lt;code&gt;angular-chrts&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;Hi, I’m Dennis Adriaansen. After seeing the incredible reception and widespread adoption of my previous project, Nuxt Charts, I want to share that same success and developer experience with the Angular community. &lt;/p&gt;

&lt;p&gt;Built on a s trong foundation of &lt;a href="https://unovis.dev/" rel="noopener noreferrer"&gt;Unovis&lt;/a&gt; and optimized for Angular, &lt;strong&gt;Angular Charts&lt;/strong&gt; is a high-performance, Signals-powered visualization library designed for the modern web.&lt;/p&gt;

&lt;h3&gt;
  
  
  Why Choose Angular Charts?
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;🚀 &lt;strong&gt;Signals-Powered Reactivity:&lt;/strong&gt; Built with Angular's modern reactivity model in mind, ensuring fine-grained updates and optimal performance.&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Beautiful by Default:&lt;/strong&gt; Delivers a polished, production-ready UI instantly, eliminating the need for heavy custom styling.&lt;/li&gt;
&lt;li&gt;📊 &lt;strong&gt;Versatile Visualization:&lt;/strong&gt; Comprehensive support for Bar, Line, Area, Donut, Bubble, and Gantt charts to cover all your dashboard needs.&lt;/li&gt;
&lt;li&gt;🛠 &lt;strong&gt;Native Angular Feel:&lt;/strong&gt; Features declarative components, &lt;code&gt;OnPush&lt;/code&gt; change detection readiness, and CSS-variable driven themes that feel right at home in an Angular codebase.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;See the components in action on our official website: &lt;a href="https://angularcharts.com/" rel="noopener noreferrer"&gt;angularcharts.com&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Quick Start Guide: Implementing Angular Charts
&lt;/h3&gt;

&lt;p&gt;Getting started with &lt;strong&gt;Angular Charts&lt;/strong&gt; is incredibly straightforward. Here is how you can render your first chart in under a minute.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;1. Install the Packages&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Use your preferred package manager to install the core library alongside its Unovis dependencies:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm add angular-chrts @unovis/angular @unovis/ts
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;2. Implement in Your Component&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Because &lt;strong&gt;Angular Charts&lt;/strong&gt; is built for modern Angular, it fully supports standalone components.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;Component&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="s1"&gt;@angular/core&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&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;BarChartComponent&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="s1"&gt;angular-chrts&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="nd"&gt;Component&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;standalone&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;imports&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;BarChartComponent&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;template&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`
    &amp;lt;ngx-bar-chart 
      [data]="chartData" 
      [categories]="categories" 
      xLabel="Month" 
      yLabel="Revenue ($)" 
    /&amp;gt;`&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;
&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;class&lt;/span&gt; &lt;span class="nc"&gt;AppComponent&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;chartData&lt;/span&gt; &lt;span class="o"&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;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Jan&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;revenue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;4500&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt; 
    &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;month&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Feb&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;revenue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;5200&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="nx"&gt;categories&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; 
    &lt;span class="na"&gt;revenue&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Revenue&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;color&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;#3b82f6&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="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;






&lt;h3&gt;
  
  
  Join the Angular Charts Community
&lt;/h3&gt;

&lt;p&gt;We’re moving fast to build the ultimate charting standard that the Angular ecosystem deserves. Whether you are building internal admin panels, SaaS dashboards, or public-facing data applications, &lt;strong&gt;Angular Charts&lt;/strong&gt; is designed to accelerate your workflow.&lt;/p&gt;

&lt;p&gt;Stay tuned for upcoming feature releases, early access to premium components, and open-source contribution opportunities. Let’s build something beautiful together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Official Resources &amp;amp; References:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;🌐 &lt;strong&gt;Website:&lt;/strong&gt; &lt;a href="https://angularcharts.com/" rel="noopener noreferrer"&gt;angularcharts.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;📚 &lt;strong&gt;Documentation:&lt;/strong&gt; &lt;a href="https://angularcharts.com/docs" rel="noopener noreferrer"&gt;angularcharts.com/docs&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;⚙️ &lt;strong&gt;Powered by:&lt;/strong&gt; &lt;a href="https://unovis.dev/" rel="noopener noreferrer"&gt;Unovis Data Visualization&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;🎨 &lt;strong&gt;Optimized for:&lt;/strong&gt; &lt;a href="https://material.angular.io/" rel="noopener noreferrer"&gt;Angular Material&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;We’re moving fast. Stay tuned for updates, early access, and contribution opportunities. Let’s build the charting standard Angular deserves, together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Resources:&lt;/strong&gt; &lt;a href="https://angularcharts.com/" rel="noopener noreferrer"&gt;Website&lt;/a&gt; | &lt;a href="https://angularcharts.com/docs" rel="noopener noreferrer"&gt;Documentation&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Migrate from NuxtHub to Cloudflare directly</title>
      <dc:creator>Dennis Adriaansen</dc:creator>
      <pubDate>Thu, 27 Nov 2025 13:37:11 +0000</pubDate>
      <link>https://dev.to/dennisadriaans/migrate-from-nuxthub-to-cloudflare-directly-4ncd</link>
      <guid>https://dev.to/dennisadriaans/migrate-from-nuxthub-to-cloudflare-directly-4ncd</guid>
      <description>&lt;p&gt;Ok, so I just switched nuxtcharts.com from NuxtHub to Cloudflare directly.&lt;/p&gt;

&lt;p&gt;I created a new repo using the pnpm create command shown on the CF page to compare the source files with my existing repository. &lt;a href="https://developers.cloudflare.com/pages/framework-guides/deploy-a-nuxt-site/" rel="noopener noreferrer"&gt;https://developers.cloudflare.com/pages/framework-guides/deploy-a-nuxt-site/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;✅ What I Did:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;wrangler.jsonc&lt;/li&gt;
&lt;li&gt;worker-configuration.d.ts (not that important if you just want it to work for now)&lt;/li&gt;
&lt;li&gt;Removed everything NuxtHub related.&lt;/li&gt;
&lt;li&gt;Installed Nuxt Content manually, since it was shipped with the NuxtHub module.&lt;/li&gt;
&lt;li&gt;Changed my useDB composable to use the Cloudflare binding directly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;I'm currently testing if everything is working fine. &lt;/p&gt;

&lt;p&gt;Please let me know if you have suggestions or recommendations. &lt;/p&gt;

&lt;p&gt;Let me share some more detailed information. &lt;/p&gt;

&lt;p&gt;My new &lt;code&gt;useDB()&lt;/code&gt; composable:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//server/utils/database.ts&lt;/span&gt;
&lt;span class="c1"&gt;// old&lt;/span&gt;
&lt;span class="c1"&gt;// export function useDB() {&lt;/span&gt;
&lt;span class="c1"&gt;//   return drizzle(hubDatabase(), { schema })&lt;/span&gt;
&lt;span class="c1"&gt;// }&lt;/span&gt;

&lt;span class="c1"&gt;// new&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;drizzle&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="s1"&gt;drizzle-orm/d1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="nx"&gt;schema&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;../database/schema&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;tables&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;schema&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;useDB&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;event&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;useEvent&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;d1&lt;/span&gt; &lt;span class="o"&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;context&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cloudflare&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;DB&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;throw&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Error&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;❌ D1 binding "DB" not found. 
Are you running via `npm run dev` with nitro-cloudflare-dev
or `wrangler pages dev`?&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="c1"&gt;// 3. Return Drizzle instance initialized with D1 binding&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;drizzle&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;d1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;schema&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//nuxt.config.ts&lt;/span&gt;
&lt;span class="nx"&gt;nitro&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nl"&gt;preset&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;cloudflare-pages&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="nx"&gt;experimental&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;asyncContext&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="nx"&gt;cloudflare&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nl"&gt;deployConfig&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nx"&gt;nodeCompat&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&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;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="err"&gt;/**&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;wrangler.jsonc&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;For&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;more&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;details&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;on&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;how&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;configure&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Wrangler,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;refer&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;to:&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://developers.cloudflare.com/workers/wrangler/configuration/&lt;/span&gt;&lt;span class="w"&gt;
 &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"$schema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"node_modules/wrangler/config-schema.json"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"nuxt-charts-site"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"compatibility_date"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2025-11-27"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"pages_build_output_dir"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"./dist"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"observability"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;/**&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;R&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Buckets&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://developers.cloudflare.com/r&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="err"&gt;/api/workers/workers-api-reference/&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"r2_buckets"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"binding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"BLOB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"bucket_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-r2-bucket-name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="err"&gt;/**&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;D&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Databases&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;https://developers.cloudflare.com/d&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="err"&gt;/&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="err"&gt;*/&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"d1_databases"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"binding"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"DB"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"database_name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"your-database-name"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"database_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"xx"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;//&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;find&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;it&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;in&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;CF&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;Dashboard&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;/workers/d&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;and&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;copy&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;binding&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;from&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;dropdown&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;options&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;for&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;your&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="err"&gt;database&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Finally, run: &lt;code&gt;npm run build &amp;amp;&amp;amp; wrangler pages deploy&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;This will ask some questions that will help you deploy your application. &lt;/p&gt;

&lt;p&gt;You can find all deployments in the CF Workers &amp;amp; Pages dashboard.&lt;/p&gt;

&lt;p&gt;Again, I'm still testing, but I'm optimistic this is the way to go.&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>serverless</category>
      <category>database</category>
      <category>devops</category>
    </item>
    <item>
      <title>Why I'm Building Nuxt Charts</title>
      <dc:creator>Dennis Adriaansen</dc:creator>
      <pubDate>Fri, 18 Apr 2025 13:49:58 +0000</pubDate>
      <link>https://dev.to/dennisadriaans/why-im-building-nuxt-charts-4dlj</link>
      <guid>https://dev.to/dennisadriaans/why-im-building-nuxt-charts-4dlj</guid>
      <description>&lt;p&gt;If you've spent time in both the React and Vue ecosystems, especially when building data-intensive applications, you might have noticed that the React world seems spoiled for choice when it comes to sleek, modern, and easy-to-integrate charting libraries. &lt;/p&gt;

&lt;p&gt;As a developer primarily working with &lt;strong&gt;Vue&lt;/strong&gt; and &lt;strong&gt;Nuxt&lt;/strong&gt;, I feel this gap is much larger than it should be. We need more sleek chart designs and other ways to visualize data effectively. Think of &lt;a href="https://tremor.so/" rel="noopener noreferrer"&gt;Tremor Labs&lt;/a&gt;; we all want to use it, but we can't.&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%2Ft7l845xa8mn41d1m3ioi.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%2Ft7l845xa8mn41d1m3ioi.png" alt=" " width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To create more options that combine great aesthetics with a smooth developer experience, I've created &lt;a href="https://nuxtcharts.com/" rel="noopener noreferrer"&gt;Nuxt Charts&lt;/a&gt;, a wrapper around vue-chrts—as a way to create beautiful charts in seconds.&lt;/p&gt;

&lt;h2&gt;
  
  
  &lt;strong&gt;Nuxt Charts:&lt;/strong&gt;
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;📊 Multiple types: Line, Bar, Area, Donut&lt;/li&gt;
&lt;li&gt;🎨 Easily customizable&lt;/li&gt;
&lt;li&gt;💡 Simple, intuitive API&lt;/li&gt;
&lt;li&gt;💚 Built for the Vue ecosystem&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On top of Unovis, optimized for Nuxt UI.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://nuxtcharts.com/" rel="noopener noreferrer"&gt;Check the docs and examples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It began with another project I was creating: Nuxt Error, an error logging dashboard specifically for Nuxt applications. As I designed the interface for Nuxt Error, the need for clear, informative, and visually appealing charts. &lt;/p&gt;

&lt;p&gt;It became clear that I couldn't find any solutions other than React alternatives, which looked beautiful. But again, I'm &lt;strong&gt;100% locked&lt;/strong&gt; into the Vue/Nuxt ecosystem, so I had to figure something out.&lt;/p&gt;

&lt;p&gt;Looking at the available options, and drawing inspiration from the richer selection often seen in React projects, I realized there was an opportunity. Why not build a charting package myself?&lt;/p&gt;

&lt;h2&gt;
  
  
  The focus of Nuxt Charts
&lt;/h2&gt;

&lt;p&gt;Nuxt Charts is envisioned as a Nuxt package dedicated to helping developers build beautiful charts and dashboards with minimal friction, with the following core beliefs:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Aesthetics&lt;/strong&gt;: 
Provide modern, visually appealing chart components out-of-the-box.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Developer Experience&lt;/strong&gt;: Ensure seamless integration with Nuxt leveraging its features for an intuitive setup and usage.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Customization&lt;/strong&gt;: Offer sensible defaults but allow for easy customization to match diverse application designs.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Focus&lt;/strong&gt;: Concentrate specifically on being the best charting solution for the Nuxt ecosystem, rather than trying to be a generic, framework-agnostic library.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://nuxtcharts.com/" rel="noopener noreferrer"&gt;Check the docs and examples&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;What validated this idea and gave the project great momentum was the reaction from the community. After the initial announcement, I was pretty surprised and excited to receive such support and encouragement from major figures within the Vue and Nuxt ecosystems.&lt;/p&gt;

&lt;p&gt;Having people like Sébastien Chopin (creator of Nuxt), Evan You (creator of Vue), and many other fantastic developers express their enthusiasm and support is great motivation.&lt;/p&gt;

&lt;p&gt;Nuxt Charts is currently under active development. The focus is on building a solid foundation, selecting the right underlying charting technology (or developing it), and ensuring the API feels natural, cosistent and powerful for Nuxt developers.&lt;/p&gt;

&lt;h2&gt;
  
  
  How to get started?
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Install the module&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;pnpm add nuxt-charts&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Add module to config&lt;/strong&gt;&lt;br&gt;
&lt;code&gt;export default defineNuxtConfig({&lt;br&gt;
   modules: ["nuxt-charts"]&lt;br&gt;
});&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note If you're using pnpm, ensure that you set shamefully-hoist=true in your .npmrc file.&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://nuxtcharts.com/" rel="noopener noreferrer"&gt;Check the docs and examples&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Nuxt Templates
&lt;/h2&gt;

&lt;p&gt;I created a &lt;a href="https://nuxtcharts.com/templates/nuxt-dashboard" rel="noopener noreferrer"&gt;Nuxt Dashboard template&lt;/a&gt; using these charts, which gives you direct access to pre-built admin pages featuring many chart variants. These Nuxt templates will decrease time-to-production for any developer and provide instant access to clean UI components.&lt;/p&gt;

&lt;h2&gt;
  
  
  Get Involved
&lt;/h2&gt;

&lt;p&gt;This project aims to fill a perceived gap, driven by a personal need encountered while building other tools and validated by the broader community. If you're a Nuxt developer who has wished for better, easier, or more beautiful charting options, I hope Nuxt Charts will eventually be the solution you're looking for.&lt;/p&gt;

&lt;p&gt;Keep an eye out for updates! As development progresses, there will be opportunities for feedback, contributions, and early testing. The enthusiasm from the community has been fantastic, and I'm excited to build this together.&lt;/p&gt;

</description>
      <category>nuxt</category>
      <category>vue</category>
      <category>data</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
