Skip to content

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.

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.

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.

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.

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) and ILC.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.

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 Fishbowl
desktop 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.JS
Read 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.css
cloudpages.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 API
reference:
- ./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.

  1. Save the assistant’s output as a single .html file.
  2. Commit it to a repository CloudPages is configured to pull (see Configuration), or load it from a local folder while developing.
  3. Open it from the Available Pages list. Iterate: adjust the prompt, re-run, re-commit — the Page reloads the next time it is opened.