Back to the Basics. Into the Future. https://mcfly.js.org
Find a file
Ayo Ayco 73617647db
feat: move cli to core (#55)
* refactor: move cli to core

* feat: move cli to core

- use route-middleware in serve
- eliminate need for `routes` dir in app

* feat: use route-middleware in build

* chore: update test gh action
2025-01-08 21:21:31 +01:00
.github/workflows feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
.husky chore: update eslint action & eslint-prettier config for endOfLine 2024-12-29 00:23:56 +01:00
.vscode feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
assets chore(templates): update basic template readme 2023-10-21 19:19:09 +02:00
packages feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
site feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
templates/basic chore: update npmrc 2025-01-08 17:01:34 +01:00
.gitignore feat: add logging for when custom element registry not inserted 2024-12-31 01:15:01 +01:00
.npmrc chore: update npmrc 2025-01-08 17:01:34 +01:00
.prettierignore chore: add eslint-plugin-prettier 2024-12-27 23:10:41 +01:00
CONTRIBUTING.md chore: fix contributing guide title 2023-11-06 12:28:26 +01:00
eslint.config.mjs chore: update eslint action & eslint-prettier config for endOfLine 2024-12-29 00:23:56 +01:00
LICENSE chore(packages): update LICENSEs 2023-11-09 11:33:02 +01:00
package.json feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
pnpm-lock.yaml feat: move cli to core (#55) 2025-01-08 21:21:31 +01:00
pnpm-workspace.yaml chore: migrate to pnpm 2024-03-09 21:23:06 +01:00
prettier.config.mjs chore: update eslint action & eslint-prettier config for endOfLine 2024-12-29 00:23:56 +01:00
README.md chore: update readme 2024-12-31 22:28:34 +01:00

rRick & Morty cartoon

McFly

McFly is a no-framework metaframework
that assists in leveraging the web platform

Why

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.

Project Status

We are currently in a Proof of Concept phase. All parts are subject to breaking changes in minor releases.

Try it today

Run the following to generate a McFly starter project.

npm create mcfly@latest

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/pages/

  • file-based routing for .html files
  • directly use custom elements & static fragments (no imports or registry maintenance needed)
  • use <script server:setup> to define logic that runs on the server, which then gets stripped away

2. ./src/components/

  • custom element constructor files (only .js files for now)
  • all components are automatically registered using their file names; a hello-world.js component can be used as <hello-world>
  • static .html fragments; a my-header.html fragment can be directly used as <my-header>

3. ./routes/api/

  • file-based routing for REST API endpoints
  • e.g., ./routes/api/users.ts can be accessed via http://<domain>/api/users
  • TypeScript or JavaScript welcome!

Packages

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

Package Description Version
@mcflyjs/cli The McFly CLI tooling npm version
@mcflyjs/config Nitro server config for McFly projects npm version
@mcflyjs/core Route event and config handlers npm version
create-mcfly Script for scaffolding a new McFly workspace npm version

More info

This framework is a result of an exploration for using Nitro and custom elements using a minimal Web Component Base class.

Nitro is the same production-grade web server powering Nuxt


Just keep building
A project by Ayo Ayco