Skip to content
TarekyDocs
Console

The style Studio

The Studio is the console’s editor for custom styles. Open Styles, then a style. It edits the style as MapLibre JSON, with a form for every property, so what you draw is what the API serves.

The style Studio: the layer list, the map preview and the properties panelThe style Studio: the layer list, the map preview and the properties panel
  • A new style starts from a template, an imported file, or the simple colour editor.
  • The simple editor (managed styles: colours, labels and a few switches) has Open in the full editor. It copies the style into a new one, with every layer editable, and leaves the original as it is. The copy counts against your plan’s number of styles.

New style opens the gallery. Everything in a template can be edited.

Template What it is
Light, Dark The daytime and night basemaps
Satellite hybrid Sentinel-2 imagery with borders and place and road names
Navigation day, Navigation night Wide roads and big names, no buildings or landcover
Minimal Roads, water and city names only: a quiet backdrop for your own data
Outdoors Sand, rock and marshes, relief shading, peaks, borders and paths. The 3D relief appears where elevation data is served
Traffic first A quiet map with live traffic on the roads. Needs a key with traffic access
  • Left: Layers, Sources, Style, Colours, Icons and Fonts. The + button adds a layer.
  • Centre: the live map. Inspect turns on the data inspector, and the readout shows zoom, bearing and pitch. When the style has design tokens, a Light / Dark switch previews both.
  • Right: Properties of the selected layer, Inspect, History, Comments, Share and Usage.

On a phone the panes are three tabs along the bottom: Layers, Map, Properties. The bar on top has the name, the save state, who else is in the style, undo and redo, export, the style’s settings (public or private, and its URLs) and Publish.

The list shows the top of the map first. Search it, show or hide a layer, duplicate it, delete it, or move it by dragging or with Alt + Up / Down. A layer with a problem is marked, and Publish stays off until it is fixed.

+ adds a layer by type (background, fill, line, symbol, circle, fill-extrusion, raster, hillshade, heatmap, color-relief) on a source and source-layer of your style. Or open the Ready-made groups tab, the layer catalog: every layer of the basemap’s tiles that the standard map does not draw. A group goes where its kind belongs in the draw order, uses the basemap’s colours, and adding it twice does nothing.

Group Draws
Land use Residential, commercial and industrial areas, schools, hospitals, cemeteries, pitches
Sand, rock and wetland The Western Desert and the southern marshes
Airports Runways, taxiways and aprons
Railways Railway and metro lines above ground
Paths and footways Footways, cycleways and steps
Ferries Ferry routes over rivers and the Gulf
Administrative boundaries Country borders (disputed ones dashed) and governorate borders
Country and governorate names Names at small scales
Villages, neighbourhoods and islands Names below town level
Water names Lakes, bays and rivers
Park names Parks and reserves
Points of interest Small dots with names, most important first
Mountain peaks Names with their height in metres
House numbers At the closest zoom
3D buildings Buildings extruded to their height when the map is pitched
Live traffic Needs a key with traffic access; not drawn in static maps
Air quality Circles by index, 1 to 5; not drawn in static maps
Hillshade Relief shading, where elevation data is served

The property forms are generated from the MapLibre style specification, so every layer type has every paint and layout property, with the right control (colour, number with its range and unit, choice, switch, list), its default, and whether it may change with zoom or with data. Search them, show only the ones you set, and reset one to its default.

Layer filters, minzoom and maxzoom are on the same panel. The source-layer of the basemap source is picked from its TileJSON.

Next to every property that can vary is an expression button. It opens two tabs:

  • Visual builds the value from forms. It offers only what the property allows:
    • a constant;
    • a curve over zoom or over a feature field: interpolate (linear, exponential with a base, or cubic-bezier; colours also in rgb, hcl or lab) or step, with a stop list and a live preview of the curve;
    • match: a field’s values to values, with a fallback;
    • case: conditions to values, with a fallback;
    • coalesce: the first of several fields or values that exists.
  • Code holds the JSON itself and checks it with the style spec’s own validator as you type, with the message at the error.
["interpolate", ["linear"], ["zoom"], 10, 1, 16, 6]

A value the forms cannot express opens on Code and is never rewritten. The filter builder works the same way: rows of field operator value with ==, !=, in, !in, >, >=, <, <=, has and !has, joined by all or any, with one level of nesting.

The Colours tab holds named colours, each with a light and a dark value. A name is letters, digits, _, . and -, up to 40 characters. Pick a token from any colour property and the editor writes token(name) there. When the style has tokens, the map has a Light / Dark switch that previews either set, and the tab shows where each token is used.

token(name) exists only inside the editor. The saved draft, the published style and the export carry the light literal colours, so there is one set of colours in what the API serves. The tokens and their dark values stay in the draft’s metadata["tareky:tokens"], and the references come back when you reopen it. For a dark map, keep a second style.

Sources lists the style’s sources with their type, URL and how many layers draw each. Add offers the names our servers answer, tareky://basemap, tareky://satellite, tareky://terrain, tareky://traffic and tareky://aqi, and each of your vector tilesets. A source that layers use cannot be removed.

Inspect is the data inspector. Turn it on and click the map: for each feature under the click you get its layer, its source and source-layer, and every property. Open layer jumps to the layer that draws it.

The Style tab sets the opening camera (Use the map’s position), the projection (mercator or globe) and the 3D scene:

  • 3D terrain: a switch, the elevation source (a raster-dem source) and the exaggeration, 0 to 5.
  • Light: anchor (viewport or map), intensity 0 to 1 and colour.
  • Sky: sky, horizon and fog colours and their blends.

Static maps and raster tiles do not draw terrain, sky or projection: see custom styles.

  • Autosave: the draft is saved 800 ms after your last change, one save at a time. Undo and redo are Ctrl/Cmd + Z and Ctrl/Cmd + Shift + Z (or Ctrl/Cmd + Y).
  • Revision: every save carries the revision it was made from. If the draft moved since you opened it (another tab, a teammate), the API refuses the save with 409 stale_revision, the bar says so, and Publish is off. Nothing is overwritten, and nothing is merged: reload, and redo what you need.
  • Someone else saved or published: the bar names them and offers Reload. Your editor keeps its own draft until you reload.
  • A save checks only the style’s size. Layer problems show in the editor, and Publish checks everything.

Publish checks the whole style (the spec, our rules, the fonts and tilesets you name), draws a test image with our renderer, and makes a numbered version, with an optional note of up to 200 characters. Maps load the published version. A style that fails is refused with the reasons (style_invalid, style_unrenderable).

The History tab lists the versions, newest first:

  • Compare with draft shows what changed, by layer: added, removed, moved and, for the rest, which property changed from what to what, then sources and style-wide keys. Layers are matched by id, so adding one does not mark every layer below it.
  • Restore as draft copies a version into the draft. The published version does not change. It bumps the revision, so an editor with the old one open is told.
  • Roll back to it makes a version the live one and leaves the draft as it is.

The Share tab makes a read-only link to the draft, for someone with no access to your console: a client, a designer. Choose how long it lasts (1 hour, 1 day, 1 week or 1 month; never more than 30 days) and add a note. You can have 10 live links per style, revoke any at once, and see how many times each was opened.

GET https://api.tareky.com/v1/styles/preview/{token}

The answer is the draft as a MapLibre style, so any map can load it. It needs no key and is not billed.

style: 'https://api.tareky.com/v1/styles/preview/tsl_…'
  • A link that is unknown, expired or revoked, a deleted style, or a draft that is not valid right now all answer 404, with no way to tell which.
  • It never has live traffic or your own icons (icons are built when you publish), and it draws only your organisation’s built tilesets.
  • It is not cached, because a draft changes.

The Comments tab holds notes on the whole style or on the selected layer, up to 2,000 characters each and 500 a style. Anyone who can view the style can comment. Editors resolve and reopen them. You delete your own, and editors delete any.

Avatars on the bar show who else has the style open and on which layer (hover to see it, click to jump to it). A person drops off 30 seconds after their editor stops answering (a hidden tab stops answering).

The Usage tab shows which keys loaded the style in the last 7, 30 or 90 days: per key, the loads of the style JSON and the maps drawn from it (static maps and raster tiles), and per day. Counting starts from when the Studio shipped, a deleted key stays in the list as revoked, and a style opened through a share link is not counted, since it has no key. Use it to check that nothing depends on a style before you change or delete it.

Import takes a style file in the Styles list.

  • A MapLibre style is used as it is and checked against our rules.
  • A Mapbox style you own is converted, and a report tells you what changed before anything is created. We never fetch anything from Mapbox: its tiles, sprites and fonts are not ours to use, so import only styles you own.
Converted Dropped, and said in the report
Mapbox vector tiles become our basemap, and layer names are remapped to its layers (a best effort: field values such as class may need adjusting) Sources on a server of their own, or without inline data, and the layers that drew them (upload the data as a tileset)
Mapbox satellite becomes our satellite Icons from the Mapbox sprite (upload your own); the layers that used them are listed
Inline GeoJSON is kept fog, terrain, lights, models, camera and featuresets
Fonts become Noto Sans with Arabic (bold if the name looks bold) Layer types we do not support (3D models, slots, clips, particles)
name, center, zoom, bearing, pitch, transition; globe or mercator projection Properties MapLibre does not know, and values the style spec rejects
Mapbox Standard styles (built from imports): export a classic style instead

Export (the bar’s download button) saves the document as you edit it: JSON, with literal colours and the tareky:// names. Importing it again works as it is.

The numbers come from your plan. An organisation gets the best of its apps’ plans, and never less than the free plan’s:

Free plan
Styles 2
One style’s size 1 MB
Layers in a style 300
Icons in a style 64
Fonts 3

Tilesets have their own limits. A style that is over a limit is refused when you save it (size) or publish it (all of them), with the number.

Action Role
Open styles, history, comments, usage; comment everyone in the organisation (styles.view)
Edit the draft; icons, fonts and share links; create, import, duplicate and delete styles; resolve comments owner, admin, developer (styles.manage)
Publish, roll back and restore a version owner and admin (styles.publish)

The server enforces this: a developer who tries to publish gets 403 role_forbidden. Billing members can open styles and comment, not edit them.