<?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: Carlos Eduardo Git</title>
    <description>The latest articles on DEV Community by Carlos Eduardo Git (@carlosdev11).</description>
    <link>https://dev.to/carlosdev11</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%2F2877856%2Fc3a4921d-c403-4fed-a302-0f0da34b9887.png</url>
      <title>DEV Community: Carlos Eduardo Git</title>
      <link>https://dev.to/carlosdev11</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/carlosdev11"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Carlos Eduardo Git</dc:creator>
      <pubDate>Fri, 29 May 2026 12:56:49 +0000</pubDate>
      <link>https://dev.to/carlosdev11/-4mf9</link>
      <guid>https://dev.to/carlosdev11/-4mf9</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm" class="crayons-story__hidden-navigation-link"&gt;Turning 2,000 Lint Errors into Zero: A Complete DSL Refactor Story&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
      &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm" class="crayons-article__context-note crayons-article__context-note__feed"&gt;&lt;p&gt;GitHub “Finish-Up-A-Thon” Challenge Submission&lt;/p&gt;

&lt;/a&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/carlosdev11" class="crayons-avatar  crayons-avatar--l  "&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%2Fuser%2Fprofile_image%2F2877856%2Fc3a4921d-c403-4fed-a302-0f0da34b9887.png" alt="carlosdev11 profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/carlosdev11" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Carlos Eduardo Git
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Carlos Eduardo Git
                
              
              &lt;div id="story-author-preview-content-3778391" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/carlosdev11" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&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%2Fuser%2Fprofile_image%2F2877856%2Fc3a4921d-c403-4fed-a302-0f0da34b9887.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Carlos Eduardo Git&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;May 29&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm" id="article-link-3778391"&gt;
          Turning 2,000 Lint Errors into Zero: A Complete DSL Refactor Story
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/devchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;devchallenge&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/githubchallenge"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;githubchallenge&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/raised-hands-74b2099fd66a39f2d7eed9305ee0f4553df0eb7b4f11b01b6b1b499973048fe5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;4&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              &lt;span class="hidden s:inline"&gt;Add&amp;nbsp;Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            4 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
    </item>
    <item>
      <title>Turning 2,000 Lint Errors into Zero: A Complete DSL Refactor Story</title>
      <dc:creator>Carlos Eduardo Git</dc:creator>
      <pubDate>Fri, 29 May 2026 12:44:15 +0000</pubDate>
      <link>https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm</link>
      <guid>https://dev.to/carlosdev11/turning-2000-lint-errors-into-zero-a-complete-dsl-refactor-story-29pm</guid>
      <description>&lt;p&gt;&lt;em&gt;This is a submission for the &lt;a href="https://dev.to/challenges/github-2026-05-21"&gt;GitHub Finish-Up-A-Thon Challenge&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;How 21 commits, 230 files, and 40k lines transformed a forgotten DSL into production-ready software - with GitHub Copilot as my pair programmer.&lt;/p&gt;




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

&lt;p&gt;&lt;strong&gt;JSSON&lt;/strong&gt; is a human-friendly configuration language that transpiles to JSON, YAML, TOML, and TypeScript. Think of it as HJSON on steroids — featuring variables, templates, ranges, maps, conditionals, reusable presets, built-in validators ([@]uuid, [@]email, [@]datetime - ignore the brackets), and full schema support.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// A JSSON source file&lt;/span&gt;
&lt;span class="p"&gt;@&lt;/span&gt;&lt;span class="nd"&gt;preset&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;server-defaults&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;port&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;8080&lt;/span&gt;
  &lt;span class="nx"&gt;host&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;localhost&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="nx"&gt;timeout&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;30&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;users&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
  &lt;span class="nx"&gt;template&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="nx"&gt;role&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="nf"&gt;map &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;
    &lt;span class="nx"&gt;role&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;role&lt;/span&gt;
    &lt;span class="nx"&gt;active&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
  &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;admin&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
  &lt;span class="mi"&gt;101&lt;/span&gt;&lt;span class="p"&gt;..&lt;/span&gt;&lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A single file like the one above can generate 1,000 user objects across four different formats instantly.&lt;/p&gt;

&lt;p&gt;The project was my own creation, but I had completely abandoned it for 5 months. It was stuck in that "it works, but don't look at the source" phase: monolithic 800-line files, &lt;code&gt;interface{}&lt;/code&gt; everywhere, zero integration tests, no linters, and manual build scripts.&lt;/p&gt;

&lt;p&gt;So I did what any sane developer would do: I rolled up my sleeves, called &lt;strong&gt;GitHub Copilot&lt;/strong&gt; to my side, and spent two intense days refactoring everything.&lt;/p&gt;




&lt;h2&gt;
  
  
  Demo
&lt;/h2&gt;

&lt;p&gt;Here is JSSON in action. You can run these commands yourself using the examples provided in the repository.&lt;/p&gt;

&lt;h3&gt;
  
  
  Transpiling to JSON
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Build the binary&lt;/span&gt;
make build

&lt;span class="c"&gt;# Transpile a basic example&lt;/span&gt;
./bin/jsson &lt;span class="nt"&gt;-i&lt;/span&gt; examples/basics/01-hello-world.jsson
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Flmilcal2333llq9ybwzl.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%2Flmilcal2333llq9ybwzl.png" alt=" " width="782" height="565"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Multiple Output Formats
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# YAML, TOML, and TypeScript support&lt;/span&gt;
./bin/jsson &lt;span class="nt"&gt;-i&lt;/span&gt; examples/basics/03-objects.jsson &lt;span class="nt"&gt;-f&lt;/span&gt; yaml
./bin/jsson &lt;span class="nt"&gt;-i&lt;/span&gt; examples/basics/03-objects.jsson &lt;span class="nt"&gt;-f&lt;/span&gt; toml
./bin/jsson &lt;span class="nt"&gt;-i&lt;/span&gt; examples/basics/03-objects.jsson &lt;span class="nt"&gt;-f&lt;/span&gt; typescript
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fhxp67r97y7w97nw15icx.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%2Fhxp67r97y7w97nw15icx.png" alt=" " width="656" height="643"&gt;&lt;/a&gt;&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%2Fkdb9nuf0i7eswizhxbjc.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%2Fkdb9nuf0i7eswizhxbjc.png" alt=" " width="635" height="720"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Advanced Features: Ranges &amp;amp; Formatting
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Expand ranges&lt;/span&gt;
./bin/jsson &lt;span class="nt"&gt;-i&lt;/span&gt; examples/basics/05-ranges.jsson

&lt;span class="c"&gt;# Format your JSSON files (The new 'jsson fmt' command!)&lt;/span&gt;
./bin/jsson &lt;span class="nb"&gt;fmt &lt;/span&gt;examples/real-world/apiconfig.jsson
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&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%2Fcx3rcf5h9hgwybwk3h16.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%2Fcx3rcf5h9hgwybwk3h16.png" alt=" " width="729" height="811"&gt;&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The Comeback Story: From Chaos to Clarity
&lt;/h2&gt;

&lt;p&gt;When I picked up the project again, it was a mess of monolithic files:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;File&lt;/th&gt;
&lt;th&gt;Lines&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;parser.go&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;837&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;evaluator.go&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;355&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;main.go&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;631&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;validate.go&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;384&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;lexer.go&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;392&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The entire AST was built on &lt;code&gt;interface{}&lt;/code&gt;, meaning the compiler couldn't help me. If a node was the wrong type, I'd only find out through a runtime panic.&lt;/p&gt;

&lt;h3&gt;
  
  
  The Refactoring Journey
&lt;/h3&gt;

&lt;h4&gt;
  
  
  1. The Great Linting War (2,062 Issues!)
&lt;/h4&gt;

&lt;p&gt;This was where GitHub Copilot truly shone. The project had zero linters. When I finally configured &lt;code&gt;golangci-lint&lt;/code&gt;, it flagged &lt;strong&gt;2,062 issues&lt;/strong&gt;. &lt;br&gt;
With Copilot's help, we used &lt;code&gt;golangci-lint run --fix&lt;/code&gt; intelligently to resolve 1,527 issues automatically (wsl, nlreturn, wrapcheck, etc.). I then manually fixed the remaining 535 issues with Copilot suggesting the corrections. &lt;strong&gt;Today, the project has 0 lint issues.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  2. Typed AST - Goodbye &lt;code&gt;interface{}&lt;/code&gt;
&lt;/h4&gt;

&lt;p&gt;I replaced the fragile &lt;code&gt;if-else&lt;/code&gt; type assertion chains with a proper &lt;code&gt;Node&lt;/code&gt; interface and type switches. This eliminated 100% of runtime type assertions in the hot path. Even the LSP (Language Server) became stable and warning-free.&lt;/p&gt;

&lt;h4&gt;
  
  
  3. Surgical Slicing
&lt;/h4&gt;

&lt;p&gt;I broke down those massive files into cohesive modules. The 837-line parser became 4 focused files. The evaluator became 5 specialized modules. &lt;strong&gt;Now, no core file exceeds 200 lines.&lt;/strong&gt;&lt;/p&gt;

&lt;h4&gt;
  
  
  4. E2E Testing with Golden Files
&lt;/h4&gt;

&lt;p&gt;I implemented 136 "golden files" as a safety net. Every time I refactored a core component, I could run &lt;code&gt;go test -tags=e2e -update&lt;/code&gt; to verify that the output remained identical. This gave me the confidence to perform aggressive architectural changes without fear.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Numbers (Before vs. After)
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Metric&lt;/th&gt;
&lt;th&gt;Before&lt;/th&gt;
&lt;th&gt;After&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Test Suites&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Unit only&lt;/td&gt;
&lt;td&gt;Unit + 136 E2E Goldens + Stdin/Fmt tests&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Release Pipeline&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Manual scripts&lt;/td&gt;
&lt;td&gt;Makefile + GoReleaser (Automated)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Action Pinning&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Moving tags (&lt;code&gt;@v4&lt;/code&gt;)&lt;/td&gt;
&lt;td&gt;Commit SHAs (Secure)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AST Typing&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;interface{}&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Concrete &lt;code&gt;Node&lt;/code&gt; types&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Max File Size&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;837 lines&lt;/td&gt;
&lt;td&gt;&amp;lt; 200 lines&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Formatter&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;None&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;jsson fmt&lt;/code&gt; with &lt;code&gt;-w&lt;/code&gt; and &lt;code&gt;-check&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;21 commits, 230 files modified, ~40k lines of changes, and zero regressions.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  My Experience with GitHub Copilot
&lt;/h2&gt;

&lt;p&gt;Using AI for this level of refactoring changed my perspective on "Pair Programming." I expected hallucinations given the complexity of a custom DSL, but &lt;strong&gt;GitHub Copilot&lt;/strong&gt; proved to be a reliable partner.&lt;/p&gt;

&lt;p&gt;It didn't "know" my architecture, but it understood my intent. I would provide the context — a file diff or a goal like "refactor this using a type switch" - and it would handle the mechanical parts: splitting files, updating imports, and renaming symbols across the workspace.&lt;/p&gt;

&lt;p&gt;What would have taken weeks manually took only two days. This allowed me to focus on high-level design decisions while Copilot handled the "grunt work" of moving code around.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The result is a project I am finally proud to share.&lt;/strong&gt; JSSON v0.1 is now stable, maintainable, and ready for the community.&lt;/p&gt;




&lt;ul&gt;
&lt;li&gt;  &lt;strong&gt;Repository:&lt;/strong&gt; &lt;a href="https://github.com/jsson-lang/jsson" rel="noopener noreferrer"&gt;github.com/jsson-lang/jsson&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;  &lt;strong&gt;The Big Refactor PR:&lt;/strong&gt; &lt;a href="https://github.com/jsson-lang/jsson/pull/4" rel="noopener noreferrer"&gt;PR #4&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>devchallenge</category>
      <category>githubchallenge</category>
    </item>
    <item>
      <title>JSSON (JavaScript Simplied Object Notation)</title>
      <dc:creator>Carlos Eduardo Git</dc:creator>
      <pubDate>Mon, 24 Nov 2025 23:38:53 +0000</pubDate>
      <link>https://dev.to/carlosdev11/jsson-javascript-simplied-object-notation-2lo6</link>
      <guid>https://dev.to/carlosdev11/jsson-javascript-simplied-object-notation-2lo6</guid>
      <description>&lt;h1&gt;
  
  
  Today I'm officially launching &lt;strong&gt;JSSON&lt;/strong&gt; (pronounced &lt;em&gt;“djéisson”&lt;/em&gt;, write that down)
&lt;/h1&gt;

&lt;p&gt;First things first: &lt;strong&gt;this is NOT trying to replace JSON&lt;/strong&gt;.&lt;br&gt;
The goal is simple: &lt;strong&gt;save you from the pain of writing JSON by hand&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;I know, I know… I can already hear someone sighing:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Oh boy, here comes another TOON-like format…”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relax. I promise this is not the kind of format that makes you regret becoming a developer.&lt;/p&gt;


&lt;h2&gt;
  
  
  🤔 Why does JSSON exist?
&lt;/h2&gt;

&lt;p&gt;Think about all those times you had to manually craft:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;giant mocks&lt;/li&gt;
&lt;li&gt;database seeds&lt;/li&gt;
&lt;li&gt;repetitive structures&lt;/li&gt;
&lt;li&gt;endless configs&lt;/li&gt;
&lt;li&gt;massive arrays&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;…and then spent 30 minutes fighting &lt;strong&gt;commas&lt;/strong&gt;, &lt;strong&gt;quotes&lt;/strong&gt;, &lt;strong&gt;brackets&lt;/strong&gt;, &lt;strong&gt;indentation&lt;/strong&gt;, and a mild headache.&lt;/p&gt;

&lt;p&gt;Yeah.&lt;br&gt;
JSSON exists to end that suffering.&lt;/p&gt;


&lt;h1&gt;
  
  
  The most basic example
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user {
  name = João
  age = 20
  admin = true
  roles = [ "admin", "editor" ]
  config {
    theme = dark
  }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;No quotes on simple values.&lt;br&gt;
No commas.&lt;br&gt;
No drama.&lt;/p&gt;


&lt;h1&gt;
  
  
  Simple template (yes, it &lt;em&gt;looks&lt;/em&gt; like CSV… calm down)
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age, job, height }
  João, 19, Student, 1.75
  Maria, 25, Teacher, 1.65
  Pedro, 30, Doctor, 1.80
  Ana, 22, Nurse, 1.68
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Yep, it resembles CSV.&lt;br&gt;
And no, this alone won’t generate huge structures.&lt;/p&gt;

&lt;p&gt;But breathe, and keep reading:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Templates + logic.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is where JSSON starts changing your mind.&lt;/p&gt;


&lt;h1&gt;
  
  
  Okay, now: &lt;strong&gt;logic baked into the format&lt;/strong&gt;
&lt;/h1&gt;

&lt;p&gt;This example transforms every item automatically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;routes [
  template { path, method }

  map (item) = {
    path = "/api/" + item.path
    method = item.method
  }

  users, GET
  posts, POST
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"routes"&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;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/users"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"GET"&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;"path"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"/api/posts"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"POST"&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;h1&gt;
  
  
  Generating huge structures with ranges
&lt;/h1&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;servers [
  template { id, port }

  map (s) = {
    id = s.id
    ip = "192.168.1." + s.id
    port = s.port
  }

  100..120,
  3000..3020
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Yes, this generates &lt;strong&gt;21 servers&lt;/strong&gt; with matching IPs and ports.&lt;br&gt;
Yes, without writing anything manually.&lt;br&gt;
Yes, cue the victory theme.&lt;/p&gt;


&lt;h1&gt;
  
  
  Giving your data “intelligence”
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age, department, yearsOfService }

  map (u) = {
    name = u.name
    age = u.age
    department = u.department
    yearsOfService = u.yearsOfService

    canVote = u.age &amp;gt;= 18
    isExecutive = u.yearsOfService &amp;gt;= 10
    accessLevel = u.yearsOfService &amp;gt;= 10 ? "senior"
                : u.yearsOfService &amp;gt;= 5  ? "mid"
                : "junior"
    salary = u.yearsOfService &amp;gt;= 10 ? 150000
            : u.yearsOfService &amp;gt;= 5 ? 100000
            : 60000
    benefits = u.yearsOfService &amp;gt;= 5 ? ["health", "dental", "401k"] : ["health"]
  }

  "João Silva", 35, Engineering, 12
  "Maria Santos", 28, Sales, 6
  "Pedro Costa", 22, Marketing, 2
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;You write a few lines and follow a pattern.&lt;br&gt;
JSSON builds an entire smart object structure for you.&lt;/p&gt;


&lt;h1&gt;
  
  
  Generating dozens of users in minutes
&lt;/h1&gt;


&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { id, department }

  map (u) = {
    id = u.id
    username = "user_" + u.id
    email = "user_" + u.id + "@company.com"
    dept = u.department
    role = "employee"
  }

  // Engineering
  100..104, Engineering

  // Sales
  200..204, Sales
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;Done. Automatically generated users, all neatly standardized.&lt;/p&gt;


&lt;h1&gt;
  
  
  Generating entire teams (logic + ranges)
&lt;/h1&gt;

&lt;p&gt;The classic example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;employees [
  template { id, dept, level }

  map (e) = {
    id = e.id
    name = "Employee " + e.id
    email = "emp" + e.id + "@corp.com"
    department = e.dept
    level = e.level
    salary = e.level == "senior" ? 120000 
           : e.level == "mid"    ? 80000 
           : 50000
  }

  // Engineering
  1000..1004, Engineering, junior
  1005..1009, Engineering, mid
  1010..1012, Engineering, senior

  // Sales
  2000..2009, Sales, junior
  2010..2014, Sales, mid

  // HR
  3000..3002, HR, mid
  3003..3004, HR, senior
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is extremely useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;seeds&lt;/li&gt;
&lt;li&gt;unit tests&lt;/li&gt;
&lt;li&gt;prototyping&lt;/li&gt;
&lt;li&gt;fake APIs&lt;/li&gt;
&lt;li&gt;demos&lt;/li&gt;
&lt;li&gt;internal scripts&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  &lt;strong&gt;Now THIS:&lt;/strong&gt; Modularization with &lt;code&gt;include&lt;/code&gt;
&lt;/h1&gt;

&lt;p&gt;Yep — JSSON can include other &lt;code&gt;.jsson&lt;/code&gt; files and merge them.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;include "database.jsson"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;resolves path&lt;/li&gt;
&lt;li&gt;detects cycles (A includes B, B includes A → error)&lt;/li&gt;
&lt;li&gt;caching&lt;/li&gt;
&lt;li&gt;transpiles the included file&lt;/li&gt;
&lt;li&gt;merges into the root (with &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;overwrite&lt;/code&gt;, or &lt;code&gt;error&lt;/code&gt; mode)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;database.jsson&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;db { host = localhost }
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;main.jsson&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;app = "MyApp"
include "database.jsson"
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;JSON output:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"app"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"MyApp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"db"&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;"host"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"localhost"&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;Simple. Direct. Done.&lt;/p&gt;




&lt;h1&gt;
  
  
  Full JSSON feature list 😏
&lt;/h1&gt;

&lt;h2&gt;
  
  
  Basic Syntax
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;No quotes for simple values&lt;/li&gt;
&lt;li&gt;No commas&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;//&lt;/code&gt; comments&lt;/li&gt;
&lt;li&gt;Strings, numbers, booleans, arrays, objects&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Template Arrays
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;users [
  template { name, age }
  João, 25
  Maria, 30
]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Map (transformation)
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;map (user) = {
  name = user.name
  active = true
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Powerful Ranges
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;1..10&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;10..1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;0..10 step 2&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;"192.168.1.100".."192.168.1.150"&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Expressions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;+ - * / %&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Comparisons&lt;/li&gt;
&lt;li&gt;Ternary&lt;/li&gt;
&lt;li&gt;Concatenation&lt;/li&gt;
&lt;li&gt;Member access&lt;/li&gt;
&lt;li&gt;Precedence with &lt;code&gt;()&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Modularization via Include
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Merge modes: &lt;code&gt;keep&lt;/code&gt;, &lt;code&gt;overwrite&lt;/code&gt;, &lt;code&gt;error&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Cycle detection&lt;/li&gt;
&lt;li&gt;Include caching&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Extras
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Zero-padding ranges (&lt;code&gt;emp001..emp010&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Mixed-type arrays&lt;/li&gt;
&lt;li&gt;Unlimited nested objects&lt;/li&gt;
&lt;li&gt;Variables inside &lt;code&gt;map&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  CLI
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;-i&lt;/code&gt; input&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;-o&lt;/code&gt; output&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--merge-mode&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;h1&gt;
  
  
  Quick comparison
&lt;/h1&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Logic Support&lt;/th&gt;
&lt;th&gt;Ranges&lt;/th&gt;
&lt;th&gt;Templates&lt;/th&gt;
&lt;th&gt;Modularization&lt;/th&gt;
&lt;th&gt;Purpose&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JSON&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Data&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;YAML&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Config&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CSV&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;✔️ (partial)&lt;/td&gt;
&lt;td&gt;❌&lt;/td&gt;
&lt;td&gt;Tables&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;JSSON&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;✔️&lt;/td&gt;
&lt;td&gt;Data generation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;




&lt;h1&gt;
  
  
  Want to try it? Documentation &amp;amp; tools
&lt;/h1&gt;

&lt;p&gt;Documentation (still polishing sitemap, indexing soon):&lt;br&gt;
👉 &lt;strong&gt;&lt;a href="https://jsson-docs.vercel.app" rel="noopener noreferrer"&gt;https://jsson-docs.vercel.app&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m working on the online playground this week, but for now you can try the current CLI build (tested on Windows):&lt;/p&gt;

&lt;h2&gt;
  
  
  How to use it right now (super quick)
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Download the CLI (tested on Windows, use version 0.0.2):
&lt;a href="https://github.com/CarlosEduJs/jsson/releases" rel="noopener noreferrer"&gt;https://github.com/CarlosEduJs/jsson/releases&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Run in terminal:
&lt;code&gt;jsson -i input.jsson -o output.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Done: instant JSON.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Full docs:&lt;br&gt;
👉 &lt;a href="https://jsson-docs.vercel.app" rel="noopener noreferrer"&gt;https://jsson-docs.vercel.app&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VS Code Syntax Highlighting extension:&lt;br&gt;
👉 &lt;a href="https://marketplace.visualstudio.com/items?itemName=carlosedujs.jsson" rel="noopener noreferrer"&gt;https://marketplace.visualstudio.com/items?itemName=carlosedujs.jsson&lt;/a&gt;&lt;/p&gt;




&lt;h1&gt;
  
  
  That’s it — you now know everything about JSSON.
&lt;/h1&gt;

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

</description>
      <category>json</category>
      <category>opensource</category>
    </item>
  </channel>
</rss>
