50 ForgeBox Modules of the Week from 2020 Modernize or Die® CFML News Podcast
ForgeBox is the NPM of the ColdFusion world, and with CommandBox, CFML's CLI, you can easily add new functionality to your project with a simple `box install packageName`.
We dedicate a portion of our CFML News Podcast to ForgeBox Modules. We had approximately 50 episodes in 2020, each with a ForgeBox Module, so we wanted to give you a way to see all of them in one place, so here they are.
1/7/20 Wkhtmltopdf - A CFML (Coldbox) wkhtmltopdf wrapper
By Samuel Knowlton
After years of wrestling with cfdocument from Adobe and Lucee, we centralized our "convert this to PDF" functions using a wkhtmltopdf Docker container based on this repository:
All this module does is provide a friendly interface to the API for that service. This module does not contain the wkhtmltopdf utility or do any conversion by itself. You must be running wkhtmltopdf as a service for this module to do any good.
box install wkhtmltopdf
Last Update: Jan 04 2020 03:45 PM | Installs: 5 | Views: 70 | Versions: 1
1/14/20 - smmrize - v1.0.1
By Matthew Clemente
A CFML wrapper for the SMMRY API. Utilize the SMMRY API to summarize articles, text, PDFs, etc. by extracting the most important sentences.
The API can summarize either web-based content or text, via the web() and text() methods, respectively. Both these functions take an optional, second argument, which contains the settings for your summarization. The easiest way to provide these is via the helpers.options component, which provides a fluent interface for setting them.
box install smmrize
1/21/20 str by Eric Peterson
A collection of string helper functions
box install str
Last Update: Feb 04 2019 10:27 AM | Installs: 3,265 | Views: 901 | Versions: 4
1/28/20 CFIPAPI by Jordan Clark
IpApi.co ColdFusion Rest API Client
ipapi.co provides a REST API to find the location of an IP address.
Specifically, you can get the following information for any IP address:
city, region , country , continent, postal code, latitude, longitude, timezone, utc_offset, european union (EU) membership, country calling code, currency, languages spoken, asn and organization.
The API can also help you to find the public IP address of a device.
$ box install cfipapi
2/4/20 - CFML Challenge APP
A CFML learning app for mastering CFML through a suite of challenges written in BDD. It is a ColdBox app that houses the CFML Challenge Module, a module built with CFML Challenge tests for you to test your CFML Skills. As the CFML Challenge Module is updated, this app will present you with more challenges for you to master CFML.
This app was built as on a Live Stream by Gavin Pickin and Michael Born, as a learning tool, and a way for listeners of the Modernize or Die CFML News Podcast to participate in the monthly challenge.
Install the app, `box server start` and start your challenge today.
box install cfmlchallenge-app
2/11/20 - CommandBox Console Pretty
Simple module to draw bordered message boxes to the console (Supports emoji!!)
ConsolePretty is a threadsafe singleton and suitable for injection.
Accepts String or array of strings to print inside the box. Word wrapping is on by default. If an array of strings, each item in the array will be a separate line (hint: even empty strings ). Can use some emojis (depending on terminal shell support )
box install ConsolePretty
2/18/20 - Quick Tailwind Inertia Template v1.0.0
Quick Tailwind Inertia Template
Get started building a real application with Quick, cbauth, and cbguard. Power up your front end using Inertia.js, Vue, and Tailwind CSS.
Each application templates contains a box.json so it can leverage CommandBox for its dependencies
box install cbtemplate-quick-tailwind-inertia
2/25/20 - CBYaml by Eric Peterson
Provides easy serialization and deserialization of yaml files
There is only one component provided by cbyaml, the Parser component. You can inject it using the Parser@cbyaml mapping.
There are four methods on the Parser:
function serialize( required any content );
function serializeToFile( required any content, required string path );
function deserialize( required string content );
function deserializeFile( required string path );
box install cbyaml
3/3/20 - SafeBrowsing by Sean Daniels
Service object for interacting with Google SafeBrowsing Lookup v4 API.
The module creates a mapping for ThreatMatches@safebrowsing which has the following methods:
checkURLs(required array urls) returns a struct of data from the API describing any issues in the URLs submitted
isThreat(required string url) returns true if the URL is problematic for any reason, false if it's "safe"
To use add your Google API_KEY to the module settings in Coldbox.cfc:
box install safebrowsing
3/10/20 - RedirectBack by Eric Peterson
Caches the last request in the flash scope to give easy redirects back
Uses the ColdBox's flash storage to store the last request. If there is no last request, redirects to "" (empty string).
box install redirectBack
3/17/2020 - commandbox-stackChecker by Gavin Pickin
CommandBox Task Runner that allows you to check your local docker compose against your portainer stack file and your .env.example
Run the CheckStack function to verify and validate the Stack file in Portainer vs the Compose file in the repo and the env variables in the .env.example file.
Run the CheckStack function to verify and validate the Stack file in Portainer vs the Compose file in the repo and the env variables in the .env.example file.
Run the putStack function to update Stack file in Portainer with the Compose file in the repo. This auto updates the service.
box install commandbox-stackChecker
3/24/2020 - whoops by Eric Peterson
Recent Contributions by Scott Steinbeck
Interactive debugger for exceptions in CFML
Blatantly copied from https://filp.github.io/whoops/ (Thank you!)
box install whoops --saveDev
3/31/2020 - CFBarcode4J by Travis Peters
Wrapper around Barbecue - a Java barcode printing library.
Can return a cfimage or write it to the browser
box install CFBarcode4J
4/7/2020 - Commandbox - Site Opener - By Dan Card
A Simple Module to open and start existing sites easily without having to remember locations or change
Usage: type `siteopener Open` and push tab. A list of the sites which have been created will appear as options. Enter the one you want to use. Site opener will CD into the folder, determine if it is running or not, and then either "server start" or "server open"
box install commandbox-siteopener
4/14/2020 - ColdBox Cross Site Request Forgery (CSRF) Tokens v2.0.1+24
A module that protects you against CSRF attacks by generating unique FORM/client tokens and providing your ColdBox application with new functions for verifying these tokens.
Even though every CFML engine offers these functions natively, we have expanded them and have made them more flexible and more secure than the native CFML functions.
- Ability to generate security tokens based on your session
- Automatic token rotation when leveraging cbauth login and logout operations
- Ability to on-demand rotate all security tokens for specific users
- Leverages cbStorages to store your tokens in CacheBox, which can be easily distributed and clustered
- Ability to create multiple tokens via unique reference keys
- Auto-verification interceptor that will verify all non-GET operations to ensure a security token is passed via rc or headers
- Auto-sensing of integration testing so the verifier can allow testing calls
- Token automatic rotation on specific time periods for enhance security
- Helpers to automatically generate hidden fields for the token
- Automatic generation endpoint that can be used for Ajax applications to request tokens for users
box install cbcsrf
4/21/20 cfml-compiler by Pete Freitag ( Foundeo )
CommandBox command to compile CFML
Suppose now that you are building a docker container, or a CFML Lambda Function you don't need the source files, and you will eliminate the time it takes Lucee to compile your CFML on the first request.
4/28/20 - Commandbox-EnvFile by Dan Card
This module is a wrapper for the propertyFile functionality built into CommandBox but exclusively on creating, modifying and displaying .env files.
box install commandbox-envfile
envfile show - Accepts a folder and a filename and displays the contents in the CLI
envfile set - Accepts and name and a value and adds it to the local .env file. Alternately accepts a folder and filename to receive the addition. Gives the option to create the file if it does not exist which can be bypassed with the --force flag.
envfile get - Accepts a name and displays the value of it if it exists.
envfile PopulateFromExample - Accepts the name of a file (defaults to .env) and an example (defaults to .env.example) and then loops through the example and asks the user for a value for each item in the example which is then written to the target file.
5/5/20 appStartupReporter by Gavin Pickin
Reports App Startup information to Sentry
This module determines various pieces of information from your app, and reports this to Sentry. You need to install the sentry module and configure ColdBox in order for this module to work.
How does it work?
This module checks your app code for helper files or the OS itself to determine several pieces of information, and then reports that information to Sentry when the app starts up.
When does it run?
The interceptor runs AfterConfigurationLoad, and reports to Sentry based on your ColdBox Sentry settings.
What information does it report
- App Version
- ColdBox Environment
- Server Hostname
- Box.json file content
- Box Dependencies ( like running box list from the CLI )
5/12/20 ColdBox Debugger v2.0.0
This module will enhance your application with debugger capabilities, a nice debugging panel and much more to make your ColdBox application development nicer, funer and greater! Yes, funer is a word!
This will activate the debugger in your application and render out at the end of a request.
Version 2 shipped with:
Dropped ACF 11 support
5/19/20 BCrypt v2.5.0+25 (MODULES) by Ortus Solutions
A ColdBox module for BCrypt. Creates cryptographically strong (and slow) password hashes.
box install BCrypt
BCrypt's primary usage would be for the secure hashing of passwords. The hashing method provides a high level of security, but also makes it too slow use as a simple digest. It is also not reversible, and therefore is not suitable for encrypting transmission data.
More information about BCrypt:
5/26/20 Quick Commands by Eric Peterson
CommandBox Module that helps you Create a Quick entity. Table name, attributes, and relationships can also be defined.
6/2/20 Fixinator by Pete Freitag Foundeo
Fixinator makes it easy to find and fix security vulnerabilities in your CFML / ColdFusion source code.
Created and supported by the CFML Security Expert Pete Freitag, as one of the many great security products available by Foundeo.
- Auto Fix
- Known Vulnerabilities
- Continuous Integration
- Vulnerable Code
- Backdoor Detection
6/9/20 CommandBox Banner Hack by Matthew Clemente
Created in one of Matthews live streams a few weeks back.
The CommandBox Banner Hack module allows you to customize the version, quote, and welcome message seen in the CommandBox startup banner.
Why would you want to do this?
The initial use case was a presentation - I wanted my demos and screenshots to display custom banner text in the CLI. I think a more likely reason for using this module is: "Just for fun."
box install commandbox-banner-hack
Run any of the following commands to hack your banner text. Be sure to run reload to see the updated banner.
6/23/20 Lucee Performance Analyzer - Lucee Extension by Zac Spitzer
Performance Analyzer plugin for Lucee, to be used in the Lucee admin.
Install via Applications page in your Lucee Administrator. It's best to install under the Web Administrator, once this bug/patch against Lucee is merged, you will be able to install the plugin once at the Server level and then access the plugin from all web contexts.
You will need to enable debugging and configure a debug template in order to capture debug logs for this plugin to work.
Summary of top variable Scoping problems
Summary of slowest sql queries
6/30/20 UTrust CFML by Gary Stanton
Utrust CFML provides a wrapper for the Utrust crypto payments API.
Obtain an API key from https://utrust.com/.
Check out the Utrust API documentation here: https://docs.api.utrust.com/.
Example: Check out the /examples folder for an example order and response.
The Utrust CFML wrapper consists of two models. The stores model is a singleton, used to create your order. The webhook model is a transient used to process the payload returned by the Utrust order callback.
The wrapper may be used standalone, or as a ColdBox module.
7/7/20 Stripe CFML by John Berquist
stripe-cfml is a CFML (Lucee and ColdFusion) library for interacting with the Stripe API.
stripe-cfml is modeled after the official Stripe SDKs. In particular it copies the class and method names used in the Node SDK. The Node examples given in the official Stripe documentation are simply able to be copied and used (with the notable difference that this library does not make use of callbacks - everything is done synchronously). However, since CFML supports named arguments, you can also use named arguments instead of passing the arguments in a single struct.
box install stripecfml
7/14/20 Lucee Spreadsheet
Spreadsheet library for Lucee (and Adobe ColdFusion)
Originally adapted from the https://github.com/teamcfadvance/cfspreadsheet-railo extension, this is a standalone library for reading, creating and formatting spreadsheets in Lucee Server which does not require installation as an extension. It can also be used with Adobe ColdFusion.
Unlike Adobe ColdFusion, Lucee doesn't support spreadsheet functionality out of the box. An extension exists for Lucee, but I decided to create a standalone library which doesn't depend on customisation of the engine.
Note that this is not a Lucee extension, so does not need to be installed. To use it, simply copy the files/folders to a location where Spreadsheet.cfc can be called by your application code.
- No installation required, either at the server or individual web context level.
- read() method offers all the features of the <cfspreadsheet action="read"> tag in script in addition to the basic options of SpreadsheetRead().
- Offers a number of additional functions and options (see below)
- Fixes various outstanding bugs/omissions.
- No dependency on Lucee within the included jar files.
- Invoking the library doesn't create a workbook instance (a.k.a. Spreadsheet Object), meaning:
- a blank workbook isn't created unnecessarily when reading an existing spreadsheet
- the library can be stored as a singleton in application scope
- Also works with Adobe ColdFusion (see below)
- Written entirely in CFML script.
7/21/20 Cfml-weighted-round-robin by Matthew Clemente
This module provides a round-robin algorithm for rotating elements according to differing weights, instead of evenly. It was inspired by the npm package weighted-round-robin, and uses the same logic for its algorithm.
box install weightedroundrobin
7/28/20 CodeChecker CLI by Ortus Solutions
A CLI wrapper for the CodeChecker project. This CLI bundles the CodeChecker core libraries for use in the command line.
To start a code review against your code, run this command:
box install commandbox-codechecker
8/4/20 RabbitSDK by Brad Wood & Ortus Solutions
RabbitMQ is an open-source message-broker software that originally implemented the Advanced Message Queuing Protocol and has since been extended with a plug-in architecture to support Streaming Text Oriented Messaging Protocol, MQ Telemetry Transport, and other protocols.
This library is a wrapper for CFML/ColdFusion apps to be able to interact with RabbitMQ via the Java SDK.
box install rabbitsdk
8/11/20 Bookmarks for CommandBox by Adam Euans
Bookmarks allow you to bookmark directories for easy navigation.
List bookmarks - list existing bookmarks
CommandBox> bookmark list
Add bookmark - add a new bookmark
CommandBox> bookmark add [name] [path]
CommandBox> bookmark add 'Home'
Delete bookmark - delete an existing bookmark
CommandBox> bookmark delete [name] [path]
CommandBox> bookmark delete 'Home'
Goto bookmark - go to a bookmarked path
CommandBox> bookmark goto name
CommandBox> goto <name>
8/18/20 CB Breadcrumb by Gary Stanton
Automatically generate breadcrumb data and HTML in your ColdBox application, using the Routing table.
An instance of CB Breadcrumb is automatically added to each request and is available in the private request context.
You may display breadcrumb HTML in your layout with a single line of code: #prc.cbbreadcrumb.getBreadcrumbHTML()#
The default HTML format uses Bootstrap 4 syntax, though you may override the function if necessary.
box install CBBreadcrumb
8/25/20 Adobe ColdFusion Engine
You can use one of 62 version of Adobe ColdFusion from CommandBox - with the server start command. From CF9, 10, 11, 2016, 2018, and the next version, CF2020 or Project Stratus
box server start cfengine=adobe
To use the new Adobe ColdFusion Beta, start your server with this command
box server start email@example.com
9/1/20 Galleries for Preside
This extension allows you to configure photo galleries in your Preside application, and display them in the front end.
box install preside-ext-galleries
9/15/20 logstash by Ortus Solutions
This module provides a common interface for sending Logstash logs to elasticsearch. The module may be used with either a direct connection to an Elasticsearch server or may be installed as a client-only module, which connects to a separate instance running this module as a microservice.
box install logstash
9/22/20 Semver by Seth Boland
SEMVER A custom module that allows updating the version of a package and committing to git repo.
semver prerelease <string>
semver init <version>
9/29/20 Dupify by Michael Born
A simple CommandBox module to generate many copies of a file.
Useful for generating large quantities of images/PDFs/documents/etc for testing purposes.
Save 300 copies of my profile photo to the current directory: dupify 300 profile.jpg
Save 3 resume copies to my desktop: dupify 3 resume.pdf /home/michael/Desktop
Box install dupify --system
10/6/20 S3 Explorer by Ortus Solutions
A module to help you browse your S3 buckets in the browser.
10/13/20 OSGi bundle installer/loader for Lucee
By Julian Halliwell
A simple tool for installing OSGi bundles dynamically in Lucee Server (NB: version 5+ only)
This CFML component allows java libraries that have been packaged as OSGi bundles to be easily installed dynamically in Lucee 5+, avoiding the need to manually deploy them in your Lucee server before they can be used.
You can use it to load a class directly from a given local bundle without worrying about whether the bundle has been installed.
10/20/2020 CommandBox Git protect
By Seb Duggan
As of CommandBox 5.1.0, box install in a project will overwrite any package (e.g. a Preside extension) where the current version does not match the installed version number - including downgrades.
This means that if your project has an extension which is a Git repo, which may likely have a placeholder such as VERSION_NUMBER which gets populated by a build script, it will always get overwritten, which is not ideal.
This module adds protection against this: if the existing package is a Git repo, it will never be overwritten.
box install commandbox-git-protect
10/27/20 JSoup by Don Bellamy
Just drop into your modules folder or use CommandBox to install
11/3/2020 Elixir APP Template by Ortus Solutions
This advanced template leverages ColdBox and the (ColdBox Elixir)[https://github.com/ColdBox/elixir] project for asset management and compilations. You can place all your static assets in the resources/assets folder and Elixir will combine, version, copy, and even babelify your code to their appropriate location in the includes folder.
Please check out the ColdBox Elixir documentation for further information: https://github.com/ColdBox/elixir/wiki
box install cbtemplate-elixir
11/10/2020 Eversigncfc by Matthew Clemente
A CFML wrapper for the Eversign API. Use it to create, send, and track legally binding e-signature documents.
Feel free to use the issue tracker to report bugs or suggest improvements!
This project borrows heavily from the API frameworks built by jcberquist. Thanks to John for all the inspiration!
Created during live streams
11/19/20 Amazon S3 SDK Explorer
New UI bootstrap 4 plus bug fixes. I plan on using it in ContentBox to allow us to transport files. I want to hook into ContentBox to give users permission for their folders etc.and a common shared folder.
11/24/20 Orm Reload Interceptor by Eric Peterson
ORMReload with a URL flag - Just like you can add fwreinit=my_passsword to the URL to reload your ColdBox application, this module adds an interceptor that lets you specify ormreload=my_orm_reload_password.
The interceptor will work out of the box with no password set.
f you want to set the reload password, override the interceptor in your config/Coldbox.cfc settings
ORMReload on FWReinit - Installing this module will also automatically call ormReload() on a fwreinit (?fwreinit=1). You can override this setting by overriding the interceptor in your config/Coldbox.cfc settings, as well
box install orm-reload-interceptor
12/1/20 CommandBox CFC to Markdown Docs by Matthew Clemente
A CommandBox custom command to generate markdown documentation from your CFCs.
You will need CommandBox installed to use this tool. If you're a CFML developer not using CommandBox, see my note on the bottom.
From within the terminal, simply run the following command to install the module.
box install commandbox-cfc-to-markdown-docs
Once the module is installed, it uses the command: markdowndoc or the alias mdd.
Youtube Livestream: https://www.youtube.com/watch?v=R25ULWBwx6A
12/8/20 twiliolookupcfc by Matthew Clemente
A CFML wrapper for the Twilio Lookup API. Use Twilio's Lookup API to retrieve information about phone numbers, including region-specific formatting, carrier information, and caller name.
To get started with the Twilio Lookup API, you'll need your Twilio account SID and your auth token. You can find your account SID and auth token in your console.
box install twiliolookupcfc
12/15/20 The ColdBox Paginator
This module builds the pagination struct for API responses and custom data tables.
This module has several functions, two most commonly used below.
Generate returns the pagination struct according to the total records.
If page and maxRows parameters are not passed in, it will use the default values.
GenerateWithResults returns the same pagination struct as the above along with the results
You can convert your results to be a resultsMap by setting asResultsMap to true
In addition you can set a name for your results key by passing in the resultsKeyName value as a parameter. By default this key is called results
box install cbpaginator
12/22/20 commandbox-bookmarks by Adam Euans
Bookmarks allow you to bookmark directories for easy navigation.
`box install commandbox-bookmarks`
Get more ForgeBox Modules / Packages every week on our Podcast
Listen on the web or on your favorite podcast player
Subscribe on YouTube
Add Your Comment