Skip to content
On this page

Glossary ​

Terms you'll hear in meetings, PRs, and bug reports. Alphabetical.

Builder ​

The visual editor at admin.storeino.world/theme-builder/. A Vue 3 SPA where the merchant drags sections onto pages, edits their fields and styles, and saves. The "builder" is the app, not the theme.

config ​

The JSON document that defines a theme's content + appearance. Stored on the theme record under theme.config. Has four important keys for souk: templates, tokens, global, settings.

config.global ​

Holds the chrome rendered on every page: config.global.header, config.global.footer. Each is a single section instance, not an array.

config.templates ​

The per-page section lists. Keys: home, shop, product, cart, wishlist, blog, post, collections, collection, thanks, account, error, page. Each is an array of section instances.

config.tokens ​

A flat object of merchant-tunable design values: primary, accent, surface, fontHeading, radiusLg, etc. Becomes CSS variables on :root. See Tokens & Tailwind classes.

Customizer (legacy) ​

The old in-admin editor for non-souk themes (marketmall, argan, bazar). Not relevant for souk-theme work. If you hear "the Customizer" in a meeting, it's about a legacy theme.

Descendant selector ​

A useStyles mode where the generated CSS targets descendants instead of the element itself. Lets one style entry cover N repeating items (cards, list rows) without binding to each one. See Composables reference.

Element key / styleKey ​

A named scope inside a section that the merchant can recolor independently — like title, card, primaryCta. Declared in manifest.styleKeys, consumed by useStyles(key, ...) in the component.

iframe ​

The storefront preview the merchant sees inside the builder. It's a real iframe loading the merchant's actual storefront (e.g. https://fixpro.storeino.world/?builder=true&...). Patches flow from the builder to the iframe via postMessage.

Locale map ​

The storage shape for a translatable field: { en: "Sale", fr: "Soldes", ar: "تخفيضات" }. Always read via useT() — never index by language code directly.

Manifest ​

The manifest.json file in every section folder. Declares the section's title, icon, schema (editable fields), defaults, and styleKeys. The single source of truth for what the builder shows.

Manifest index ​

public/sections/manifest-index.json — a concatenated list of every section manifest. The builder fetches this once to populate its section library. Regenerated by npm run manifest (auto-invoked by dev/build).

Pages (templates) ​

The set of named templates the storefront supports: home, shop, product, cart, wishlist, blog, post, collections, collection, thanks, account, error, page. Each section's manifest.pages declares which it can be dropped on (use ["any"] for universal sections).

Patch ​

A single PATCH operation sent from the builder to the iframe via postMessage. Examples: set a value, insert a section, remove a section, move a section. The iframe applies the patch to its Pinia store and the storefront re-renders. You won't write patches yourself — the builder UI does.

Section instance ​

One placement of a section on a page, with its filled-in values. Stored in MongoDB as { id, type, values }. The page is just an array of instances.

Section type ​

The "class" of a section — the folder + manifest + Vue component. One per components/sections/<TypeName>/. Instances are derived from types.

souk-theme ​

The Nuxt 3 storefront codebase you're working on. The modern, builder-driven storefront. Sibling: legacy themes (marketmall, etc.) — different architecture, not relevant.

Storefront ​

The live, shopper-facing site at <subdomain>.storeino.world (or the merchant's custom domain). Renders souk-theme with the merchant's saved config.

Theme document ​

The MongoDB record (themes collection) that holds one merchant's theme: _id, storeId, name, isActive, and the giant config object. Edited by the builder, read by the storefront.

theme-manager ​

An Express proxy on port 7070 that fronts every storefront. Looks up the store by subdomain, mints a THEMES-source token, caches it for 120s, and forwards requests to the souk-theme Nuxt server on port 7000. You shouldn't need to touch it — but knowing it exists explains why the storefront has auth context.

Token ​

A merchant-tunable design value (color, font, radius, etc.) stored on config.tokens and emitted as a CSS variable (--token-<key>) on :root. Drives the Tailwind utility classes (bg-primary, text-ink, rounded-lg).

Translatable field ​

A schema field marked "translatable": true. The merchant can write a different value per locale. Stored as a locale map. Always read via useT().

useEditable ​

Composable that makes a text node click-to-edit when the storefront is in builder mode. Wraps the element in contenteditable and sends EDIT patches on blur. See Composables reference.

useStyles ​

Composable that takes a styleKey + the section's styles config and returns the CSS class + data-element-key attribute to bind. The mechanism by which merchant style edits land on the rendered element.

useT ​

Composable that resolves a translatable value to a string in the active language. Use on every translatable field.

Released under the MIT License.