DEV Community

Cover image for I built create-fast-express-structure to stop rebuilding the same Express setup every time
Youssef Selk
Youssef Selk

Posted on

I built create-fast-express-structure to stop rebuilding the same Express setup every time

Every time I started a new Express.js project, I ended up repeating the same work.

Create the folders.
Set up app.ts, server.ts, and index.ts.
Choose between TypeScript or JavaScript.
Deal with ESM vs CommonJS.
Add linting, formatting, testing, env files, security middleware, database starter, auth starter, and then fix the small things that always break the flow.

So I decided to build a CLI for it.

create-fast-express-structure is a production-focused scaffolder for Express.js apps with a clean MVC structure and optional features you can actually choose based on your project.

Why I made it

A lot of generators either feel too minimal or too opinionated.

Sometimes you just want:

  • a solid MVC base
  • clean structure
  • good defaults
  • optional add-ons only when you need them
  • a setup that does not look like a toy project

I wanted something that works for real projects, not just hello-world demos.

What it does

With one command, you can generate an Express.js project with support for:

  • TypeScript or JavaScript
  • ES Modules or CommonJS
  • minimal MVC structure by default
  • optional security middleware
  • optional Tailwind + EJS views
  • optional JWT auth starter and RBAC
  • optional MongoDB/Mongoose or PostgreSQL with Prisma or Drizzle
  • optional Vitest or Jest
  • optional ESLint or Biome
  • Prettier, Docker, Git, Husky, Commitlint
  • dry-run, skip-install, presets, and CI-friendly flags

Example usage

npm create fast-express-structure@latest my-ap
Enter fullscreen mode Exit fullscreen mode

Or with more control:

npx create-fast-express-structure my-api --template secure-api --language ts --module esm
Enter fullscreen mode Exit fullscreen mode

A few more examples:

fes my-api --yes --skip-install
fes my-api --auth --validation --rate-limit --env
fes data-api --db postgresql --orm prisma --env --no-tailwind
fes my-api --dry-run --template mvc-full
Enter fullscreen mode Exit fullscreen mode

Something I cared about a lot

I did not want the CLI to dump everything into the project whether the user needs it or not.

So the prompts are dynamic.

I’d love honest feedback

I’m still improving it, and I’d really like feedback from people who build Express APIs in real projects.

What would you expect from a scaffolding tool like this?
What is always missing in most Express starters?

If you do not choose auth, it does not keep asking auth-related questions.
If you do not want Tailwind or views, it skips that path.
If you want TypeScript, it integrates it through my fast-ts-integrator setup.

The goal was simple: keep the experience clean, but still powerful.

Links

NPM:
https://www.npmjs.com/package/create-fast-express-structure
GitHub:
https://github.com/YoussefSelk/fast-express-structure

Top comments (1)

Collapse
 
theeagle profile image
Victor Okefie

Thank you for building this. The part that hits is "I did not want the CLI to dump everything into the project whether the user needs it or not." Most scaffolds throw everything at you. You have to delete more than you keep. Here, you only answer for what you actually want. That's respect for the person using it. That's rare. A structure that doesn't get in the way is the whole point. You got that right.