How Tattoo Designer builds projects, synchronizes 0r-tattoo_exports, and reloads generated exports
This guide covers the current publishing flow.
Publishing a project#
When an authorized designer builds a project, the Studio UI may save a dirty draft before calling the export operation. The server export operation itself requires an existing saved-project UUID and rejects an unsaved project.
The resource then:
- Exports the selected visible text and image layers by body zone.
- Generates preview PNG and ZIP output and uploads them through the configured storage provider.
- Updates the project cache and saved-project record.
- Rebuilds the aggregate 0r-tattoo_exports resource from published projects.
The aggregate resource contains generated overlay XML, shop_tattoo.meta, texture dictionaries, and build metadata. Published projects become Tattoo Shop presets after the export resource is loaded.
Applying a design does not create a saved project automatically. Save the project explicitly before exporting or publishing it.
Stable keys and revisions#
Each published project has a stable export key such as tat_0001. A rebuild keeps that key and increments its export revision. Generated collection, overlay, texture, and file names include the revision so connected clients do not retain obsolete streamed assets.
The export revision is separate from the Template Images CDN catalog version. Export revisions invalidate FiveM streamed project assets; catalog versions identify immutable template releases and change whenever catalog metadata, an image, a thumbnail, or a checksum changes.
Renaming a saved project preserves its saved-project UUID and export key, but updates only the saved-project record and active draft. It does not rebuild the published project manifest or aggregate export. Rebuild the project when its published catalog name must change.
Deleting a project requests aggregate synchronization and removes its published files from the prepared output. The saved-project deletion can be committed even when generated aggregate cleanup needs a later retry; verify the synchronization result before treating the operation as fully complete.
Deleting a saved project does not delete a Template Images CDN catalog. CDN catalog releases are managed separately and should be removed only after traffic has moved to a verified newer version.
Export Reload#
Build and delete prepare aggregate files, but FiveM must read the generated resource files before clients can use them. A rename alone does not change published output. Export Reload first synchronizes the aggregate export internally and then runs:
stop 0r-tattoo_exports
refresh
ensure 0r-tattoo_exports
The aggregate synchronization is a Tattoo Designer internal operation, not a FiveM console command. Do not run a sync 0r-tattoo_exports command in the server console.
Grant command.stop, command.refresh, command.ensure, and command.start to resource.0r-tattoo_designer for this action. FiveM's ensure command calls start internally, so the resource needs both permissions. See Installation for the permission block and Troubleshooting for active permission checks and startup timeout errors. Grant command.restart only when you also restart an appearance provider.
If 0r-tattoo_designer is restarted while a client is connected, close and relaunch the FiveM client before testing custom overlays again. This is an environment-level validation precaution, not a replacement for Export Reload.
Fast validation loop#
- Create or update a saved project in the Studio.
- Build the selected body zones.
- Wait for the UI to report that activation is pending.
- Run Export Reload.
- Open the Tattoo Shop and verify that the published project is available to an authorized artist or professional customer flow.
- Verify that tattoos apply without missing collection, preset, texture, or native-zone errors.
Full restart#
A full server restart also loads the prepared aggregate resource. It is a final environment validation that the generated resource starts cleanly without a separate reload action.
Template catalog delivery requirements#
Template Images are read from a remote catalog. The delivered customer resources do not upload, delete, or publish catalog releases. The vendor catalog is maintained by 0Resmon. If you use custom catalog mode, the CDN owner must publish and maintain the catalog separately from the FiveM resource.
A custom catalog must expose a versioned public metadata manifest such as:
- catalogs//catalog.json
- catalogs//release.json
- assets/sha256/...
- thumbnails/sha256/...
The URLs must be readable by the NUI over HTTPS with the expected MIME types and CORS headers. Configure the versioned CatalogUrl and CDN-root AssetBaseUrl and ThumbnailBaseUrl in private.lua. Keep the catalog, asset, and thumbnail metadata on one immutable version; publish a new version instead of overwriting an active one.
If you are using the vendor catalog, no catalog upload or CDN action is required. Custom catalog publication and CDN maintenance are handled separately from the delivered FiveM resources.