Git-born Wappler extensions: wappler-install.json, free Installer & Manifest Builder (proposal for a new standard)

Something I've been building quietly has grown into something I'm genuinely proud of, and would love to share it with the Wappler community and the Team (for consideration).

It started as a simple idea: “Help people install my extensions without hunting through README cp blocks.”

That became a browser install wizard, then a standard install manifest format, then a manifest builder for authors - all live on mrcheese.co.uk today, free, no account required.

We hope this helps anyone who ships extensions via GitHub + manual copy (the path many of us use alongside npm / Project Updater). Feedback very welcome.


Index

Section For who
TL;DR Everyone
The problem Context
For Wappler users - Extension Installer Installing extensions
For extension authors - wappler-install.json Publishing extensions
Manifest Builder Creating manifests
Glossary Terms
Mr Cheese extensions using this today Examples
Note for the Wappler team Platform & product
Links & resources Quick reference

TL;DR

  • wappler-install.json - a small JSON file at the root of an extension Git repo that describes which files to copy where and what to do after (restart Wappler, env vars, designer steps, etc.).
  • Extension Installer - pick Server Connect / App Connect / both, choose an extension (or paste any public GitHub URL), enter your Wappler project path → get mkdir + git clone + cp scripts to run locally.
  • Manifest Builder - create a valid wappler-install.json in your browser and download it for your repo.
  • Mr Cheese extensions on GitHub already ship this file; the installer fetches it automatically (with a fallback if a repo doesn’t have one yet).

Your README stays the human guide. The manifest is for tools.


The problem

Many community extensions (including ours) are distributed like this:

  1. Clone or download from GitHub
  2. Copy files into extensions/, lib/modules/, public/, etc.
  3. Restart Wappler

Install steps live in README prose - great for reading, awkward for tooling.

Every author writes slightly different cp instructions. Install wizards can’t help without duplicating that data somewhere else - and it drifts out of date when files move.

wappler-install.json is our answer: one machine-readable file, versioned with the extension, that any compatible tool can read.

This is a community proposal (de facto standard), not an official Wappler format - though we’d be delighted if the platform team found it useful.


For Wappler users - Extension Installer

URL: mrcheese.co.uk/extensions/install

What it does

Runs entirely in your browser. It does not write to your machine - it generates terminal commands you review and run.

Typical flow

  1. Choose layer - Server Connect, App Connect, or Both (e.g. PuSH-IT needs both).
  2. Pick extension - Mr Cheese catalog, or Custom GitHub repo with any public clone URL.
  3. Optional - path to an already-cloned repo (skips git clone).
  4. Enable “Use wappler-install.json from the repository” (on by default) - the wizard fetches the manifest from GitHub.
  5. Enter your Wappler project path - the Node project root (app/, lib/, extensions/).
  6. Step 4 - Commands:
    • Create folders - mkdir -p script (copyable)
    • After copy - designer / env / restart notes from the manifest
    • Run in terminal - full git clone + cp script (copyable)

A status line tells you whether install data came from the repo manifest or the bundled catalog (fallback).

What you still do manually

  • Run the script in your terminal
  • Set env vars in Wappler (VAPID, API keys, etc.) - the manifest only points you to the README
  • Designer steps (e.g. add Browser component for Redirect-IT)
  • Quit Wappler completely and restart

For extension authors - wappler-install.json

What it is

Filename wappler-install.json
Location Repository root (next to README.md)
Schema "schema": 1
Purpose Install automation - not runtime behaviour

What goes inside

{
  "schema": 1,
  "id": "redirect-it",
  "name": "Redirect-IT",
  "version": "1.0.1",
  "cloneDir": "Wappler-Redirect-IT-Extension",
  "serverConnect": {
    "directories": ["extensions/server_connect/modules", "lib/modules"],
    "copy": [
      { "src": "redirectit.js", "dest": "lib/modules/redirectit.js" }
    ],
    "notes": [
      "Quit Wappler completely and restart."
    ]
  }
}

Server Connect + App Connect in one file? Yes. Use both serverConnect and appConnect sections (see PuSH-IT on GitHub). Install tools merge them when the user picks “Both”.

Live example (raw JSON on GitHub)

Fetch URL pattern tools use:

https://raw.githubusercontent.com/{owner}/{repo}/main/wappler-install.json

What it is not

  • Not a replacement for package.json or Project Updater / npm flows
  • Not a Wappler IDE registration format - you still wire App Connect via Updater or project.json where needed
  • Not a place for secrets - only env var names in notes, never values

Manifest Builder

URL: mrcheese.co.uk/extensions/manifest-builder

Free browser wizard for authors:

  1. Extension identity (name, id slug, version)
  2. Layers (Server / App / both)
  3. Copy map - with shortcuts (e.g. “add Server Connect module files”)
  4. Post-install notes - with snippets (restart Wappler, env vars, Browser component, npm)
  5. Preview & export - validate, copy JSON, download wappler-install.json

Commit the file to your repo root. Mention it in your README Installation section. Done.

JSON Schema (for validators / IDEs): mrcheese.co.uk/data/wappler-install.schema.json


Glossary

Term Meaning
Git-born extension Distributed via public Git repo + manual file copy (vs npm-only or marketplace).
wappler-install.json Standard install manifest file (schema v1).
Install manifest Machine-readable copy map + folders + post-install notes.
Extension Installer Mr Cheese wizard that generates mkdir / clone / cp scripts for end users.
Manifest Builder Mr Cheese wizard that helps authors create wappler-install.json.
serverConnect section Copy paths for HJSON steps, lib/modules/, routes hooks, etc.
appConnect section Copy paths for components, public/js, public/css, service workers.
Bundled catalog Fallback install data on mrcheese.co.uk when a repo has no manifest or fetch fails.
Schema v1 Current manifest version ("schema": 1). Breaking changes would increment this.

Mr Cheese extensions using this today

All listed on mrcheese.co.uk/extensions. Each repo root includes wappler-install.json + README install section.

Extension GitHub Manifest
PuSH-IT Wappler-PuSH-IT-Extension Server + App Connect
Redirect-IT Wappler-Redirect-IT-Extension Server Connect
ClickSend SMS Wappler-ClickSend-SMS-Extension Server Connect
Cache Machine Wappler-Cache-Machine-Extension Server Connect
Wap-Lastic Wap-Lastic-Wappler-Elastic-Search-Extension Server Connect
Generate Auth Code Wappler-Generate-Auth-Code-Extension Server Connect

Try the installer with PuSH-IT and Both selected - you’ll see both copy maps and notes pulled from one manifest file.


Note for the Wappler team

A short note for @George @patrick @Teodor and extensibility folks - feel free to skip if you’re here to install extensions.

Context

Wappler’s documented distribution paths include npm + wappler-extension + Project Updater (especially App Connect). Many community extensions - including Mr Cheese’s - also ship as flat Git repos with README cp instructions for Server Connect modules, routes hooks, and manual App Connect file drops.

There is no shared, tool-readable install metadata for that Git path today.

What we’re proposing

A minimal, optional convention:

  • One file: wappler-install.json at repo root
  • Schema v1: copy[] (src → dest), directories[], notes[], optional serverConnect / appConnect sections
  • Tool-agnostic: any client can fetch from GitHub raw and generate install scripts

We are not asking Wappler to implement this in core - we’ve dogfooded it on mrcheese.co.uk. If the team ever wanted to:

  • Document it alongside custom extensions
  • Add IDE / Updater hooks to read install manifests
  • Or standardise a filename / schema officially

…we’d be happy to collaborate. The JSON Schema lives in Wappler-Git-Extension-Manifest-Standard on GitHub.

Gaps we’re not claiming to solve

  • IDE extension registration (.wappler/project.json, component picker)
  • PHP Server Connect layouts (schema v1 is Node-oriented; PHP could be a future schema: 2 section)
  • Replacing npm publish workflows

Why we built it

  • Single source of truth - install paths live in the repo that ships the files
  • Less README drift - tools read JSON; README covers env vars, examples, troubleshooting
  • Community-friendly - any Git-born author can adopt without Mr Cheese approval

Links & resources

Specification (this standard)

Resource URL
GitHub repo Wappler-Git-Extension-Manifest-Standard
JSON Schema (v1) wappler-install.schema.json

Mr Cheese (live tools)

Resource URL
Extension catalog mrcheese.co.uk/extensions
Extension Installer mrcheese.co.uk/extensions/install
Manifest Builder mrcheese.co.uk/extensions/manifest-builder

We’re proud of this - and we hope it helps

Honestly: watching this go from “can we generate a bash script?” to a reusable convention other authors can adopt has been one of the most satisfying side-projects we’ve shipped for the Wappler ecosystem.

It’s free, browser-based, and doesn’t lock you in - if you never use the tools, a wappler-install.json in your repo still documents install paths clearly for humans and future tooling.

If you try the Installer or Manifest Builder, or add a manifest to your own extension repo, we’d love to hear how it went - what’s confusing, what’s missing, whether the Wappler team sees value in something like this longer term.

Thanks for reading and any consideration and feedback!

Full documentation and outline is available here:

1 Like

Maybe too much to read for some? Personally I thought it was very cool.

Put simply there is no Extension installer for Git hosted Extensions. I've had dozens of people ask how to install them. This makes it easy. If you host Git Extensions it makes it easy for your Users too. Point to your Project. Copy/run two commands. Installed.

:zipper_mouth_face:

1 Like

Or you could just use npm and use the official installer :grin:

Ooouuchh...

I'm good thanks Brian.

I had to think before I replied @Hyperbytes as I really don't want to offend.

This is my take. No doubt I enjoy being here. No doubt I like helping other Users of Wappler. No question sometimes I like to do things differently. Sometimes I get things wrong, so no doubt about that either. But then so do we all. My intentions however are pure.

I want to expand the Wappler 'eco-system'. I'd like to see it grow in to other areas. It's why I have pretty much used Linux since around 2001 when I attended the Linux Expo in London to showcase gaming on Linux and set challenges for attendees there to get games like CounterStrike to run on Linux (I was next to Debian as an Exhibitor and provided the only free open Internet at that event with fifteen desktops running multiple different Operating Systems that those Users were welcome to format and do what they liked with in the aim of getting games to run on Linux). I didn't want to be another Windows User. I didn't want to use Windows. We broke away from it over twenty years ago. So that is the mentality I have. I do not want to depend on one thing. I like options. Git is an option and a damn good one for sharing Extensions and it has been overlooked. Even well seasoned Wappler User's are unsure how to install Extensions. Some are a little scared by it. Yes we have documentation but that is besides the point. Yes we have the native ability to install Extensions. But still some are wary of installing Extensions despite this. I don't want them to be scared (or funneled in to a single option to install them). I want them to see how easy and advantageous it can be. It is not witchcraft. Hence the point of my attempt to greatly simplify it. Not only that I want to simplify the process for others that may also select to start creating Extensions, in a uniformed and simple manner, so they too can share their endeavors. Git is a lot more open and easy to access than NPM. More Users are happy using Git and are aware how to push/pull a repo. NPM not so. So there is yet another reason. I could reel of another twenty reasons. My suggestion for this standard is not for my own benefit! It came about as I wanted to make it simple. As straight forward as that. I'm not after adoration or applause. Feedback is nice and I love to hear it.

Or you could just use npm and use the official installer

I am perfectly aware of that. I did release Extensions to NPM initially. Fact is I don't want to use NPM nor be forced in to using it. Nor do others here. I built the above after lots of feedback. If you don't want to use it, or others don't want to use it, then don't. If the Team find it interesting then great, if they don't then so be it. I'm really not bothered at all. But sniping remarks like that really do frustrate me I'll be brutally honest. All said and done I'm not here to offend anyone. I am here to help and expand Wappler and trying to encourage others to do the same.

So there is my consensus on the matter. Out in the wild. Take it or leave it.

:pensive_face:

Sorry, didnt mean to offend, the comment was meant tongue in cheek (hence the grin emoji)

I didn't mean to let rip on you Brian. The thing is people take our comments seriously even if they are made in jest sometimes, so my bad going off on one. The sentiment remains though. Wappler is great but right now with AI and everything else infringing upon its ground those of us that love the product need to really push to improve it, along with the Team. There were comments about the Community slowing down as many were turning to AI to resolve issues and build out entire applications. This is very apparent and visible based on the activity we see these days. Thus we need everybody who can add to Wappler to begin to add to Wappler. This is a massive factor in my recent efforts to do just that. Also to alleviate some of the cost incurred with developing the solutions 'our' Extensions provide. I'd had a lot of feedback personally from Users saying they tried to do the same thing using Claude or Chat GPT and run up massive inference costs with no reward and ended up with a pile of bloat and still no end result they can use. So us developing Extensions really does help in that regard, as well as in saving time (and other factors too). This is why I would like to see expansion in to these solutions. More Community effort (no pressure on anyone though). If 'we' can do it so can anyone with some spare time. Hence making the process just a little bit easier goes a long way to inducing further activity. Or at least I'd hope to think that. I just got triggered is all. It doesn't happen often. I sincerely apologise if I made it far too personal. Its just how I feel about it. I've no idea what Wappler 8 is going to bring to the table but it needs to be really good. The ground is shifting towards Agent based builds. But there will be a rebound and Wappler needs to be in the position to smack the ball back the other side of the court. Growing the Extension offerings can really push things forwards. That is how I feel about it.

Nothing but love for you Brian. Like I said. I apologise for taking it out on you.

:heart:

No need to apologise cheese, i should know humour doesn't always work in a written sense.
As to AI, i use standalone Gemini and co-pilot a lot in writing extensions. I never use the Wappler inbuilt AI (don't even have it set up currently) and would never try to build a full app using it. Tried it a few times and was really unhappy with the code.

With you on extensions. I intend to do a Wappler 8 course and want to "weave" a number of extensions into the build to show how they can make a difficult task really simple. People seem frightened of them or lack trust in their robustness and longevity.

I confess, i do not always choose to respond to help questions when the issue is obviously fixing AI code when the user doesn't understand what it has produced. That's not learning to use Wappler in my opinion.

Cant cut corners if you don't know where the corners are!

I entirely concur with that. Bit like taking the car to BMW and trying to claim on warranty for the massive turbos and exhaust you bolted on it causing the engine to blow. Not forgetting the oversize fluffy dice blocking your view which made you hit a roundabout and bus shelter...

:joy:

Indeed. Explains why a lot of people go round in circles.

:face_with_hand_over_mouth:

I have tested this extension by installing it using Wappler's Extension Manager. A one click installation that automatically includes all that is required to start using the extension.

1 Like