From 970970fd32c3240985d03d2ab8a52446f954c1fe Mon Sep 17 00:00:00 2001 From: Ayo Date: Thu, 4 Jun 2026 11:03:45 +0000 Subject: [PATCH] feat: use fastify as server - [x] implement server framework plugin config - [x] new @mcflyjs/fastify package - [x] update readme re: pivot & target state - [x] new basic template Reviewed-on: https://git.ayo.run/ayo/mcfly/pulls/2 Co-authored-by: Ayo Co-committed-by: Ayo --- .vscode/settings.json | 1 - README.md | 47 +-- demo/mcfly.config.mjs | 6 + demo/package.json | 17 ++ demo/src/api/README.md | 29 ++ demo/src/api/example/index.js | 6 + demo/src/api/index.js | 5 + demo/src/api/root.js | 6 + demo/src/pages/index.html | 0 eslint.config.mjs | 2 +- mcfly.config.mjs | 3 + package.json | 4 +- packages/config/package.json | 6 +- ...efine-mcfly-config.ts => define-config.ts} | 10 +- packages/config/src/index.ts | 2 +- packages/config/tsconfig.json | 3 +- packages/core/package.json | 10 +- packages/core/src/cli/commands/serve.ts | 129 -------- packages/core/src/{cli => }/commands/build.ts | 33 +- .../core/src/{cli => }/commands/generate.ts | 0 packages/core/src/{cli => }/commands/new.ts | 0 .../core/src/{cli => }/commands/prepare.ts | 7 +- packages/core/src/commands/serve.ts | 67 +++++ packages/core/src/get-config.js | 23 -- packages/core/src/{cli => }/index.ts | 0 packages/core/src/mcfly-nitro-config.ts | 35 --- packages/core/src/route-middleware.js | 161 ---------- packages/core/src/runtime/index.ts | 1 - packages/core/test/build.test.ts | 2 +- packages/core/test/prepare.test.ts | 16 +- packages/create-component/LICENSE | 21 -- packages/create-component/README.md | 12 - packages/create-component/package.json | 35 --- packages/create-component/pnpm-lock.yaml | 48 --- packages/create-component/src/index.ts | 197 ------------ packages/create-component/tsconfig.json | 10 - packages/create-mcfly/src/index.ts | 2 +- packages/fastify/index.js | 7 + packages/fastify/package.json | 16 + packages/fastify/serve.js | 22 ++ pnpm-lock.yaml | 283 ++++-------------- pnpm-workspace.yaml | 7 +- site/mcfly.config.mjs | 43 +-- 43 files changed, 312 insertions(+), 1022 deletions(-) create mode 100644 demo/mcfly.config.mjs create mode 100644 demo/package.json create mode 100644 demo/src/api/README.md create mode 100644 demo/src/api/example/index.js create mode 100644 demo/src/api/index.js create mode 100644 demo/src/api/root.js create mode 100644 demo/src/pages/index.html create mode 100644 mcfly.config.mjs rename packages/config/src/{define-mcfly-config.ts => define-config.ts} (64%) delete mode 100644 packages/core/src/cli/commands/serve.ts rename packages/core/src/{cli => }/commands/build.ts (68%) rename packages/core/src/{cli => }/commands/generate.ts (100%) rename packages/core/src/{cli => }/commands/new.ts (100%) rename packages/core/src/{cli => }/commands/prepare.ts (76%) create mode 100644 packages/core/src/commands/serve.ts rename packages/core/src/{cli => }/index.ts (100%) delete mode 100644 packages/core/src/mcfly-nitro-config.ts delete mode 100644 packages/core/src/route-middleware.js delete mode 100644 packages/create-component/LICENSE delete mode 100644 packages/create-component/README.md delete mode 100644 packages/create-component/package.json delete mode 100644 packages/create-component/pnpm-lock.yaml delete mode 100755 packages/create-component/src/index.ts delete mode 100644 packages/create-component/tsconfig.json create mode 100644 packages/fastify/index.js create mode 100644 packages/fastify/package.json create mode 100644 packages/fastify/serve.js diff --git a/.vscode/settings.json b/.vscode/settings.json index c64e200..80cc44e 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -8,7 +8,6 @@ "hookable", "mcfly", "mcflyjs", - "nitropack", "ultrahtml", "unstorage" ], diff --git a/README.md b/README.md index 7583d1f..efcac10 100644 --- a/README.md +++ b/README.md @@ -27,9 +27,13 @@ I thought: ## Project Status -We are currently in a Proof of Concept phase. All parts are subject to breaking changes in minor releases. +We are currently in a focused rewrite. All parts are subject to breaking changes in minor releases. -πŸ‘‰ [Road to v1.0.0 todo items](https://github.com/ayoayco/McFly/issues?q=is%3Aissue%20state%3Aopen%20milestone%3Av1.0.0) +- [x] file-based API routing via fastify as server framework +- [ ] file-based HTML pages routing & templating via Eta +- [ ] auto-registry of custom elements +- [ ] SSR custom elements +- [ ] SSG ## Try it today @@ -39,15 +43,7 @@ Run the following to generate a McFly starter project. npm create mcfly@latest ``` -## How it works (for the nerds) - -It is primarily a runtime middleware for [Nitro](https://nitro.build). Every time a page is requested, the McFly middleware intercepts and assembles the view for the requestor. McFly does this with the assets it knows about which are mostly: pages, components, public assets. Additionally, Nitro is also capable of generating static assets on build time. - -These patterns are commonly referred to as Server-Side Rendering and Static Site Generation (SSR & SSG). - -The idea is to have a plugin system which allows for the core functionality to only "lean" on web platform features. Anything not yet a standard is implemented as a plugin which will be easily "swapped" away when the platform catches up. - -## Features +## Target Features βœ… Use vanilla custom elements (or sugar-coated web components)
βœ… Write server-powered .html pages
@@ -57,19 +53,7 @@ The idea is to have a plugin system which allows for the core functionality to o ## Special directories -**1. `./src/pages/`** - -- file-based routing for `.html` files -- directly use custom elements & static fragments (no imports or registry maintenance needed) -- use `