Documentation & User Guide

How BBase.pro Works

A complete guide to using BBase.pro — from navigating the app and managing data, to building reports, writing formula fields, setting up automations, and customising page layouts. Everything runs without code.

Getting Started

Overview

BBase.pro lets you store, view, edit, and report on your business data through a set of custom tables, pages, and reports — all accessible from the sidebar navigation. No spreadsheets, no code, no developer required.

Every app you build in BBase.pro is isolated and purpose-built for your organisation. You control what data is stored, how it is displayed, who can access it, and what automated actions occur when records change.

What you can do in BBase.pro

  • Browse and search data in configurable report tables
  • Open individual records on custom pages to view or edit full detail
  • Create new records using the Add Record button on any table
  • Export any report to a CSV file for use in Excel or Google Sheets
  • Generate formatted Word (.docx) or PDF documents from any record
  • Run automated actions when records are created or updated
  • Control exactly what each team member can see and edit via permissions
Note on formula fields: Any field labelled with a formula icon is calculated automatically — you cannot type into it directly. Its value updates whenever the record is saved.

Working with Data

Viewing Records

Records are displayed in report tables. From the Tables sidebar item, click Table or Summary next to any report to open it.

Report Table view

The table view shows all records in rows. Each column header can be clicked to sort. A search box under each column header lets you filter that column in real time. Scroll right to see additional columns.

Opening a single record

Click any row in the table to open that record's detail page where you can view and edit all its fields.

Tip: The column header row stays pinned at the top as you scroll down through a long report.

Summary view

The summary view groups records by one or more fields and shows totals or counts. Use the Summary button in any report toolbar to switch to this view.

Creating Records

New records are created from the Tables page. If a table has a default page assigned, an Add Record button will appear next to it.

  1. Open the Tables page from the sidebar.
  2. Find the table you want to add a record to.
  3. Click the Add Record button.
  4. Fill in the fields on the page that opens.
  5. Save the record using the save button on the page.
Note: Formula fields calculate automatically once the record is saved — you do not need to fill them in.

Editing Records

Most records can be edited directly by clicking on them in a report table, or by navigating to the record's page.

Inline editing in report tables

If a report is set to editable, you can click directly into a cell to change its value. The change is saved automatically when you move to another field.

Editing on a record page

  1. Open the record by clicking a row in the report table.
  2. Modify any editable fields on the page.
  3. Click Save to store your changes.
Note: Fields shown in grey or without an input box are read-only — either formula fields that calculate automatically, or fields your account does not have permission to edit.

Searching & Filtering

Every column in a report table has a search box directly below the column header. Type in any search box to filter the table to rows that match.

How filtering works

  • Searching is not case-sensitive.
  • You can filter multiple columns at once — all active filters apply together.
  • Clear a search box to remove that filter.
  • The table updates in real time as you type.
Tip: To find all records where a field is blank, type nothing and press Enter — or ask your admin to set a report filter.

Pre-set report filters

Admins can pre-configure reports to only show certain records — for example, only open items, or only records assigned to you. These filters are set in Report Settings and are always active for that report.

Where filters can be used

LocationField nameWhat it does
Report Settings Filter Permanently restricts which records the report shows. Applied before any column search the user types.
Automation — Record Updated trigger Formula The automation only fires when this condition is true for the record that was just updated. Leave blank to fire on every update.
Automation — Search Records step Filter Limits which records are returned by the search. Only records matching the filter are passed to the next step.
Automation — Search Records and Loop step Filter Limits which records are included in the loop. The automation runs once for each matching record.

Filter string syntax

A filter string is made up of one or more conditions joined by and / or. Each condition has the form:

left_value operator right_value

Spaces between tokens are ignored. Use parentheses to control grouping when mixing and and or.

Referencing fields

Wrap a field name in square brackets to reference a column from the report's table:

[field_name]

To reference a field from a related table, use table.field notation inside the brackets:

[table_name.field_name]

Value types

TypeSyntaxExample
Field reference[field_name][status]
Text string"text" (double quotes)"Open"
NumberInteger, optionally negative42, -5
BooleanTrue or FalseTrue
Empty / nullNoneNone
Relative dateToday() / Now()Today(-7,Days)

Operators

OperatorMeaningNotes
=EqualsWhen the right side is None or "", checks that the field is empty/null
!=Not equalsWhen the right side is None or "", checks that the field is not empty/null
>Greater thanWorks on numbers and dates
<Less thanWorks on numbers and dates
>=Greater than or equal
<=Less than or equal
inContainsChecks whether the field contains the given text (substring match)

Combining conditions

KeywordMeaning
andBoth conditions must be true
orEither condition must be true
( )Group conditions to control evaluation order

Relative date functions

Use Today() and Now() as dynamic date values. These evaluate at the time the report loads, so the filter always reflects the current date.

FunctionReturns
Today()Today's date (no time component)
Today(offset, Unit)Today's date shifted by the given offset — positive moves forward, negative moves back
Now()The current date and time
Now(offset, Unit)The current datetime shifted by the given offset

Supported units: Day, Days, Week, Weeks, Hour, Hours, Minute, Minutes, Second, Seconds.

Examples

Filter stringWhat it shows
[status]="Open"Records where status is exactly "Open"
[status]!=""Records where status is not empty
[priority]>=2Records where priority is 2 or higher
[name] in "smith"Records where name contains "smith"
[status]="Open" and [priority]>=2Open records with priority 2 or higher
[status]="Open" or [status]="In Progress"Records that are open or in progress
([status]="Open" or [status]="In Progress") and [priority]>=2Open or in-progress records with priority 2 or higher
[due_date]<Today()Overdue records (due date before today)
[due_date]>Today(-7,Days)Records with a due date within the last 7 days
[due_date]<Today(14,Days)Records due within the next 14 days
[created_at]>Now(-1,Hour)Records created in the last hour

Reports

Using Reports

Reports are pre-configured views of a table. Each report shows a specific set of columns, sorted and filtered as configured by an admin.

Report toolbar buttons

Button What it does
SettingsOpens the report configuration (admin only).
TableSwitches to the row-by-row table view.
SummarySwitches to the grouped summary view with totals.
Create CSVGenerates a CSV export of the current report data.
Download CSVDownloads the most recently generated CSV file.
Tip: Always click Create CSV first to refresh the export file, then Download CSV to get the latest data.

Exporting to CSV

Any report can be exported as a CSV (comma-separated values) file, which can be opened in Excel, Google Sheets, or any spreadsheet application.

  1. Open the report you want to export.
  2. Click Create CSV to generate an up-to-date export file.
  3. Once it finishes, click Download CSV to save the file to your computer.
  4. Open the downloaded file in Excel or your preferred application.
Note: The CSV includes all rows matching the report's current filters — not just what is visible on screen if you have searched within the table.

Formula Fields

About Formula Fields

Formula fields are fields whose values are calculated automatically based on other fields in the same record. You cannot type into them — the system fills them in when a record is saved.

Example: A TotalPrice formula field might calculate [Quantity] * [UnitPrice] automatically whenever either of those fields changes.

Referencing field names

To reference another field in the same record, wrap its name in square brackets:

[Quantity] * [UnitPrice]

If [Quantity] = 3 and [UnitPrice] = 25, the formula returns 75.

Important: Field names must always be surrounded by square brackets — [FieldName]. Without brackets the system will not recognise the reference as a field.

Blank values

If a referenced field is blank, arithmetic operators skip it gracefully rather than producing an error. Division by zero also returns blank instead of crashing.

Formula Operators

Operators perform arithmetic calculations or comparisons between values:

Operator Description Example Result
+Add numbers[field1] + [field2]5 + 10 = 15
-Subtract numbers[field1] - [field2]10 - 5 = 5
*Multiply numbers[field1] * [field2]5 * 2 = 10
/Divide numbers[field1] / [field2]10 / 2 = 5
>=Greater than or equal[field1] >= [field2]True if 10 ≥ 5
<=Less than or equal[field1] <= [field2]True if 5 ≤ 10
>Greater than[field1] > [field2]True if 10 > 5
<Less than[field1] < [field2]True if 5 < 10
=Equal to[field1] = [field2]True if same value
&Join text strings"Hello" & " " & "World"Hello World
Note: Arithmetic operators skip blank or empty values automatically. Division by zero returns blank rather than an error.

Formula Functions

Functions transform or evaluate values in a formula:

Function Description Example Result
IF(condition, true, false)Returns one value if condition is true, another if falseIF([field1] > 10, "High", "Low")"High"
CONCAT(a, b, ...)Joins multiple values into one stringCONCAT("A", "B", "C")"ABC"
ROUND(x, decimals)Rounds a number to the specified decimal placesROUND(3.14159, 2)3.14
INT(x)Converts a value to a whole number (integer)INT("5")5
STR(x)Converts a number or value to textSTR(5)"5"
LEFT(text, n)Returns the first n characters of textLEFT("Apple", 2)"Ap"
RIGHT(text, n)Returns the last n characters of textRIGHT("Apple", 3)"ple"
CONTAINS(text, search)Returns True if the search value is found in textCONTAINS("Hello", "ell")True
DATEFORMAT(date, format)Formats a date field using a format stringDATEFORMAT([field1], "%b %Y")"Oct 2025"
JOIN(list, separator)Joins a list of values with a separator stringJOIN(["A","B"], "-")"A-B"
Chained IF — testing multiple conditions: List additional condition/value pairs inside the same IF() call:
IF([field1] > 10, "High", [field1] > 5, "Medium", "Low")
Returns "High" if [field1] > 10, "Medium" if > 5, otherwise "Low".

Date Format Codes

Use these codes inside a DATEFORMAT() call to control how dates are displayed:

Code Meaning Example output
%Y4-digit year2025
%y2-digit year25
%mMonth as a 2-digit number10
%BFull month nameOctober
%bAbbreviated month nameOct
%dDay of the month (2 digits)05
%AFull weekday nameMonday
%aAbbreviated weekday nameMon
%HHour (24-hour clock)14
%IHour (12-hour clock)02
%MMinutes30
%pAM or PMPM
Example: DATEFORMAT([InvoiceDate], "%B %d, %Y")October 05, 2025

Example Formulas

Goal Formula Result
Multiply two fields[Quantity] * [UnitPrice]3 * 25 = 75
Add two fields[field1] + [field2]5 + 10 = 15
Combine first and last name[FirstName] & " " & [LastName]"John Doe"
Format a dateDATEFORMAT([InvoiceDate], "%b %d, %Y")"Oct 05, 2025"
Conditional labelIF([Amount] > 100, "Large", "Small")"Large"
Three-way conditionalIF([Score] >= 90, "A", [Score] >= 70, "B", "C")"B"
Round to 2 decimal placesROUND([TotalPrice], 2)19.99
Check if a field contains textCONTAINS([Notes], "urgent")True
First 3 characters of a fieldLEFT([ProductCode], 3)"SKU"
Convert a number to textSTR([RecordID])"42"

Other Features

Document Templates

Document templates let you generate a formatted Word (.docx) or PDF document directly from a record's data. An admin sets up the template; users then generate documents from individual records with a single click.

Generating a document

  1. Open the record you want to generate a document for.
  2. Find the document link or button on the record page (set up by your admin).
  3. Click it to generate and download the document immediately.

Output formats

FormatUse when…
.docxYou need to edit the document further in Microsoft Word.
.pdfYou need a fixed, print-ready document to send or archive.
For admins: Templates are uploaded in Table Settings → Document Templates. Use Jinja2 variable syntax — e.g. {{ FieldName }} — to insert field values, and Jinja2 conditionals for dynamic content.

User Permissions

Permissions control what each user can see and do in the app. Permissions are set by an admin and stored on each user account.

Permission levels

Permission What it unlocks
adminFull access: create and modify tables, fields, reports, pages, automations, and manage all users.
(custom)Admins may define custom permission keys on specific tables and reports to restrict which users can view or edit them.

What happens without access

  • Admin-only sidebar items (Pages, Automations, Users) will not appear.
  • Tables and reports without permission will not be visible.
  • Fields that cannot be edited appear as read-only.
Need access to something? Contact your administrator to have the appropriate permission added to your account.

Editing Page Layouts

Admins can customise which fields appear on a record page, how they are arranged into columns and sections, and how wide each field is displayed. All layout changes are saved immediately.

Entering edit mode

  1. Open any record page.
  2. Click the Edit Page button in the top-right corner of the page panel.
  3. A yellow toolbar appears and each field gains a grey drag handle at the top. Click Done Editing to leave edit mode.

Adding a field

  1. In the yellow toolbar, open the Add field dropdown and select the field you want to add.
  2. Click Add Field. The field appears at the top of the first column immediately.
  3. Only fields not already on the page are shown in the dropdown.

Removing a field

Click the × button on the right side of a field's grey drag handle. The field is removed from the page immediately. This does not delete the field or its data — it only removes it from this page layout.

Reordering and moving fields

Grab a field's grey drag handle and drag it to one of these drop targets:

Drop targetResult
Another fieldInserts the dragged field directly above the target field.
Empty space in a columnMoves the dragged field to the bottom of that column.
+ New column zone (dashed box at the right of a section)Creates a new column in that section and places the field in it.
Drop here to create a new section zone (below all sections)Creates a new section at the bottom of the page and places the field there.
Tip: If you move the last field out of a column, the empty column is removed automatically. The same applies to empty sections.

Controlling field width

Each drag handle includes a small width input. Enter any CSS width value to constrain how wide the field appears:

ValueEffect
200pxFixed pixel width — the field is exactly 200 pixels wide.
50%Percentage of the column width.
(blank)No constraint — the field fills its column naturally.
Tip: Fields are left-aligned within their column, so setting a narrower width leaves whitespace to the right rather than centring the field.

Interfaces

About Interfaces

Interfaces are purpose-built panels that go beyond the standard record table. Where a regular table lets you view, create, and edit general-purpose records, an interface provides a specialised layout and set of actions tailored to a specific workflow — such as generating machine output files, processing designs, or managing a production queue.

How interfaces differ from standard tables

  • Custom layout — the screen is divided into a sidebar list and a detail panel rather than a standard row-and-column table.
  • Workflow actions — interfaces expose buttons and controls specific to the task, such as generating files or triggering a background process.
  • Live status — the interface can display real-time progress for long-running operations without needing a page refresh.
  • Linked data — each interface is connected to an existing table in your app and reads or writes fields in that table directly.

Accessing an interface

Interfaces appear in the sidebar navigation alongside your regular tables and reports. Click an interface item to open it. The interface loads its list of records from the linked table automatically.

Note: Interfaces are configured by an admin who maps each control in the interface to a specific field in the underlying table. If a section or control is missing, ask your admin to check the interface configuration.

GCode Interface

The GCode interface manages CNC carving designs. It reads a PNG image stored against a record, converts it into a GCode machine-instruction file, and reports back an estimated cutting time along with a visual preview of the cutting path.

Interface layout

  • Left sidebar — lists all designs. Each entry shows a thumbnail of the source image and the design name. Click any entry to open it in the detail panel.
  • Detail panel — shows the settings for the selected design, the generate button, status indicator, time estimate, and path preview.

Generating GCode

  1. Click a design in the left sidebar to select it.
  2. Review or adjust the settings in the detail panel (dimensions, bit, cut program, speed, and so on).
  3. Click Generate GCode. The button changes to show that generation is in progress.
  4. Wait for the status indicator to clear. Generation runs in the background — you can leave the page open and it will update automatically.
  5. Once complete, the estimated cut time and a path preview appear in the panel.
Note: Generation time depends on image size and the number of cutting passes configured. A complex design can take several minutes to process.

Design settings

The following settings control how the GCode is produced. All values are saved back to the underlying record when you generate.

SettingWhat it controls
NameThe display name of this design, shown in the sidebar list.
Width / Height / DepthPhysical dimensions of the carve area in the units your machine uses. Depth is the maximum carving depth.
BitThe cutting bit configuration used for this design. Determines point size, speed range, and depth limits.
Cut ProgramThe raster pattern direction: left_right_raster moves the bit across the work horizontally; up_down_raster moves it vertically.
BackWhen set to y, the GCode is generated for the reverse (back) side of the piece.
Point SizeThe size of each pixel in machine units. Smaller values produce finer detail but longer run times.
Max Speed at Min DepthThe fastest the machine moves when cutting at its shallowest depth.
Min Speed at Max DepthThe slowest the machine moves when cutting at its deepest point.
Overlap PercentHow much adjacent passes overlap, expressed as a percentage. Higher values can smooth ridges between passes.
Skip Zero DepthWhen set to yes, pixels with a depth value of zero are not cut — the bit lifts and moves over them.
Bit Width Z CompensationA depth correction applied to compensate for the physical width of the cutting bit at a given depth.
Edge Run DepthIf set, an additional pass is made around the perimeter of the design at this depth.
Edge Run SpeedThe machine speed used during the edge run pass.
Vector Edge DepthDepth for a first vector edge clean-up pass that traces the design outline.
Vector Edge Depth 1Depth for a second vector edge pass at a different depth, used to create a two-level outline effect.
Smooth Vector EdgeWhen enabled, the vector edge path is smoothed before cutting to reduce jagged corners.
Design SmoothingA blur or smoothing filter applied to the depth image before generating passes, softening sharp transitions between depths.
Design Smooth PassesThe number of times the smoothing filter is applied. More passes produce a softer result.
Safe Move TypeControls how the machine lifts and travels between cut segments to avoid dragging the bit across the surface.
NotesFree-text notes about this design, stored with the record but not used in generation.

Cut time estimate

After a successful generation, the interface displays the estimated cut time broken down into hours, minutes, and seconds. This is calculated by summing the distances of all cutting moves in the GCode file and dividing by their respective feed rates.

Tip: Use the time estimate to compare the effect of different settings. Reducing the overlap percent or increasing the minimum speed will lower the estimated time; increasing design smoothing passes or adding vector edge passes will raise it.

Path preview

The path preview renders a top-down view of all the cutting moves in the generated GCode file. Moves are colour-coded by depth: shallower cuts appear lighter and deeper cuts appear darker. Use the preview to verify that the cutting pattern covers the design area as expected before loading the file onto the machine.

Todo Interface

The Todo interface is a task-management panel that presents records from a linked table as a checklist. Each item can carry a title, status, priority, due date, notes, tags, and optional sub-tasks. All changes are saved automatically — no Save button is needed.

Interface layout

  • Sort bar — buttons at the top let you re-order the list by Default order, Priority, Due Date, or Title. The active sort is highlighted.
  • Tag filter bar — if any items have tags, a filter bar appears. Click a tag to show only items carrying that tag; click Clear to remove the filter.
  • Item list — each task is a row showing a completion circle, status selector, title, priority badge, due-date badge, and tags. Click a row to expand its detail panel.
  • Quick-add bar — a sticky input at the bottom of the list lets you type a title and press Enter or click Add to create a new item instantly.

Completing an item

  1. Click the circle button on the left of any item.
  2. The circle turns green and the item title gains a strikethrough to indicate it is done.
  3. Click the green circle again to mark the item as incomplete.
Note: Completing an item records today's date in the completed-date field. If a Complete Status Value is configured, the status selector is also updated automatically.

Editing an item

Click anywhere on an item row (except the completion circle, status selector, or title text) to expand its detail panel. The panel exposes the following editable fields:

FieldHow to edit
TitleClick the title text to edit it inline. Press Enter or click away to save.
StatusUse the status dropdown on the item row to change the status. The change saves immediately.
TagsToggle the tag checkboxes in the expanded panel. The item's tag badges update instantly.
Due DatePick a date in the Due Date field. The due-date badge on the item row updates automatically and is colour-coded: overdue in red, today in amber, within 3 days in blue, further ahead in grey.
NotesClick the notes area and type freely. Changes save when you click away.

Sub-tasks

If the interface is configured to support sub-tasks, an expanded item panel includes a Sub-tasks section. Click Add Sub-task to append a new child item. Sub-tasks have their own completion circle and title, and can be reordered by dragging their handle.

Reordering items

When a drag-order field is configured, each item shows a drag handle on the left. Grab the handle and drag the item above or below another item to change its position. The new order is saved automatically. Touch drag is also supported on mobile devices.

Deleting an item

Click the trash icon on the right of any item row. You will be asked to confirm before the item is permanently deleted.

Configuration (admin)

A Todo interface is backed by a table in your app. An admin maps each feature to a field in that table via the interface configuration settings:

SettingWhat it controls
Title FieldThe field used as the item's display title. Editable inline on the item row.
Status FieldA dropdown field whose values become the status selector options.
Priority FieldA field whose value is shown as a coloured priority badge (High / Medium / Low or 1 / 2 / 3).
Due Date FieldA date field used to show the colour-coded due-date badge.
Completed Date FieldA date field that stores the date an item was completed. Drives the completion circle.
Complete Status ValueWhen an item is marked complete, the status field is automatically set to this value.
Notes FieldA text field shown in the expanded detail panel for free-form notes.
Tags FieldA comma-separated field whose values become the tag filter bar and tag badges.
Order FieldA numeric field used to persist drag-and-drop order. When set, items show a drag handle.
Parent FieldAn integer field that links a sub-task back to its parent item by record ID.
Quick setup: When creating a new Todo interface, use the Create with New Table option. This creates a pre-configured table with all the recommended fields and wires them to the interface automatically — no manual field mapping required.

Ready to build your custom app?

Every feature in this guide is available on the free plan — forever.
Need speed? Email [email protected] for a paid account.

Create Free App Learn More