castomUI
Open castomUI

Datasets and content

Content that repeats belongs in a dataset.

Products, team members, locations, courses, case notes — anything with a shape that repeats should be entered once, as records, and shown wherever it is needed. castomUI's datasets give that content a structure, a form to edit it, views to present it and pages that generate themselves from it.

A dataset,
from the top.

Create a dataset with a name, a description, a group and a driver: MongoDB or MySQL, whichever suits the data.

Define its structure as a list of fields you drag into order. Every field can be mandatory, translatable, placed in a group, and given a default, a placeholder and a description that explains to the person filling it in what belongs there.

From that structure castomUI builds the rest. Records are browsed in a data table, and added or edited through a generated form — the same idea as a block's settings form, applied to data. Each dataset also has a preview HTML template, so a record can be seen as it will look rather than as a row of cells.

Dataset "Courses"Illustration
  • 1TitleSimple text · mandatory · translatable
  • 2DescriptionWYSIWYG editor · translatable
  • 3StartsDate and time · mandatory
  • 4CoverImage · from the media library
  • 5TeacherDataset data → "Teachers"
  • ·LevelOption: beginner, intermediate, advanced. Default: beginner.

Invented datasetThe form builds itself

Twenty-three field types.

Enough to describe real content without resorting to "put it in the notes field":

Text: simple text, longer text, URL, and a WYSIWYG editor for formatted copy.
Numbers: number, integer and float.
Time: date, time, date and time, month and week.
Media: image, media file and media video, all picked from the media library.
Choices: yes/no, on/off switch, option and multiple options.
Site-aware: colour, menu, language, and dataset data — a relation to a record in another dataset.

That last one is what turns separate lists into a model. A course points at its teacher; a product points at its category; a location points at the people who work there. Change the teacher's photo once and every course that references them shows the new one.

One structure.
As many pages as there are records.

From records to pages

Views,
and pages that follow the data.

Views

A view decides how a dataset is presented: which fields, their properties, the order, and the filters. "Upcoming courses, soonest first, beginners only" is a view. Pages connect to views, not to raw tables, so the same data can appear three different ways without being copied.

Dataset pages

Connect a page to a view and it becomes a template page that generates one page per record. Design the product page once; every product gets one. Add a record and its page exists. The page tree marks these pages so nobody mistakes one for an ordinary page.

Data you already have,
left where it is.

Not every site starts from an empty dataset. External sources connect castomUI to an existing database with its address, login and key:

MongoDB and MySQL directly, or either of them through castomoConnector. And OlgroupPanel, an existing e-commerce and CMS panel, so a shop's catalogue can drive a new front end without a migration.

The point is to avoid the export–import loop that leaves two copies of the truth, one of them always a week old.

Online stores

External sourcesIllustration
  • 1MongoDBDirect connection · address, login, key.
  • 2MySQL via castomoConnectorSame database, connected through the connector.
  • 3OlgroupPanelExisting shop panel · products into a view.
  • ·ThenA page on that view — one page per product.

Invented setupNo second copy of the data

Smaller content

The values that are not worth a dataset.

Global variables

Reusable, typed data available anywhere in the project: the phone number, the VAT note, the opening hours, the year in the footer. Defined once in project settings, used in blocks and templates, changed in one place.

Dictionaries and phrases

Named keys with default text and a dictionary per language, edited inline. Templates use them for interface strings — "Read more", "Add to basket", "Next" — so a multilingual site does not ship its buttons in the wrong language.

When to reach for a dataset.

If you are about to build the third page that looks exactly like the second with different words, stop and make a dataset. If a list will be edited by someone who should not be arranging blocks, make a dataset. If the content lives somewhere already, connect it rather than retyping it.

If it is a single paragraph that appears once, it is a block. Not everything needs a schema, and a site with a dataset for its one "About us" page is a site somebody enjoyed building more than anyone will enjoy maintaining.

A thing people learn late: tick "translatable" when you create the field, not when the second language arrives. Nobody has ever regretted doing it early, and several people have spent an afternoon regretting it the other way round.

Every window,
one website.

Open the editor and arrange them the way the job needs.

Open castomUI See pricing

Illustrations by GetIllustrations.com (Ghost pack).