Packaging & Distributing Modules

Once your module works, you have two documented ways to get it into someone else's hands: share the source directly, or list it in the Epesi Store. This page covers what's actually documented about each — the Store submission process itself isn't, and that gap is called out below rather than guessed at.

What "packaged" means

A module is just its directory — everything under modules/Custom/YourModule/ (or modules/Premium/YourModule/ if you're publishing as a paid/premium module): the three core class files, any Recordset/RBO classes, and any templates you added under your theme's folder. There's no separate build or bundling step documented anywhere in this tutorial — the directory is the package.

Two files carry the metadata other people (and the Store) will see:

  • info() in your Install class — author, license, and description, "available in the epesi Main Setup." Fill this in accurately; it's your module's listing copy.
  • requires() in your Install class — the list of other modules and versions yours depends on, checked before install.

See Architecture Overview for where these fit in a module's structure.

Distributing via GitHub

This is the documented, low-friction path, and the one this tutorial's own Hello World example uses — its finished code is published at github.com/jtylek/HelloWorld for exactly this reason. Publish your module's directory as a repository, and anyone can download it and drop it into their own modules/ folder, then install it the normal way through Modules Administration & Store.

This works whether you're giving the module away free or not — Epesi's MIT license covers the framework itself and doesn't obligate you to open-source modules you build on top of it. ("Your custom designed applications built on top of Epesi BIM can be packaged and distributed as complete business application royalty free," per the homepage.)

Distributing via the Epesi Store

The Store is where users browse, license, and install modules from inside their own Epesi instance — see Store for that side of the flow, including free and paid ("Obtain license" / "Buy") listings. The tutorial's own framing is direct about this being a real commercial option: modules "can be shared with other users via GitHub repository or Epesi Store... you can distribute it for free or sell for a profit."

What isn't documented anywhere on this site is how a developer actually gets a module listed in the Store — no submission form, review process, revenue split, or packaging requirement beyond what's described above is written up. If you want to sell a module through the Store rather than distribute it yourself via GitHub, ask the Epesi team directly (via the community forum or support) rather than assuming a process from this page.

Versioning and upgrades

Bump your main class file's version suffix (YourModule_0.php_1, etc.) for breaking changes, and use Patch scripts to migrate data for existing installations when you release an update — patches run once, in filename date order, the first time an updated module is installed over an existing one.