Skip to content

Commit 7c69b8b

Browse files
authored
Merge pull request #13 from CODE-Y02/next
Prod:RC-29:04:2026 v4.1.3 (Major Release)
2 parents bc08804 + 91baac3 commit 7c69b8b

138 files changed

Lines changed: 6702 additions & 2505 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.eslintrc.cjs‎

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
module.exports = {
22
root: true,
3-
ignorePatterns: ["dist", "node_modules", "packages/**/*", "docs/**/*", "examples/**/*"],
3+
ignorePatterns: [
4+
"dist",
5+
"node_modules",
6+
"packages/**/*",
7+
"docs/**/*",
8+
"examples/**/*",
9+
],
410
};

‎CONTRIBUTING.md‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ pnpm run test
3535
## Adding a New Generator Feature
3636

3737
1. Add your option to `packages/create-express-forge/src/types.ts`
38-
2. Add the prompt in `src/prompts.ts`
39-
3. Create a generator in `src/generator/features/your-feature.ts`
40-
4. Wire it into `src/generator/index.ts`
41-
5. Update `src/utils/package-builder.ts` if it adds dependencies
42-
6. Add a test in `tests/`
38+
2. Add the prompt in `packages/create-express-forge/src/prompts.ts`
39+
3. Add templates in `packages/create-express-forge/templates/`
40+
4. Wire logic into `packages/create-express-forge/src/generator/index.ts`
41+
5. Update `packages/create-express-forge/src/utils/package-builder.ts` if it adds dependencies
42+
6. Add a test in `packages/create-express-forge/tests/`
4343

4444
## Releasing
4545

‎README.md‎

Lines changed: 73 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -10,28 +10,27 @@
1010

1111
```bash
1212
npx create-express-forge my-api
13-
# or
14-
npm create express-forge my-api
15-
# or (short alias)
16-
npx cef my-api
13+
# or scaffold in current directory
14+
npx create-express-forge .
1715
```
1816

1917
## What You Get
2018

2119
Interactive prompts let you choose:
2220

23-
| Option | Choices |
24-
|--------|---------|
25-
| **Architecture** | Modular (feature-based) · MVC |
26-
| **ORM** | Prisma · Sequelize · None |
27-
| **Database** | PostgreSQL · MySQL · SQLite · None |
28-
| **Logger** | Winston · Pino · None |
29-
| **Testing** | Vitest · Jest · None |
30-
| **Docker** | Dockerfile + docker-compose |
21+
| Option | Choices |
22+
| ---------------- | ---------------------------------- |
23+
| **Architecture** | Modular (feature-based) · MVC |
24+
| **ORM** | Prisma · Sequelize · None |
25+
| **Database** | PostgreSQL · MySQL · SQLite · None |
26+
| **Logger** | Winston · Pino · None |
27+
| **Testing** | Vitest · Jest · None |
28+
| **Docker** | Dockerfile + docker-compose |
3129

3230
## Generated Project Includes
3331

34-
- ✅ **TypeScript** + `tsx` hot-reload dev server
32+
- ✅ **TypeScript** + `tsx` hot-reload dev server + **Path Aliases (`@/`)**
33+
- ✅ **Biome** — 20x faster linting and formatting (replaces ESLint/Prettier)
3534
- ✅ **Zod** env validation on startup — fails fast on bad config
3635
- ✅ **Global centralized error handler** — `ApiError`, `ZodError`, unknown errors all handled
3736
- ✅ **Request validation middleware** via `validate(schema)`
@@ -42,30 +41,86 @@ Interactive prompts let you choose:
4241
- ✅ **Graceful shutdown** (SIGTERM / SIGINT)
4342
- ✅ **Multi-stage Dockerfile** with healthcheck
4443
- ✅ **docker-compose** with correct DB service
44+
- ✅ **Automated OpenAPI (Swagger)** — Zero-JSDoc documentation via Zod schemas
4545

4646
## Repository Structure
4747

4848
```
4949
create-express-forge/
5050
├── packages/
5151
│ ├── create-express-forge/ ← The published CLI
52+
│ ├── mcp/ ← @create-express-forge/mcp Server
5253
│ ├── typescript-config/ ← Shared internal TS config
53-
│ └── eslint-config/ ← Shared internal ESLint config
54+
│ └── lint-config/ ← Shared internal Biome/Lint config
5455
├── examples/
5556
│ └── modular-postgres-prisma/ ← Pre-generated example
5657
└── .github/workflows/ ← CI + Release
5758
```
5859

60+
## 🤖 AI & MCP Integration
61+
62+
Create Express Forge is designed to be AI-friendly. We provide a built-in **MCP (Model Context Protocol)** server that lets you chat with your AI assistant about the project, fetch documentation, and generate scaffolding commands.
63+
64+
### Using the MCP Server
65+
66+
You can run the MCP server directly via `npx` (recommended) or by building the source.
67+
68+
**Option 1: Using `npx` (Recommended)**
69+
Add this to your Claude Desktop config or other MCP client:
70+
71+
```json
72+
{
73+
"mcpServers": {
74+
"create-express-forge": {
75+
"command": "npx",
76+
"args": ["-y", "@create-express-forge/mcp"]
77+
}
78+
}
79+
}
80+
```
81+
82+
**Option 2: From Source**
83+
1. **Build the project**: `pnpm build`
84+
2. **Add to your MCP Client**:
85+
```json
86+
{
87+
"mcpServers": {
88+
"create-express-forge": {
89+
"command": "node",
90+
"args": ["/absolute/path/to/express-cli/packages/mcp/dist/index.js"]
91+
}
92+
}
93+
}
94+
```
95+
96+
### LLM Documentation
97+
98+
We also provide machine-readable documentation files for LLMs:
99+
100+
- **`llms.txt`**: [Project summary](https://code-y02.github.io/express-cli/llms.txt)
101+
- **`llms-full.txt`**: [Full documentation context](https://code-y02.github.io/express-cli/llms-full.txt)
102+
- **`ai.json`**: [Capability manifest and CLI flags](https://code-y02.github.io/express-cli/ai.json)
103+
104+
## Legacy Support (v3.x)
105+
106+
Documentation for the legacy v3.x (LTS) version is available at [https://code-y02.github.io/express-cli/v3/](https://code-y02.github.io/express-cli/v3/).
107+
108+
To scaffold a project using v3.x, run:
109+
110+
```bash
111+
npx create-express-forge@3.3.2 [project-name]
112+
```
113+
59114
## Contributing
60115

61116
See [CONTRIBUTING.md](CONTRIBUTING.md).
62117

63118
## Versioning & Branches
64119

65-
| Branch | npm tag | Description |
66-
|--------|---------|-------------|
67-
| `main` | `latest` | Stable releases |
68-
| `next` | `next` | Pre-releases / beta |
120+
| Branch | npm tag | Description |
121+
| ------ | -------- | ------------------- |
122+
| `main` | `latest` | Stable releases |
123+
| `next` | `next` | Pre-releases / beta |
69124

70125
## License
71126

‎biome.json‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
{
2+
"$schema": "https://biomejs.dev/schemas/2.4.13/schema.json",
3+
"extends": ["./packages/lint-config/biome.base.json"],
4+
"files": {
5+
"includes": [
6+
"!**/dist",
7+
"!**/node_modules",
8+
"!**/pnpm-lock.yaml",
9+
"!.turbo",
10+
"!docs/.vitepress/cache",
11+
"!docs/.vitepress/dist"
12+
]
13+
}
14+
}

‎docs/.vitepress/config.ts‎

Lines changed: 132 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -5,17 +5,75 @@ const rawBase = process.env.VITEPRESS_BASE || "/express-cli/";
55
const base = rawBase.endsWith("/") ? rawBase : `${rawBase}/`;
66

77
export default defineConfig({
8-
title: "Express Forge",
8+
title: "Create Express Forge",
99
description: "⚡ Production-ready Express backends in seconds",
1010
base: base,
11+
cleanUrls: true,
12+
lastUpdated: true,
13+
sitemap: {
14+
hostname: "https://code-y02.github.io/express-cli",
15+
},
1116

1217
head: [
1318
["link", { rel: "icon", href: `${base}logo.svg` }],
14-
["meta", { name: "keywords", content: "express, typescript, nodejs, backend, api, generator, scaffold, prisma, sequelize, architecture, mvc, modular, rest-api, server-boilerplate" }],
19+
[
20+
"meta",
21+
{
22+
name: "keywords",
23+
content:
24+
"express, typescript, nodejs, backend, api, generator, scaffold, prisma, sequelize, architecture, mvc, modular, rest-api, server-boilerplate",
25+
},
26+
],
1527
["meta", { name: "author", content: "Yatharth Lakhate" }],
1628
["meta", { property: "og:type", content: "website" }],
17-
["meta", { property: "og:title", content: "Express Forge | The Ultimate Express + TypeScript Generator" }],
18-
["meta", { property: "og:description", content: "Scaffold production-ready Express.js TypeScript backends in seconds with built-in Auth, ORM, and OpenAPI support." }],
29+
[
30+
"meta",
31+
{
32+
property: "og:title",
33+
content: "create-express-forge | The Ultimate Express + TypeScript Generator",
34+
},
35+
],
36+
[
37+
"meta",
38+
{
39+
property: "og:description",
40+
content:
41+
"Scaffold production-ready Express.js TypeScript backends in seconds with built-in Auth, ORM, and OpenAPI support.",
42+
},
43+
],
44+
["meta", { property: "og:image", content: `${base}og-image.png` }],
45+
["meta", { name: "twitter:card", content: "summary_large_image" }],
46+
["meta", { name: "twitter:site", content: "@code_y02" }],
47+
["meta", { name: "twitter:title", content: "Create Express Forge" }],
48+
[
49+
"meta",
50+
{
51+
name: "twitter:description",
52+
content: "⚡ Production-ready Express backends in seconds",
53+
},
54+
],
55+
["meta", { name: "twitter:image", content: `${base}og-image.png` }],
56+
[
57+
"script",
58+
{ type: "application/ld+json" },
59+
JSON.stringify({
60+
"@context": "https://schema.org",
61+
"@type": "SoftwareApplication",
62+
"name": "Create Express Forge",
63+
"operatingSystem": "Node.js",
64+
"applicationCategory": "DeveloperApplication",
65+
"description": "The ultimate CLI for scaffolding production-ready Express.js TypeScript backends.",
66+
"offers": {
67+
"@type": "Offer",
68+
"price": "0",
69+
"priceCurrency": "USD",
70+
},
71+
"author": {
72+
"@type": "Person",
73+
"name": "Yatharth Lakhate",
74+
},
75+
}),
76+
],
1977
],
2078

2179
themeConfig: {
@@ -29,45 +87,84 @@ export default defineConfig({
2987
{ text: "Guide", link: "/guide/getting-started" },
3088
{ text: "Features", link: "/guide/features" },
3189
{ text: "Reference", link: "/reference/cli-options" },
32-
{ text: "⭐ Star on GitHub", link: "https://github.com/CODE-Y02/express-cli" },
33-
],
34-
35-
sidebar: [
36-
{
37-
text: "Introduction",
38-
items: [
39-
{ text: "What is Express Forge?", link: "/" },
40-
{ text: "Getting Started", link: "/guide/getting-started" },
41-
],
42-
},
43-
{
44-
text: "Core Concepts",
45-
items: [
46-
{ text: "Architecture Patterns", link: "/guide/architecture" },
47-
{ text: "Project Structure", link: "/guide/structure" },
48-
{ text: "Core Features", link: "/guide/features" },
49-
{ text: "Authentication", link: "/guide/auth" },
50-
{ text: "Caching", link: "/guide/caching" },
51-
{ text: "API Documentation", link: "/guide/openapi" },
52-
],
53-
},
5490
{
55-
text: "Advanced",
91+
text: "Versions",
5692
items: [
57-
{ text: "Deployment", link: "/guide/deployment" },
58-
{ text: "Testing Strategy", link: "/guide/testing" },
59-
{ text: "Troubleshooting", link: "/guide/troubleshooting" },
93+
{ text: "v4.x (Latest)", link: "/" },
94+
{ text: "v3.x (LTS)", link: "/v3/" },
6095
],
6196
},
6297
{
63-
text: "Reference",
64-
items: [
65-
{ text: "CLI Options", link: "/reference/cli-options" },
66-
{ text: "Configuration", link: "/reference/config" },
67-
],
98+
text: "⭐ Star on GitHub",
99+
link: "https://github.com/CODE-Y02/express-cli",
68100
},
69101
],
70102

103+
sidebar: {
104+
"/": [
105+
{
106+
text: "Introduction",
107+
items: [
108+
{ text: "What is create-express-forge?", link: "/" },
109+
{ text: "Getting Started", link: "/guide/getting-started" },
110+
],
111+
},
112+
{
113+
text: "Core Concepts",
114+
items: [
115+
{ text: "Architecture Patterns", link: "/guide/architecture" },
116+
{ text: "Project Structure", link: "/guide/structure" },
117+
{ text: "Core Features", link: "/guide/features" },
118+
{ text: "Authentication", link: "/guide/auth" },
119+
{ text: "Caching", link: "/guide/caching" },
120+
{ text: "API Documentation", link: "/guide/openapi" },
121+
],
122+
},
123+
{
124+
text: "Advanced",
125+
items: [
126+
{ text: "Deployment", link: "/guide/deployment" },
127+
{ text: "Testing Strategy", link: "/guide/testing" },
128+
{ text: "Troubleshooting", link: "/guide/troubleshooting" },
129+
],
130+
},
131+
{
132+
text: "Reference",
133+
items: [
134+
{ text: "CLI Options", link: "/reference/cli-options" },
135+
{ text: "Configuration", link: "/reference/config" },
136+
],
137+
},
138+
],
139+
"/v3/": [
140+
{
141+
text: "v3 Docs",
142+
items: [
143+
{ text: "Introduction", link: "/v3/" },
144+
{ text: "Getting Started", link: "/v3/guide/getting-started" },
145+
],
146+
},
147+
{
148+
text: "Core Concepts",
149+
items: [
150+
{ text: "Architecture Patterns", link: "/v3/guide/architecture" },
151+
{ text: "Project Structure", link: "/v3/guide/structure" },
152+
{ text: "Core Features", link: "/v3/guide/features" },
153+
{ text: "Authentication", link: "/v3/guide/auth" },
154+
{ text: "Caching", link: "/v3/guide/caching" },
155+
{ text: "API Documentation", link: "/v3/guide/openapi" },
156+
],
157+
},
158+
{
159+
text: "Reference",
160+
items: [
161+
{ text: "CLI Options", link: "/v3/reference/cli-options" },
162+
{ text: "Configuration", link: "/v3/reference/config" },
163+
],
164+
},
165+
],
166+
},
167+
71168
socialLinks: [
72169
{ icon: "github", link: "https://github.com/CODE-Y02/express-cli" },
73170
],

0 commit comments

Comments
 (0)