Back to the Basics. Into the Future. https://mcfly.js.org
Find a file
2023-10-29 11:53:26 +01:00
.vscode chore: type-check .js files by default 2023-10-25 23:59:07 +02:00
assets chore(templates): update basic template readme 2023-10-21 19:19:09 +02:00
packages refactor(core): clean up return types 2023-10-29 11:53:26 +01:00
site fix: global route interceptor 2023-10-28 23:26:30 +02:00
templates/basic fix(templates/basic): route function handler 2023-10-28 23:29:41 +02:00
.editorconfig initial commit 2023-10-07 20:06:23 +02:00
.eslintignore initial commit 2023-10-07 20:06:23 +02:00
.eslintrc initial commit 2023-10-07 20:06:23 +02:00
.gitignore feat(create-mcfly): generate from basic template 2023-10-21 20:25:50 +02:00
.npmrc initial commit 2023-10-07 20:06:23 +02:00
LICENSE feat(create-mcfly): install deps & init git 2023-10-22 17:32:36 +02:00
package-lock.json chore(cli): bump version 2023-10-29 00:22:39 +02:00
package.json feat(cli): declare global class 2023-10-26 22:13:40 +02:00
README.md refactor(cli): rename dev command to serve 2023-10-26 17:46:27 +02:00

rRick & Morty cartoon

McFly

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

Installation

Run the following to generate a McFly starter project.

npm create mcfly@latest

Features

The time has come for vanilla Web tech. 🎉

Create web apps with vanilla custom elements
Write real .HTML files
Have no frameworks or reactivity libraries on the browser
Use server-side rendering
Deploy anywhere

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!

McFly CLI (In-Progress)

The McFly CLI can assist further in scaffolding new projects and building blocks:

npm i -g @mcflyjs/cli

Then, you can run the following McFly CLI commands:

Command Action
mcfly new Creates a new McFly project.
mcfly serve Runs the developent server.
mcfly build Builds the McFly project for production.
mcfly prepare Prepares the McFly workspace.
mcfly generate Generates building blocks for a McFly app. (In-progress)

McFly config

To tell McFly you want to use components, pass the mode (only "js" for now) to the components prop mcfly.config.ts

import defineConfig from "./packages/define-config";

export default defineConfig({
  components: "js",
});

Packages

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

Package Description Version
@mcflyjs/core Core package containing event and configuration handlers npm version
@mcflyjs/config Package containing the Nitro configuration for McFly projects npm version
@mcflyjs/cli The McFly CLI tooling 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 vanilla JS 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