<?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: Zonayed Ahmed</title>
    <description>The latest articles on DEV Community by Zonayed Ahmed (@zonayedpca).</description>
    <link>https://dev.to/zonayedpca</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%2F181381%2F291311e6-0aa2-4769-870a-ee7682181e89.jpeg</url>
      <title>DEV Community: Zonayed Ahmed</title>
      <link>https://dev.to/zonayedpca</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zonayedpca"/>
    <language>en</language>
    <item>
      <title>Build APIs from Any Data, Without Running a Backend Every Time</title>
      <dc:creator>Zonayed Ahmed</dc:creator>
      <pubDate>Thu, 21 May 2026 13:31:39 +0000</pubDate>
      <link>https://dev.to/zonayedpca/build-apis-from-any-data-without-running-a-backend-every-time-3eam</link>
      <guid>https://dev.to/zonayedpca/build-apis-from-any-data-without-running-a-backend-every-time-3eam</guid>
      <description>&lt;p&gt;A lot of app data is already somewhere.&lt;/p&gt;

&lt;p&gt;Maybe it is in another API.&lt;br&gt;&lt;br&gt;
Maybe it is in a CMS.&lt;br&gt;&lt;br&gt;
Maybe it is in a spreadsheet.&lt;br&gt;&lt;br&gt;
Maybe it is in GitHub.&lt;br&gt;&lt;br&gt;
Maybe it is in your docs, product data, changelog, config files, or some internal service.&lt;/p&gt;

&lt;p&gt;But your app still needs one clean API endpoint.&lt;/p&gt;

&lt;p&gt;So what do we usually do?&lt;/p&gt;

&lt;p&gt;We build a backend.&lt;/p&gt;

&lt;p&gt;The backend fetches data from one or more sources, reshapes the response, removes the fields we do not need, maybe combines it with another source, and finally returns a clean API response to the frontend.&lt;/p&gt;

&lt;p&gt;That makes sense when the data is always changing.&lt;/p&gt;

&lt;p&gt;But many times, it is not.&lt;/p&gt;

&lt;p&gt;Sometimes the source API is slow.&lt;br&gt;&lt;br&gt;
Sometimes it has rate limits.&lt;br&gt;&lt;br&gt;
Sometimes the response time is unpredictable.&lt;br&gt;&lt;br&gt;
Sometimes the same data is requested again and again.&lt;br&gt;&lt;br&gt;
Sometimes the data only changes when a webhook fires, a file changes, a release happens, or someone updates content.&lt;/p&gt;

&lt;p&gt;And still, every request goes through runtime logic.&lt;/p&gt;

&lt;p&gt;That is the part that kept bothering me.&lt;/p&gt;

&lt;p&gt;Because in many cases, the API output could be prepared ahead of time.&lt;/p&gt;

&lt;p&gt;The source data may be messy.&lt;br&gt;&lt;br&gt;
The final response can still be clean.&lt;/p&gt;

&lt;p&gt;The source API may be slow.&lt;br&gt;&lt;br&gt;
The final API does not have to be.&lt;/p&gt;

&lt;p&gt;The source may have rate limits.&lt;br&gt;&lt;br&gt;
Your users should not hit that source every time.&lt;/p&gt;

&lt;p&gt;That is the idea behind &lt;strong&gt;StatikAPI OSS CLI&lt;/strong&gt;.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/zonayedpca/statikapi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  The simple idea
&lt;/h2&gt;

&lt;p&gt;StatikAPI is an open-source CLI for generating clean API outputs ahead of time.&lt;/p&gt;

&lt;p&gt;The simple way to explain it:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Build APIs from your data — without running a backend on every request.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or the shorter developer version:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Static export, but for APIs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The bigger idea is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Data sources → shape the response → publish a clean API output
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your data can come from files, route modules, third-party APIs, services, CMSs, docs, product data, or anything you can fetch or prepare during the build.&lt;/p&gt;

&lt;p&gt;Then StatikAPI lets you generate the final API output ahead of time.&lt;/p&gt;

&lt;p&gt;So instead of every user request doing this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;request → backend → fetch external API → reshape response → return data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can move that work earlier:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;source data changes → rebuild output → serve clean API response
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the difference.&lt;/p&gt;

&lt;h2&gt;
  
  
  What problem this solves
&lt;/h2&gt;

&lt;p&gt;Let’s say your app needs product data.&lt;/p&gt;

&lt;p&gt;The data might come from a third-party API.&lt;/p&gt;

&lt;p&gt;That API might be slow sometimes.&lt;/p&gt;

&lt;p&gt;It might also return a huge response when you only need five fields.&lt;/p&gt;

&lt;p&gt;It might have rate limits.&lt;/p&gt;

&lt;p&gt;It might occasionally respond slower from one region and faster from another.&lt;/p&gt;

&lt;p&gt;But your frontend does not care about all that.&lt;/p&gt;

&lt;p&gt;Your frontend just needs:&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;"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;"basic-plan"&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;"Basic Plan"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"price"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"features"&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="s2"&gt;"Public API"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Scheduled updates"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Fast delivery"&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;If that data changes only when your product/pricing data changes, then why should every user request hit the original source again?&lt;/p&gt;

&lt;p&gt;Maybe the better workflow is:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;fetch the source data during build&lt;/li&gt;
&lt;li&gt;shape it into the response your app actually needs&lt;/li&gt;
&lt;li&gt;generate a clean API output&lt;/li&gt;
&lt;li&gt;serve that prepared response fast&lt;/li&gt;
&lt;li&gt;rebuild it when the source changes&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is the kind of workflow StatikAPI is exploring.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the OSS CLI works
&lt;/h2&gt;

&lt;p&gt;The current open-source version starts with a simple workflow:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src-api/ → build → api-out/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You define API-like route files inside &lt;code&gt;src-api/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those route files can return prepared data, fetch from sources during build, or shape data into the API response you want.&lt;/p&gt;

&lt;p&gt;Then StatikAPI builds the output into &lt;code&gt;api-out/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;So instead of running backend code every time someone requests the endpoint, you generate the response first and serve the prepared output.&lt;/p&gt;

&lt;p&gt;The question becomes:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can this API response be prepared before the request happens?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If yes, StatikAPI may fit.&lt;/p&gt;

&lt;h2&gt;
  
  
  A small example
&lt;/h2&gt;

&lt;p&gt;Imagine your app needs a changelog API.&lt;/p&gt;

&lt;p&gt;Maybe the changelog data comes from a file, a release note, GitHub, a CMS, or another API.&lt;/p&gt;

&lt;p&gt;The final response might look like this:&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;"latest"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"v1.0.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"title"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Initial release"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"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;"2026-05-20"&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;Does this need to be computed again and again on every request?&lt;/p&gt;

&lt;p&gt;Maybe not.&lt;/p&gt;

&lt;p&gt;Maybe it only needs to be rebuilt when the changelog changes.&lt;/p&gt;

&lt;p&gt;That is the kind of API StatikAPI is built for.&lt;/p&gt;

&lt;h2&gt;
  
  
  Updating when needed
&lt;/h2&gt;

&lt;p&gt;Static does not mean stale forever.&lt;/p&gt;

&lt;p&gt;This is important.&lt;/p&gt;

&lt;p&gt;The idea is not:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;generate once → forget forever
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The idea is:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data changes → rebuild output → publish updated API
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The update can happen manually.&lt;/p&gt;

&lt;p&gt;It can happen during a build.&lt;/p&gt;

&lt;p&gt;It can happen through webhook-based workflows depending on how you deploy it.&lt;/p&gt;

&lt;p&gt;So the API does not need to be live-computed on every request, but it can still be updated predictably when the data changes.&lt;/p&gt;

&lt;p&gt;That is the balance I wanted:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;fast reads
clean API output
predictable updates
less unnecessary runtime work
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Standalone or Cloudflare
&lt;/h2&gt;

&lt;p&gt;StatikAPI OSS CLI can work standalone.&lt;/p&gt;

&lt;p&gt;You can generate the API outputs and decide where to serve them from.&lt;/p&gt;

&lt;p&gt;There is also optional &lt;strong&gt;Cloudflare support&lt;/strong&gt; for people who want to deploy generated API outputs closer to the edge.&lt;/p&gt;

&lt;p&gt;The Cloudflare adapter path is useful if you want a setup where:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;generated API outputs can be deployed to Cloudflare&lt;/li&gt;
&lt;li&gt;public outputs can be served fast&lt;/li&gt;
&lt;li&gt;updates can be triggered through webhook-based workflows&lt;/li&gt;
&lt;li&gt;the project can still keep the “generate first, serve later” model&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Cloudflare is not required.&lt;/p&gt;

&lt;p&gt;It is an option.&lt;/p&gt;

&lt;p&gt;The main idea stays the same:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Generate the API output first, then serve it from the place that makes sense for your project.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  What kind of APIs fit this?
&lt;/h2&gt;

&lt;p&gt;StatikAPI is useful when the data is mostly read-heavy and predictable.&lt;/p&gt;

&lt;p&gt;Examples:&lt;/p&gt;

&lt;h3&gt;
  
  
  Third-party API data
&lt;/h3&gt;

&lt;p&gt;If you depend on a slow or rate-limited API, but the data does not need to be fresh on every request, you can fetch and reshape it ahead of time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/products
/pricing
/external-data
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Docs navigation
&lt;/h3&gt;

&lt;p&gt;A docs sidebar or navigation tree usually changes when docs change, not on every request.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/docs/nav
/docs/sidebar
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Changelog feed
&lt;/h3&gt;

&lt;p&gt;Release notes change when you publish a release.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/changelog
/releases/latest
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Product catalog
&lt;/h3&gt;

&lt;p&gt;Product data often changes on a schedule or when the source changes.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/products
/catalog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Public config
&lt;/h3&gt;

&lt;p&gt;Frontend apps often need public config or metadata.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/config
/site-meta
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Release metadata
&lt;/h3&gt;

&lt;p&gt;Version, release, and build information can often be generated ahead of time.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/release
/build-info
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  AI-readable content
&lt;/h3&gt;

&lt;p&gt;Structured API output can also be useful when tools, agents, or AI systems need clean data instead of scraping pages.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/content/feed
/knowledge-base
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;I am not saying StatikAPI is an AI platform.&lt;/p&gt;

&lt;p&gt;I am saying clean structured API output can be useful for tools that need to read your content clearly.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this is not for
&lt;/h2&gt;

&lt;p&gt;StatikAPI is not for every API.&lt;/p&gt;

&lt;p&gt;It is not for payment logic.&lt;br&gt;&lt;br&gt;
It is not for private user dashboards.&lt;br&gt;&lt;br&gt;
It is not for realtime collaboration.&lt;br&gt;&lt;br&gt;
It is not for mutation-heavy systems.&lt;br&gt;&lt;br&gt;
It is not for anything that needs to be computed uniquely for every user on every request.&lt;/p&gt;

&lt;p&gt;Those things need a real backend.&lt;/p&gt;

&lt;p&gt;And that is fine.&lt;/p&gt;

&lt;p&gt;StatikAPI is for another kind of API:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;APIs where the data can be prepared ahead of time and updated when needed.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  Why I built it
&lt;/h2&gt;

&lt;p&gt;I kept seeing the same pattern.&lt;/p&gt;

&lt;p&gt;The backend was there.&lt;br&gt;&lt;br&gt;
The API existed.&lt;br&gt;&lt;br&gt;
But the endpoint was mostly returning predictable data.&lt;/p&gt;

&lt;p&gt;Sometimes it was fetching from another API.&lt;br&gt;&lt;br&gt;
Sometimes it was combining data from multiple places.&lt;br&gt;&lt;br&gt;
Sometimes it was cleaning up a response that the frontend did not want to deal with.&lt;br&gt;&lt;br&gt;
Sometimes it was only hiding the messiness of the source data.&lt;/p&gt;

&lt;p&gt;And still, every request had to go through runtime logic.&lt;/p&gt;

&lt;p&gt;That felt heavier than necessary.&lt;/p&gt;

&lt;p&gt;So I wanted to build something that treats API output more like publishable content.&lt;/p&gt;

&lt;p&gt;Not every API response needs to be alive all the time.&lt;/p&gt;

&lt;p&gt;Some responses can be prepared, shaped, published, cached, and updated when needed.&lt;/p&gt;

&lt;p&gt;That is the idea behind StatikAPI.&lt;/p&gt;
&lt;h2&gt;
  
  
  The OSS CLI is available now
&lt;/h2&gt;

&lt;p&gt;The open-source CLI is available now.&lt;/p&gt;

&lt;p&gt;Current focus:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;define API-like route files&lt;/li&gt;
&lt;li&gt;fetch or prepare data during build&lt;/li&gt;
&lt;li&gt;shape the response the way your app needs&lt;/li&gt;
&lt;li&gt;generate API outputs ahead of time&lt;/li&gt;
&lt;li&gt;serve the generated output&lt;/li&gt;
&lt;li&gt;update when the source changes&lt;/li&gt;
&lt;li&gt;run standalone or use optional Cloudflare deployment support&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The project is still early, and I am putting it out in the open because I want feedback from real use cases.&lt;/p&gt;

&lt;p&gt;Especially around questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this mental model make sense?&lt;/li&gt;
&lt;li&gt;What kind of API would you generate ahead of time?&lt;/li&gt;
&lt;li&gt;Would this help with third-party APIs, docs, changelogs, configs, or public data?&lt;/li&gt;
&lt;li&gt;Where does this idea break?&lt;/li&gt;
&lt;li&gt;What would make it useful in an actual project?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/zonayedpca/statikapi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The simplest idea to remember:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Data sources → clean API output → predictable updates
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or the developer version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src-api/ → build → api-out/
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;I am not saying every API should become static.&lt;/p&gt;

&lt;p&gt;That would be wrong.&lt;/p&gt;

&lt;p&gt;I am saying many apps have API responses that are already predictable, already read-heavy, and often based on data that comes from somewhere else.&lt;/p&gt;

&lt;p&gt;For those cases, maybe we do not need to fetch, reshape, and return the same kind of response on every request.&lt;/p&gt;

&lt;p&gt;Maybe we can build the API output ahead of time.&lt;/p&gt;

&lt;p&gt;That is what I am exploring with StatikAPI OSS CLI.&lt;/p&gt;

&lt;p&gt;The hosted StatikAPI app is also being prepared, but for now the open-source CLI is available and ready for feedback.&lt;/p&gt;

&lt;p&gt;If the idea makes sense, please check out the repo, try it, share it with someone who might find it useful, and if you think it deserves it, a GitHub star would mean a lot.&lt;/p&gt;

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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;https://github.com/zonayedpca/statikapi
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>webdev</category>
      <category>opensource</category>
      <category>api</category>
      <category>programming</category>
    </item>
    <item>
      <title>Static Export, but for APIs: Why I Built StatikAPI</title>
      <dc:creator>Zonayed Ahmed</dc:creator>
      <pubDate>Sat, 16 May 2026 05:55:18 +0000</pubDate>
      <link>https://dev.to/zonayedpca/static-export-but-for-apis-why-i-built-statikapi-i34</link>
      <guid>https://dev.to/zonayedpca/static-export-but-for-apis-why-i-built-statikapi-i34</guid>
      <description>&lt;p&gt;Static site generation feels normal now.&lt;/p&gt;

&lt;p&gt;Nobody finds it strange when a website page is built ahead of time and served from a CDN as a file. In fact, for many types of websites, that is exactly what we prefer. It is faster, simpler, cheaper, and usually more predictable.&lt;/p&gt;

&lt;p&gt;But when it comes to JSON APIs, we often behave differently.&lt;/p&gt;

&lt;p&gt;Even when the response is already known.&lt;br&gt;
Even when the data changes slowly.&lt;br&gt;
Even when the endpoint is mostly just returning structured content.&lt;/p&gt;

&lt;p&gt;We still put a runtime behind it almost by default.&lt;/p&gt;

&lt;p&gt;That kept bothering me.&lt;/p&gt;

&lt;p&gt;I kept seeing APIs that were doing almost nothing at request time. A docs navigation endpoint. A changelog feed. A public product catalog. Release metadata. A feature list. Public config. AI-readable content.&lt;/p&gt;

&lt;p&gt;The response was not really being “computed” in any meaningful way on every request. The backend was mostly just standing there, breathing behind the JSON.&lt;/p&gt;

&lt;p&gt;That felt weird to me.&lt;/p&gt;

&lt;p&gt;At some point, the idea became very simple:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What if some APIs could be generated ahead of time, just like static pages?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That is where StatikAPI came from.&lt;/p&gt;

&lt;p&gt;The simplest way to explain it is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Static export, but for APIs.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;
  
  
  The problem I kept noticing
&lt;/h2&gt;

&lt;p&gt;In a lot of projects, the API is not actually as “live” as we make it look.&lt;/p&gt;

&lt;p&gt;Sometimes it is just structured content.&lt;br&gt;
Sometimes it is a list of products, docs pages, team members, feature flags, metadata, or public configuration.&lt;br&gt;
Sometimes the backend exists mostly to take some source data and return it as JSON.&lt;/p&gt;

&lt;p&gt;And yes, runtime APIs are absolutely needed for many things.&lt;/p&gt;

&lt;p&gt;Payments need a runtime.&lt;br&gt;
User-specific dashboards need a runtime.&lt;br&gt;
Mutation-heavy systems need a runtime.&lt;br&gt;
Anything that depends on live request-time logic probably needs a runtime.&lt;/p&gt;

&lt;p&gt;But many endpoints are not like that.&lt;/p&gt;

&lt;p&gt;Many endpoints are read-heavy. The data changes only when the source changes. The response shape is predictable. The work can happen earlier.&lt;/p&gt;

&lt;p&gt;And yet we still keep a server or function alive for every request.&lt;/p&gt;

&lt;p&gt;That means more moving parts than we need.&lt;br&gt;
More latency than we need.&lt;br&gt;
More things to deploy, secure, observe, debug, and pay for.&lt;/p&gt;

&lt;p&gt;Not because the problem is always complex.&lt;/p&gt;

&lt;p&gt;Sometimes the delivery model is just heavier than the actual problem.&lt;/p&gt;

&lt;p&gt;That is the part I wanted to explore.&lt;/p&gt;
&lt;h2&gt;
  
  
  The simple idea
&lt;/h2&gt;

&lt;p&gt;StatikAPI generates JSON API outputs ahead of time.&lt;/p&gt;

&lt;p&gt;Instead of rendering HTML ahead of time, it generates JSON ahead of time.&lt;/p&gt;

&lt;p&gt;Instead of running a function on every request, it writes the response to disk as a static JSON file.&lt;/p&gt;

&lt;p&gt;Instead of asking a backend to recompute the same response again and again, it builds the response once and lets you serve the output directly.&lt;/p&gt;

&lt;p&gt;The source of truth is route files inside &lt;code&gt;src-api/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Those route files map to URLs, and the build turns them into static JSON endpoints inside &lt;code&gt;api-out/&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;For example:&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="k"&gt;export&lt;/span&gt; &lt;span class="k"&gt;default&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;project&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;StatikAPI&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;example&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;basic&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;toISOString&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
  &lt;span class="na"&gt;message&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;Hello from example/basic!&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the basic shape.&lt;/p&gt;

&lt;p&gt;A route file exports JSON-serializable data. StatikAPI builds it and writes the output as a JSON endpoint.&lt;/p&gt;

&lt;p&gt;So instead of thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“I need an API server for this.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can ask:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Can this response be generated before the request even happens?”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If the answer is yes, then maybe that endpoint does not need to be alive all the time.&lt;/p&gt;

&lt;p&gt;Maybe it just needs a build step.&lt;/p&gt;

&lt;h2&gt;
  
  
  What StatikAPI does today
&lt;/h2&gt;

&lt;p&gt;The current OSS version is intentionally direct.&lt;/p&gt;

&lt;p&gt;I did not want the first version to be clever. I wanted the model to be obvious:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;src-api/&lt;/code&gt; in, JSON out.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Right now, StatikAPI can:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;turn filesystem route modules into static JSON endpoints&lt;/li&gt;
&lt;li&gt;write the generated output into &lt;code&gt;api-out/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;generate a manifest at &lt;code&gt;.statikapi/manifest.json&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;run a local dev flow with watch/rebuild behavior&lt;/li&gt;
&lt;li&gt;provide a preview UI at &lt;code&gt;/_ui/&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;scaffold a new project through &lt;code&gt;create-statikapi&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The routing model is filesystem-based, so the structure feels familiar:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;src-api/index.js          -&amp;gt; /
src-api/about.js          -&amp;gt; /about
src-api/users/[id].js     -&amp;gt; /users/:id
src-api/docs/[...slug].js -&amp;gt; /docs/*slug
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For dynamic routes, &lt;code&gt;paths()&lt;/code&gt; tells StatikAPI which concrete outputs to generate.&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="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;paths&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;1&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;2&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;3&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;4&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;5&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;6&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="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;data&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;params&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;return&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;params&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;extra&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;value&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;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That is the part that makes the idea click for me.&lt;/p&gt;

&lt;p&gt;The route still feels like an API route.&lt;/p&gt;

&lt;p&gt;But the final result is not a runtime response.&lt;/p&gt;

&lt;p&gt;It is a prebuilt JSON output.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this matters
&lt;/h2&gt;

&lt;p&gt;I built StatikAPI for the kind of data that does not need to be recomputed on every request.&lt;/p&gt;

&lt;p&gt;Things like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;docs and content endpoints&lt;/li&gt;
&lt;li&gt;changelog feeds&lt;/li&gt;
&lt;li&gt;public metadata APIs&lt;/li&gt;
&lt;li&gt;product catalogs&lt;/li&gt;
&lt;li&gt;generated config or manifest endpoints&lt;/li&gt;
&lt;li&gt;feature lists&lt;/li&gt;
&lt;li&gt;read-heavy data that changes on a schedule&lt;/li&gt;
&lt;li&gt;build-time fetched data from another API or service&lt;/li&gt;
&lt;li&gt;AI-readable content endpoints&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For these use cases, static JSON can make a lot of sense.&lt;/p&gt;

&lt;p&gt;The request becomes simpler.&lt;/p&gt;

&lt;p&gt;It is not “run code, fetch data, transform data, return JSON.”&lt;/p&gt;

&lt;p&gt;It is just:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;read the already prepared JSON and serve it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That gives you fewer runtime dependencies.&lt;br&gt;
It can reduce latency.&lt;br&gt;
It can make deployment simpler.&lt;br&gt;
It can make the cost structure lighter.&lt;br&gt;
And honestly, it just makes the system easier to reason about.&lt;/p&gt;

&lt;p&gt;Predictability is underrated.&lt;/p&gt;

&lt;p&gt;When an endpoint is prebuilt, you know exactly where it came from.&lt;br&gt;
You know what file generated it.&lt;br&gt;
You know when it changed.&lt;br&gt;
You know what the output is before traffic hits it.&lt;/p&gt;

&lt;p&gt;A request becomes a read.&lt;/p&gt;

&lt;p&gt;Not a tiny execution environment.&lt;/p&gt;
&lt;h2&gt;
  
  
  What this is not for
&lt;/h2&gt;

&lt;p&gt;I do not think every API should become static.&lt;/p&gt;

&lt;p&gt;That would be a silly claim.&lt;/p&gt;

&lt;p&gt;StatikAPI is not for highly personalized request-time logic.&lt;br&gt;
It is not for payment flows.&lt;br&gt;
It is not for realtime mutation-heavy systems.&lt;br&gt;
It is not a replacement for every backend.&lt;/p&gt;

&lt;p&gt;If the data needs to be computed per user, per request, or per moment, then a runtime is still the right answer.&lt;/p&gt;

&lt;p&gt;But if the data is mostly read-only, predictable, and only changes when the source changes, then maybe the runtime is just extra weight.&lt;/p&gt;

&lt;p&gt;That is the line I care about.&lt;/p&gt;

&lt;p&gt;I wanted something boring, predictable, and fast for the class of APIs that can be prepared ahead of time.&lt;/p&gt;

&lt;p&gt;Not everything needs to be alive all the time.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I kept pushing on this
&lt;/h2&gt;

&lt;p&gt;I have been thinking a lot about static-first and edge-first systems.&lt;/p&gt;

&lt;p&gt;Not because “edge” sounds cool.&lt;/p&gt;

&lt;p&gt;But because many products become expensive or complicated not only because their logic is complex, but because the delivery model is heavier than it needs to be.&lt;/p&gt;

&lt;p&gt;A lot of data is already known before the request comes in.&lt;/p&gt;

&lt;p&gt;A lot of content is prepared earlier.&lt;/p&gt;

&lt;p&gt;A lot of public JSON is closer to static output than live computation.&lt;/p&gt;

&lt;p&gt;So I kept coming back to the same question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If the response can be known earlier, why are we computing it later?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;StatikAPI came from that pressure point.&lt;/p&gt;

&lt;p&gt;Not as a grand theory.&lt;/p&gt;

&lt;p&gt;More like a practical reaction to a pattern I kept seeing again and again.&lt;/p&gt;

&lt;p&gt;There are plenty of places where the shape of the problem is closer to static output than runtime logic.&lt;/p&gt;

&lt;p&gt;Docs.&lt;br&gt;
Metadata.&lt;br&gt;
Public feeds.&lt;br&gt;
Product data.&lt;br&gt;
Generated content.&lt;br&gt;
AI-readable structured data.&lt;/p&gt;

&lt;p&gt;I wanted a tool that treated that seriously.&lt;/p&gt;
&lt;h2&gt;
  
  
  Why I open-sourced it first
&lt;/h2&gt;

&lt;p&gt;I chose open source first because this idea needs real feedback.&lt;/p&gt;

&lt;p&gt;I do not want to hide the core behind a hosted product and ask people to trust the idea before they can inspect it.&lt;/p&gt;

&lt;p&gt;I want developers to read the files, understand the route model, try the build flow, and tell me where it breaks.&lt;/p&gt;

&lt;p&gt;Maybe the mental model makes sense.&lt;br&gt;
Maybe it needs better examples.&lt;br&gt;
Maybe the source integrations need to grow.&lt;br&gt;
Maybe some parts are still confusing.&lt;/p&gt;

&lt;p&gt;That is exactly the kind of feedback I want.&lt;/p&gt;

&lt;p&gt;Open source keeps the conversation honest.&lt;/p&gt;

&lt;p&gt;It also lets developers use the core idea without waiting for a hosted platform.&lt;/p&gt;

&lt;p&gt;That felt important to me.&lt;/p&gt;
&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;The quickest way to start is with the scaffold:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pnpm dlx create-statikapi my-api
&lt;span class="nb"&gt;cd &lt;/span&gt;my-api
pnpm dev
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;yarn dlx create-statikapi my-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



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

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx create-statikapi my-api
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The examples in the repo show the current shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;example/basic&lt;/code&gt; shows a simple static endpoint&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;example/dynamic&lt;/code&gt; shows dynamic and catch-all routes&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;example/showcase&lt;/code&gt; includes TypeScript and build-time remote fetches&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The basic idea is still the same:&lt;/p&gt;

&lt;p&gt;Create API-like route files.&lt;/p&gt;

&lt;p&gt;Build them.&lt;/p&gt;

&lt;p&gt;Get static JSON output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What I want feedback on
&lt;/h2&gt;

&lt;p&gt;I would genuinely love feedback on the idea.&lt;/p&gt;

&lt;p&gt;Especially around questions like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Does this mental model make sense?&lt;/li&gt;
&lt;li&gt;What kind of APIs would you generate statically?&lt;/li&gt;
&lt;li&gt;What source integrations would make this more useful?&lt;/li&gt;
&lt;li&gt;Where would this fit in your real projects?&lt;/li&gt;
&lt;li&gt;What would stop you from using something like this?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If the idea feels useful, I would really appreciate a star, comment, issue, or even criticism.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/zonayedpca/statikapi" rel="noopener noreferrer"&gt;https://github.com/zonayedpca/statikapi&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Closing
&lt;/h2&gt;

&lt;p&gt;I am not claiming every API should become static.&lt;/p&gt;

&lt;p&gt;I am saying some APIs probably should not need a runtime at all.&lt;/p&gt;

&lt;p&gt;That is the space I am exploring with StatikAPI.&lt;/p&gt;

&lt;p&gt;And instead of keeping the idea in my head forever, I wanted to put it out in the open and see what other developers think.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>webdev</category>
      <category>javascript</category>
      <category>api</category>
    </item>
    <item>
      <title>Introducing Electron Gatsby Boilerplate</title>
      <dc:creator>Zonayed Ahmed</dc:creator>
      <pubDate>Wed, 13 May 2020 21:51:05 +0000</pubDate>
      <link>https://dev.to/zonayedpca/introducing-electron-gatsby-boilerplate-19ll</link>
      <guid>https://dev.to/zonayedpca/introducing-electron-gatsby-boilerplate-19ll</guid>
      <description>&lt;p&gt;I was looking for a Gatsby Electron Boilerplate, but I didn't find any. Then I have decided to make one myself. This is what I have come up with till now. It is a simple, minimal Electron Gatsby Boilerplate. Create a new BrowserWindow easily and speed up your development experience. It also included Automatic Linting, Redux, TravisCI Configuration, and GitHub Release. &lt;/p&gt;

&lt;p&gt;GitHub Repo: &lt;a href="https://github.com/zonayedpca/electron-gatsby-boilerplate" rel="noopener noreferrer"&gt;https://github.com/zonayedpca/electron-gatsby-boilerplate&lt;/a&gt;&lt;br&gt;
Release Demo: &lt;a href="https://github.com/zonayedpca/electron-gatsby-boilerplate/releases" rel="noopener noreferrer"&gt;https://github.com/zonayedpca/electron-gatsby-boilerplate/releases&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F18544717%2F80925067-b8a70180-8dae-11ea-98bc-e5b459a846f8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fuser-images.githubusercontent.com%2F18544717%2F80925067-b8a70180-8dae-11ea-98bc-e5b459a846f8.png" alt="Demo Image"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Any kind of Recommendation, issue, PR is welcome.&lt;/p&gt;

&lt;p&gt;Also, don't forget to give a star if you think it's useful. Thank You!&lt;/p&gt;

</description>
      <category>electron</category>
      <category>gatsby</category>
    </item>
  </channel>
</rss>
