<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: BriyanPatel</title>
    <description>The latest articles on Forem by BriyanPatel (@briyanpatel).</description>
    <link>https://forem.com/briyanpatel</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%2F2747219%2Faec40757-37d2-4875-95b6-6541e60ef26a.png</url>
      <title>Forem: BriyanPatel</title>
      <link>https://forem.com/briyanpatel</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/briyanpatel"/>
    <language>en</language>
    <item>
      <title>I got tired of Express boilerplate. So I built a CLI that sets up your entire backend in 60 seconds.</title>
      <dc:creator>BriyanPatel</dc:creator>
      <pubDate>Fri, 27 Feb 2026 07:25:37 +0000</pubDate>
      <link>https://forem.com/briyanpatel/i-got-tired-of-express-boilerplate-so-i-built-a-cli-that-sets-up-your-entire-backend-in-60-seconds-5d2j</link>
      <guid>https://forem.com/briyanpatel/i-got-tired-of-express-boilerplate-so-i-built-a-cli-that-sets-up-your-entire-backend-in-60-seconds-5d2j</guid>
      <description>&lt;p&gt;Every project starts the same way for me.&lt;/p&gt;

&lt;p&gt;Open terminal. Create folder. npm init. Install express. &lt;br&gt;
Install typescript. Configure tsconfig.json. Set up Helmet. &lt;br&gt;
Add CORS. Wire up Pino logger. Add .env validation.&lt;/p&gt;

&lt;p&gt;45 minutes later — I haven't written a single line of &lt;br&gt;
actual business logic yet.&lt;/p&gt;

&lt;p&gt;After doing this for the 10th time I asked myself:&lt;br&gt;
why am I still doing this manually?&lt;/p&gt;

&lt;p&gt;So I built Zuro CLI.&lt;/p&gt;

&lt;h2&gt;
  
  
  What it does
&lt;/h2&gt;

&lt;p&gt;npx zuro-cli init my-app&lt;/p&gt;

&lt;p&gt;That one command gives you a fully production-ready &lt;br&gt;
Express + TypeScript project with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Express.js + TypeScript configured&lt;/li&gt;
&lt;li&gt;Helmet for secure HTTP headers&lt;/li&gt;
&lt;li&gt;CORS ready&lt;/li&gt;
&lt;li&gt;Pino logger (fastest JSON logger for Node)&lt;/li&gt;
&lt;li&gt;.env validation out of the box&lt;/li&gt;
&lt;li&gt;Clean folder structure (routes, controllers, middleware)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Ready in 60 seconds. Not 45 minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then add only what you need
&lt;/h2&gt;

&lt;p&gt;npx zuro-cli add database  &lt;/p&gt;

&lt;h1&gt;
  
  
  Drizzle ORM + PostgreSQL or MySQL
&lt;/h1&gt;

&lt;p&gt;npx zuro-cli add auth      &lt;/p&gt;

&lt;h1&gt;
  
  
  Better-Auth + signup/login/sessions
&lt;/h1&gt;

&lt;p&gt;npx zuro-cli add validator &lt;/p&gt;

&lt;h1&gt;
  
  
  Zod middleware for request validation
&lt;/h1&gt;

&lt;p&gt;npx zuro-cli add error-handler &lt;/p&gt;

&lt;h1&gt;
  
  
  Custom error classes + consistent API responses
&lt;/h1&gt;

&lt;p&gt;The best part? Running &lt;code&gt;add auth&lt;/code&gt; automatically installs &lt;br&gt;
database and error-handler too if they're missing. &lt;br&gt;
No order to remember. No missing dependencies.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why these specific libraries?
&lt;/h2&gt;

&lt;p&gt;I didn't pick randomly. Everything has a reason:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Drizzle ORM&lt;/strong&gt; → type-safe queries, no heavy binary, &lt;br&gt;
feels like writing SQL which most devs already know&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Better-Auth&lt;/strong&gt; → modern, actively maintained, works &lt;br&gt;
perfectly with TypeScript and Drizzle&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Zod&lt;/strong&gt; → runtime + TypeScript validation in one shot&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pino&lt;/strong&gt; → literally the fastest JSON logger for Node.js&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Helmet&lt;/strong&gt; → secure HTTP headers with zero config&lt;/p&gt;

&lt;h2&gt;
  
  
  Who is this for?
&lt;/h2&gt;

&lt;p&gt;Honestly? I built this for myself first.&lt;/p&gt;

&lt;p&gt;I'm a student from India who builds a lot of hackathon &lt;br&gt;
projects and side projects. Every time I started a new &lt;br&gt;
backend I lost the first hour on setup.&lt;/p&gt;

&lt;p&gt;Zuro CLI is for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Students starting backend projects&lt;/li&gt;
&lt;li&gt;Hackathon builders who need to ship fast&lt;/li&gt;
&lt;li&gt;Developers tired of copy-pasting the same setup&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  It's v0.1 beta
&lt;/h2&gt;

&lt;p&gt;There's a lot more coming. More modules, more options, &lt;br&gt;
more flexibility.&lt;/p&gt;

&lt;p&gt;But the core works. I use it myself.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it
&lt;/h2&gt;

&lt;p&gt;npx zuro-cli init my-app&lt;/p&gt;

&lt;p&gt;Docs → &lt;a href="https://zuro-cli.devbybriyan.com" rel="noopener noreferrer"&gt;https://zuro-cli.devbybriyan.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It's completely free and open source. &lt;/p&gt;

&lt;p&gt;I'd love brutal honest feedback — what's missing? &lt;br&gt;
What would you add? What would make you actually use this?&lt;/p&gt;

&lt;p&gt;Drop a comment below 🙏&lt;/p&gt;

</description>
      <category>node</category>
      <category>typescript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
