<?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: Noman Awan</title>
    <description>The latest articles on Forem by Noman Awan (@nomanawan).</description>
    <link>https://forem.com/nomanawan</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%2F3813537%2F45df72b0-70a5-4397-9e15-bdc45e82339f.jpg</url>
      <title>Forem: Noman Awan</title>
      <link>https://forem.com/nomanawan</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/nomanawan"/>
    <language>en</language>
    <item>
      <title>I Was Tired of Setting Up Express.js From Scratch Every Time — So I Built a CLI</title>
      <dc:creator>Noman Awan</dc:creator>
      <pubDate>Sun, 08 Mar 2026 22:58:11 +0000</pubDate>
      <link>https://forem.com/nomanawan/i-was-tired-of-setting-up-expressjs-from-scratch-every-time-so-i-built-a-cli-di1</link>
      <guid>https://forem.com/nomanawan/i-was-tired-of-setting-up-expressjs-from-scratch-every-time-so-i-built-a-cli-di1</guid>
      <description>&lt;p&gt;If you’ve built more than a couple of Node.js backends, you know the drill.&lt;/p&gt;

&lt;p&gt;npm init, install &lt;strong&gt;Express&lt;/strong&gt;, install &lt;strong&gt;TypeScript&lt;/strong&gt;, configure tsconfig.json, structure your folders — and by the time you're done, you've spent 20 minutes without writing a single line of actual application logic.&lt;/p&gt;

&lt;p&gt;I got tired of it. So I built &lt;a href="https://www.npmjs.com/package/@excli/express" rel="noopener noreferrer"&gt;@excli/express.&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  What is @excli/express?
&lt;/h3&gt;

&lt;p&gt;A CLI tool that scaffolds a complete, production-ready Express.js project in seconds. TypeScript or JavaScript, your choice of package manager — all set up and ready to run from the moment the command finishes.&lt;/p&gt;

&lt;h3&gt;
  
  
  Prerequisites
&lt;/h3&gt;

&lt;p&gt;Before running @excli/express, make sure you have the following installed:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Node.js v20 or higher — nodejs.org&lt;/li&gt;
&lt;li&gt;Package manager — npm, yarn, pnpm, or bun&lt;/li&gt;
&lt;li&gt;Docker — optional for running the generated compose.yaml — docker.com&lt;/li&gt;
&lt;li&gt;Git — for version control of your generated project — git-scm.com&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;h3&gt;
  
  
  How to use it?
&lt;/h3&gt;

&lt;p&gt;**&lt;/p&gt;

&lt;p&gt;&lt;code&gt;npx @excli/express&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;That’s the entire command. The CLI walks you through a few prompts — language, package manager, project preferences — and generates everything for you.&lt;/p&gt;

&lt;p&gt;No flags to memorize. No documentation to consult. Just answer the prompts and start building.&lt;/p&gt;

&lt;h3&gt;
  
  
  Database Support
&lt;/h3&gt;

&lt;p&gt;@excli/express sets up your project with first-class database support. You choose your database during the interactive setup:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SQL&lt;/strong&gt;: MySQL, PostgresSQL, MariaDB&lt;br&gt;
&lt;strong&gt;NOSQL&lt;/strong&gt;: MongoDB&lt;/p&gt;

&lt;p&gt;Each option comes with a pre-configured database connection file and a starter schema or model — so you’re not staring at a blank file figuring out boilerplate.&lt;/p&gt;

&lt;h3&gt;
  
  
  ORM &amp;amp; ODM Support
&lt;/h3&gt;

&lt;p&gt;Along with your database, you pick your ORM or ODM:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Prisma — MySQL, MariaDB, PostgreSQL, MongoDB&lt;/li&gt;
&lt;li&gt;TypeORM — MySQL, MariaDB, PostgreSQL, MongoDB&lt;/li&gt;
&lt;li&gt;Drizzle — MySQL, MariaDB, PostgreSQL&lt;/li&gt;
&lt;li&gt;Sequelize — MySQL, MariaDB, PostgreSQL&lt;/li&gt;
&lt;li&gt;Mongoose — MongoDB only&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Docker &amp;amp; docker-compose
&lt;/h3&gt;

&lt;p&gt;The tool generates a ready-to-use compose.yaml for your chosen database, including:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Your database service with correct environment variables&lt;/li&gt;
&lt;li&gt;Volume mounts for data persistence&lt;/li&gt;
&lt;li&gt;A browser-based admin panel for your database (accessible at &lt;a href="http://localhost:6969" rel="noopener noreferrer"&gt;http://localhost:6969&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Redis (Optional)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If your project needs caching, you can opt into Redis during setup. It gets added as an additional service in your compose.yaml — no manual configuration required.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Try it:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;npx @excli/express&lt;/p&gt;

&lt;p&gt;&lt;a href="//npmjs.com/package/@excli/express"&gt;NPM&lt;/a&gt;&lt;br&gt;
&lt;a href="//github.com/pxycknomdictator/excli-express"&gt;Github&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>automation</category>
    </item>
  </channel>
</rss>
