Note
Project Archived This project is archived. It is a “pet project” that will continue to be developed in my spare time at https://git.ayo.run/ayo/mcfly. If you are interested in the goals described below, you can find how to reach me at https://ayco.io/about#contact
McFly is a metaframework
that assists in building on the Web
I often wonder what it would look like to build sites & apps knowing just the basics.
I thought:
- What if I knew how to write HTML and I can have a dynamic web page from that?
- What if I knew how to build custom elements and that's all the component system I needed?
- What if I can write HTML fragments and assemble them easily in a page?
- What if I did not have to worry about the ever-growing number of ways to have a place on the Web?
McFly is my reimagination of web development: Back to the basics. Into the future.
We are currently in a focused rewrite. All parts are subject to breaking changes in minor releases.
- generic plugin system for using server frameworks
- file-based API routing via fastify as server framework
- file-based HTML pages routing
- HTML templating via Eta
- auto-registry of custom elements
- SSR custom elements
- SSG builds
Run the following to generate a McFly starter project.
npm create mcfly@latest
✅ Use vanilla custom elements (or sugar-coated web components)
✅ Write server-powered .html pages
✅ "Use the Platform™" on both server runtimes & browsers
✅ Use server-side rendering
✅ Deploy anywhere, even the Edge
1. ./src/api/
- file-based routing for REST API endpoints
- e.g.,
./src/api/users.jscan be accessed viahttp://<domain>/api/users
The following are the project packages published on the NPM registry:
| Package | Description | Version |
|---|---|---|
@mcflyjs/config |
Configuration handling for McFly projects | |
@mcflyjs/core |
Commands & runtime handling | |
@mcflyjs/fastify |
Adapter for using fastify as server framework | |
create-mcfly |
Script for scaffolding a new McFly workspace |
After cloning the project, you will need node and pnpm installed. When you are sure that you have node and pnpm, then run the following to download the dependencies:
corepack enable
pnpm i
The following commands are available to you on this project. Add more, or modify them as needed in your ./package.json file.
| Command | Action |
|---|---|
| pnpm run site | Start the development server for https://mcfly.js.org |
| pnpm run template:basic | Start the development server for the basic template |
| pnpm run build | Locally generate the app's build files to ./output |
| pnpm run preview | Preview the built app locally |
This framework was initially a result of an exploration for using Nitro and custom elements using a minimal Web Component Base class.
In 2026, we pivoted to a new target architecture to become more like a "glue" that allows putting together existing options that achieve our goals. We avoid building custom mechanisms when we can. The resulting architecture theoretically allows using different server frameworks, templating libraries, custom element libraries, etc.
Just keep building.
A project by Ayo
