Back to the Basics. Into the Future. https://mcfly.js.org
Find a file
2026-06-04 15:00:11 +02:00
.husky chore: no mirror; just push 2026-02-23 22:54:47 +01:00
.vscode feat: use fastify as server 2026-06-04 11:03:45 +00:00
assets feat(site): add icons 2025-02-14 21:39:22 +01:00
demo feat: use fastify as server 2026-06-04 11:03:45 +00:00
packages chore(create-mcfly): release v0.4.8 2026-06-04 13:23:45 +02:00
site feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
templates feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
.gitignore feat: new create component package (#63) 2026-05-11 10:23:24 +02:00
.prettierignore feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
CONTRIBUTING.md chore: separate items for html routing & templating 2026-06-04 15:00:11 +02:00
eslint.config.mjs feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
LICENSE chore(packages): update LICENSEs 2023-11-09 11:33:02 +01:00
mcfly.config.mjs feat: use fastify as server 2026-06-04 11:03:45 +00:00
netlify.toml chore: run netlify deploy on root 2025-01-09 21:38:58 +01:00
package.json feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
pnpm-lock.yaml feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
pnpm-workspace.yaml feat: new architecture to support server framework plugin 2026-06-04 11:17:09 +00:00
prettier.config.mjs chore: update eslint action & eslint-prettier config for endOfLine 2024-12-29 00:23:56 +01:00
README.md chore: separate items for html routing & templating 2026-06-04 15:00:11 +02:00
tsconfig.base.json chore(create-mcfly, config): migrate to typescript 2025-02-28 21:50:28 +01:00

McFly logo

McFly

McFly is a metaframework
that assists in building on the Web

Why?

I often wonder what it would look like to build sites & apps knowing just the basics.

I thought:

McFly is my reimagination of web development: Back to the basics. Into the future.

Project Status

We are currently in a focused rewrite. All parts are subject to breaking changes in minor releases.

  • 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

Try it today

Run the following to generate a McFly starter project.

npm create mcfly@latest

Target Features

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

Special directories

1. ./src/api/

  • file-based routing for REST API endpoints
  • e.g., ./src/api/users.js can be accessed via http://<domain>/api/users

Packages

The following are the project packages published on the NPM registry:

Package Description Version
@mcflyjs/config Configuration handling for McFly projects npm version
@mcflyjs/core Commands & runtime handling npm version
@mcflyjs/fastify Adapter for using fastify as server framework npm version
create-mcfly Script for scaffolding a new McFly workspace npm version

Project setup

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

More info

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