AI Development
A CloudPage is just an HTML file that reads Fishbowl data through the
fb_client bridge, so it is a natural fit for an AI coding assistant (Claude
Code, Cursor, Copilot, and similar). Point the assistant at the two ILC
JavaScript libraries below and describe the report or tool you want — the
libraries give the model a small, well-documented surface to target instead of
the raw bridge, so first-try results are far more reliable.
The two libraries
Section titled “The two libraries”ILC publishes two JavaScript libraries that assist CloudPage development — they take the repetitive work off the developer (and the AI assistant), so you describe the report instead of wiring the bridge, the parameter form, the query binding, and the export by hand. Neither is required to build a Page, but both sharply reduce development friction. They are available for evaluation and use with an active ILC subscription.
Cross-platform client for the fb_client bridge — queries, imports, REST and
legacy API, storage, and reporting. It abstracts the JxBrowser bridge behind an
adapter pattern, so the same page also runs in a plain browser (Web and Demo
adapters). Bundles fishbowl.js for CSV import and legacy-API request
building. Single-file and zero-dependency.
- Source: github.com/ilc-global/ILC.Fishbowl.JS
- CDN (stable):
https://cdn.ilcreports.com/fb/stable/fb.js
cloudpages.js
Section titled “cloudpages.js”Declarative report engine. Define parameters, SQL, columns, and settings in
<script> tags; the engine renders the parameter form, runs the parameterized
query, and shows a sortable, exportable table — no JavaScript to write. Requires
fb.js, jQuery 3.x, and DataTables 1.13+; SheetJS for XLSX export
and Bootstrap 5 for form styling. The CloudPages CDN hosts pinned builds of
these vendor libraries alongside the engine.
- Source: github.com/ilc-global/ILC.CloudPages.JS
- CDN (stable):
https://cdn.ilcreports.com/cloudpages/stable/cloudpages.js·https://cdn.ilcreports.com/cloudpages/stable/cloudpages.css
Each repository’s README.md and per-folder references (fb/, fishbowl/)
are written to be read by both people and models — point your assistant at the
raw repository first.
Give the assistant context
Section titled “Give the assistant context”Before prompting, make the libraries available to the model:
- Clone or reference the repos so the assistant can read the APIs:
ILC.Fishbowl.JS(fb.js / fishbowl.js) andILC.CloudPages.JS(cloudpages.js). - Share the reference docs it will need: Building Pages, Page metadata, and the Fishbowl Client Bridge.
- Use the Demo adapter to iterate without a live Fishbowl: fb.js runs against synthetic data in a plain browser, so the assistant can build and verify a page before you load it into the client.
Example prompt
Section titled “Example prompt”A concrete, scoped prompt works best. Both versions below build the same page — pick the one that matches how much context your assistant already has.
Version A — zero knowledge
The assistant has never seen the libraries. Point it at the repos and the CDN in the prompt itself so it can fetch and read them first.
You are building a CloudPage: a single HTML file that runs inside the Fishbowldesktop client and reads Fishbowl data through an injected `fb_client` bridge.
First, read these two ILC libraries so you know their APIs:- fb.js (database access + bridge): https://github.com/ilc-global/ILC.Fishbowl.JS- cloudpages.js (declarative report engine): https://github.com/ilc-global/ILC.CloudPages.JSRead each repo's README, and in ILC.CloudPages.JS the config format(settings / parameters / query / columns script blocks).
Load the libraries from the CDN stable aliases:- https://cdn.ilcreports.com/fb/stable/fb.js- https://cdn.ilcreports.com/cloudpages/stable/cloudpages.js- https://cdn.ilcreports.com/cloudpages/stable/cloudpages.csscloudpages.js also needs jQuery 3.x, DataTables 1.13+, and (for export) SheetJS.
Then build this report as a single-file CloudPage on the cloudpages.js engine:"Open Sales Orders by Customer".- Parameters: a Customer dropdown (SELECT id, name FROM customer WHERE activeFlag = 1) and a Date Issued range.- Query: sales orders for the selected customer in the date range — show SO number, order date, and total. Bind values with :paramName placeholders.- Format the total as currency and the date as a date.- Add fb_title and fb_path metadata so it lists under Reports:Sales.- Include a demo data block so it renders in a plain browser.
Output one complete HTML file.Version B — repos already cloned
You have already cloned ILC.Fishbowl.JS and ILC.CloudPages.JS into the
workspace (or added them to the assistant’s context). Skip the fetch step and
point at the local sources.
Build a single-file CloudPage using the ILC cloudpages.js declarative engine.
The library sources are already in this workspace — use them as the APIreference:- ./ILC.Fishbowl.JS (fb.js / fishbowl.js)- ./ILC.CloudPages.JS (cloudpages.js; see its README for the settings / parameters / query / columns config format)
Load the libraries from the CDN stable aliases at runtime:- https://cdn.ilcreports.com/fb/stable/fb.js- https://cdn.ilcreports.com/cloudpages/stable/cloudpages.js- https://cdn.ilcreports.com/cloudpages/stable/cloudpages.css
Report: "Open Sales Orders by Customer".- Parameters: a Customer dropdown (SELECT id, name FROM customer WHERE activeFlag = 1) and a Date Issued range.- Query: sales orders for the selected customer in the date range — show SO number, order date, and total. Bind values with :paramName placeholders.- Format the total as currency and the date as a date.- Add fb_title and fb_path metadata so it lists under Reports:Sales.- Include a demo data block so it renders in a plain browser.
Output one complete HTML file.For a custom tool with your own layout and logic, prompt against fb.js
directly (FB.query / FB.queryAsync, FB.importCSV, FB.legacyApi,
FB.saveFile) instead of the declarative engine.
Load your first Page
Section titled “Load your first Page”- Save the assistant’s output as a single
.htmlfile. - Commit it to a repository CloudPages is configured to pull (see Configuration), or load it from a local folder while developing.
- Open it from the Available Pages list. Iterate: adjust the prompt, re-run, re-commit — the Page reloads the next time it is opened.
See also
Section titled “See also”- Building Pages — page structure and the
fb_clientbridge - Fishbowl Client Bridge — the full
fb_clientAPI - Resources — HTML/CSS/JS tutorials and libraries