Skip to content

Applet Store

Overview

The Applet Store is the platform screen where a signed-in user browses the applet catalogues their login has been granted and installs applets onto their own account. It is the screen every “install the X applet” instruction on this site points at.

Two things about it decide almost everything else on this page. First, installation is per user, not per tenant: each install writes one row linking your login to one applet in one catalogue, and the backend refuses an install submitted for anybody else’s login. Second, what you can see is decided elsewhere — a catalogue is public or private, and a private catalogue reaches you only because an administrator linked your login to it in the Tenant Admin Applet.

Its registry row is appletStore, name Applet Store, applet_type ROOT-USER, status ACTIVE. It has no settings of its own (see Configuration).

The store does not sell anything. There is no price, plan, tier, trial, order or payment anywhere in this applet’s code — no pricing field is requested from the API and none is rendered. The Terms of Use dialog it shows describes paid applets and Orders, and the platform database does carry edition/plugin pricing records against catalogue links, but no screen in this applet reads them. Treat any acquisition of a paid applet as an off-store commercial arrangement.

Where it fits

DirectionWhatWhy
UpstreamDeveloper SysAdmin AppletThe registry record it maintains is what the store lists — an applet’s name, icon, description, type, documentation URL and the module URL the shell loads. An applet the registry does not carry as ACTIVE never appears here.
UpstreamTenant Admin AppletBuilds catalogues, puts applets in them, and links a user’s login to a private catalogue. That link is the only reason a private catalogue appears on the Private tab. It can also bulk-install applets for other users in the tenant — the store cannot.
DownstreamThe platform launchpadAn installed applet becomes a tile on the launchpad; the store itself is reached from there.
AlongsideComplete Applet CatalogThe wiki’s own list of every applet that exists, generated from the same registry the store reads.

Screens and menus

Everything is mounted under applets/bigledger/akaun-platform/applet-store. There is no sidebar: navigation is the three-link bar at the top of the listing screens.

ScreenRouteState
Private catalogue listingcatalog-listing-privateWorking — this is the landing screen; an empty child path redirects here
Public catalogue listingcatalog-listingWorking
My Appletsmy-appletsWorking
Applet detailapplet-information/:guidWorking — :guid is the applet-to-catalogue link
Per-catalogue applet listapplet-listing/:guidLegacy — no link in any live template reaches it
Notificationsapplet-notificationsPlaceholder — a static card of repeated stock images, no data, not linked from anywhere
Subscriptionapplet-subscriptionBroken — reads a row object that is never populated and throws on load; not linked from anywhere

The Terms of Use gate

A guard runs before every screen in the store. It reads the signed-in user’s profile extensions and looks for a parameter whose code contains APPLET_STORE_TNC with a truthy numeric value. If it is there, you go straight through and never see the dialog again. If it is not, a full-height, non-dismissable dialog opens with the Akaun.com Marketplace Terms of Use, an I have read the terms and conditions checkbox, and Accept / Decline buttons. Accept is disabled until the checkbox is ticked. Accepting writes the acceptance to your user profile (see Lifecycle and effects); declining bounces you back to the launchpad.

Acceptance is recorded per login, not per tenant or per company. A new colleague sees the dialog on their first visit even though everyone else in the business has accepted.

The listing screens

All three listing screens render the same component, so they look alike:

  • A header bar reading Catalog, with links Public, Private and My Applets.
  • A Search for applets box. It filters the rows already loaded in the browser — it does not re-query the server. On the Public and My Applets tabs it matches the applet name; on the Private tab it matches the applet name or the catalogue name, after a short typing pause.
  • A grid of applet cards.
  • On the Public and Private tabs only, an Install All button. It is greyed out when every applet on screen is either already installed or blocked from installation.

The Public tab loads every public catalogue in one request and shows the applets as one flat grid, each card carrying its catalogue’s name. The same applet offered by the same tenant at the same rank is shown once even if it sits in two catalogues.

The Private tab loads one catalogue per request. Scrolling to the bottom — or pressing the Load More button below the grid — fetches the next one, so a user with many private catalogues reaches them a page at a time rather than all at once.

My Applets shows the heading My Installed Applets and lists what your login has installed. It has no Install All button and no uninstall control; uninstalling is done from the applet’s detail screen.

Below 500 px of viewport width the listings switch themselves to a dark theme. Above it they are light. This is a width test, not an operating-system preference test.

The applet detail screen

Clicking any card opens the detail screen, which is laid out like a consumer app-store listing:

  • Hero — icon (clickable, opens full size), name, and up to four stats: Rating (the average, or “No ratings”), Rank, Tenant, Status (Installed / Not installed).
  • Documentation button — opens the applet’s documentation URL in a new tab. It is disabled when the registry row for that applet has no documentation URL.
  • Share button — uses the browser’s native share sheet where one exists, otherwise copies the current page URL to the clipboard and confirms with a toast.
  • Install, or — once installed — Uninstall and Open.
  • Preview — a horizontally scrolling gallery of the applet’s screenshots, ordered by their sequence number. The whole section is hidden when the applet has no images.
  • About this app — the description, plus Version and Updated on when the registry carries them. With no description it reads No description is available for this applet yet.
  • Rate this applet / My review — a five-star row, and a Write a review / Edit your review link that opens a dialog with the stars and a comment box capped at 500 characters.
  • Ratings and reviews — the average, a five-bar histogram of one- to five-star counts, the total count, and other users’ reviews. Your own review is lifted out of that list into the section above it.
Rating is read-only when you arrive from the Public tab. The Public listing passes a read-only flag with the navigation; the Private and My Applets listings do not. The rating and review sections are also hidden entirely until the applet is installed — which matches the server, which rejects a rating from a user who has not installed the applet.

Configuration

Before you can use it

PrerequisiteWhere it is setWithout it
A platform loginPlatform user administration; see Tenant Admin AppletEvery screen in the store is behind an authenticated endpoint
Terms of Use acceptedThe store itself, once per loginThe dialog blocks every screen
The applet exists and is ACTIVE in the registryDeveloper SysAdmin AppletIt is filtered out of both listings
The applet is linked to a catalogue, and that link is ACTIVETenant Admin AppletNothing to install — the store lists catalogue membership, not the registry directly
The owning tenant record is ACTIVEPlatform administrationThe applet is filtered out of the public listing
For a private catalogue: your login is linked to itTenant Admin AppletThe catalogue does not appear on the Private tab

Applet settings

No exposed control found (routes and settings components checked at commit b7b68bb33e7e6717a1aafdc4935170a0646a9e0e).

The store has no settings surface of any kind: no settings route, no field-configuration or default-settings component, no settings service and no persisted settings model. The only per-user state it writes is the Terms of Use acceptance flag.

A Settings item pointing at .../applet-store/settings exists in the applet’s menu-items file, and a sidebar template renders it. Neither is reachable: the component that hosts that sidebar is declared but never routed, and no settings route exists. Do not plan around it.

Settings in other applets that control this applet

SettingWhere it is setEffect here
Catalogue access_type (PUBLIC / PRIVATE)Catalogue record, Tenant Admin AppletDecides which tab the catalogue’s applets appear on. The public query selects only access_type = 'PUBLIC' catalogues with status ACTIVE.
Catalogue-to-user linkTenant Admin AppletThe Private tab lists exactly the catalogues your login has a link to. No link, no catalogue.
Applet-to-catalogue link rankTenant Admin AppletShown on the card and on the detail screen, and copied onto the installed link. Values are OWNER, ADMIN, MEMBER.
Registry documentation_urlDeveloper SysAdmin AppletEnables or disables the Documentation button on the detail screen.
Registry icon and imagesDeveloper SysAdmin AppletThe card icon and the Preview gallery.
Registry es_module_url, applet_mf_html_tag, routerLinkDeveloper SysAdmin AppletWhat Open hands to the shell to load the applet.

Feature visibility and permissions

The Applet Store declares no client-side permission definitions — there are no bl_applet_client_side_perm_dfn rows for it, and no permission constants in its repository. Nothing in the store is hidden or shown by a permission set. Authority is enforced on the server, per endpoint:

RuleEnforced byEffect
You may install only for yourselfInstall and multiple-install endpoints compare the submitted login against the token’s subjectA request naming another user is refused with INSTALLING_APPLETS_FOR_OTHER_USER_IS_NOT_ALLOWED
You may uninstall only your own linkUninstall endpoint compares the link’s login against the token’s subjectRefused with UNINSTALLING_APPLETS_FOR_OTHER_USER_IS_NOT_ALLOWED
Installing for other people is an administrator actionA separate tenant-admin endpoint requires either platform system-administrator status or OWNER/ADMIN rank in that tenantDone from the Tenant Admin Applet, not from the store
Two different things are both called “rank”. The rank shown on a store card comes from the applet-to-catalogue link and travels onto your installed link; it is a label. The rank that decides whether you may administer a tenant lives on the login-to-tenant link and is what the tenant-admin endpoints check. Having ADMIN on a catalogue entry grants no administrative authority.

What an installed row actually buys you

The installed link is not decoration, and it is not a complete answer either. Both halves matter if you are deciding who may open what.

It is a real gate, once. An applet cannot talk to the platform with your ordinary login token. On start-up it exchanges that token for an applet token, and the server issues one only after checking that a live bl_applet_login_subject_link row exists for your login, that applet and that tenant; with no row the exchange is refused with One or more Applet/Tenant Code combination does not exist. So “uninstall it and they cannot use it” is true.

Past that gate, the API is not organised by applet. Server-side permission codes are named for the resource they protect — a customer, a document, an export — never for an applet, and the applet identity carried in the token is read almost exclusively to stamp the audit trail. Two endpoints on the whole platform require an applet token at all. The practical consequence for an access model: installing fewer applets tidies what a person can reach through the screens; it is not a restriction on what their login can do through the API. The restriction that survives a determined person is the permission set, not the applet list.

And an install can quietly admit somebody to a tenant. Granting an applet also makes sure the login exists in that applet’s tenant, and the tenant a grant lands in is taken from the applet-to-catalogue link row rather than from the tenant you were inviting into. A catalogue whose rows point at more than one tenant therefore admits the person to every one of them in a single invitation. Compose catalogues deliberately, and check the tenant on each row before you use one as the target of an invitation — this is the concrete reason behind the advice not to hand out a catalogue you have not looked inside.

Fields

The store has no create or edit form. These are the fields it displays and the one field it accepts.

Applet card (all three listings)

FieldMeaningNotes
IconThe registry icon imageServed from the platform’s public applet-icon endpoint by icon GUID
TitleApplet name from the registry
PublisherThe owning tenant’s nameCatalogue layout only
RankThe applet-to-catalogue link’s rankOWNER / ADMIN / MEMBER
CatalogueThe catalogue the entry belongs toColour-coded; on My Applets this slot shows the catalogue the applet was installed from
RatingAverage ratingA star with one decimal; an outlined star with no number when the applet has never been rated
Installed tickWhether your login already has this appletGreen tick badge

Applet detail screen

FieldMeaningNotes
RatingAverage, and the total rating count“No ratings” when the count is zero
RankCatalogue-link rankHidden when empty
TenantOwning tenant nameHidden when empty
StatusInstalled or Not installedDerived from your own installed link, not from the listing row
DescriptionRegistry descriptionFalls back to an explicit “no description” line
VersionRegistry versionHidden when empty
Updated onRegistry update date, else creation dateHidden when both are empty
PreviewScreenshots, ordered by sequenceWhole section hidden when there are none
ReviewsReviewer display name, photo, date, stars, commentYour own review is excluded from this list and shown separately

Review dialog

FieldMeaningRequiredNotes
StarsYour rating, 1–5YesSubmit review stays disabled until a star is chosen. The server rejects anything outside 1–5
CommentFree textNoCapped at 500 characters in the box, with a live counter; the server’s own limit is 4,000. A draft you type is kept locally so it survives a reload

Lifecycle and effects

The Applet Store is a utility applet. It posts no journals, moves no stock and writes nothing to any tenant ledger. Everything it changes lives in the platform (master) database.

ActionEndpointWhat it writes
Accept the Terms of UseThe identity user-profile endpoints — the store reads your profile, appends the flag, and saves the profile backA user profile extension BIGLEDGER_APPLET_STORE_TNC, boolean, value 1
Install (detail screen)POST core2/platform/dm/applets/user-applet-links/installOne applet-to-login link: your login GUID, the applet, the catalogue, the applet-to-catalogue link, the owning tenant, and the rank copied from the catalogue entry
Install All (Public or Private tab)POST core2/platform/dm/applets/user-applet-links/multiple-installThe same row for every applet on screen that is neither installed nor blocked, in one request
UninstallDELETE core2/platform/dm/applets/user-applet-links/uninstall/{guid}Removes your applet-to-login link. Nothing inside the applet is deleted
RatePOST / PUT core2/platform/dm/applet-ratings/backoffice-epOne rating row per user per applet; the platform’s rating summary for that applet is recalculated and is what every listing card reads
Write or edit a reviewThe applet-comments endpointsOne comment row attached to your rating
OpenWrites the applet’s module URL, element tag, router link, tenant code, applet code and installed-link GUID into the browser session for the shell to pick up

Three consequences worth knowing:

  • Uninstall is reversible and destroys nothing. It deletes the link between your login and the applet. Reinstalling from the same catalogue entry gives you the applet back; the data the applet holds in the tenant is untouched either way.
  • Install All is not idempotent across catalogues. It skips anything already installed and anything blocked, so pressing it twice is safe, but it installs only what is on screen — on the Private tab that is the catalogues loaded so far, not all of them.
  • An applet already installed from one catalogue cannot be installed again from another. The listing marks such a card as blocked and refuses the click, with the tooltip This applet has been installed in another catalog!

There are no statuses to manage in this applet. An installed link is either present and ACTIVE or gone.

Related applets

  • Developer SysAdmin Applet — registers the applet and everything the store displays about it. If a listing looks wrong, the record behind it is edited there.
  • Tenant Admin Applet — builds catalogues, decides who sees a private one, and installs applets in bulk for other users in the tenant. It is the administrator’s counterpart to this user-facing screen.

Troubleshooting

SymptomCauseFix
The Terms of Use dialog appears again for one personAcceptance is stored on the individual login, not the tenantExpected. Have them accept it once
A catalogue a colleague can see is missing from your Private tabYour login has no link to that catalogueAn OWNER/ADMIN-ranked user adds the link in the Tenant Admin Applet
An applet the business has bought is in no catalogue at allThe applet is not ACTIVE in the registry, its catalogue link is not ACTIVE, or the owning tenant record is not ACTIVECheck the registry record, then the catalogue membership
A card is greyed out and does not openIt is already installed from a different catalogue — tooltip This applet has been installed in another catalog!Open it from My Applets, or uninstall the other copy first
Install reports The applet already exists!The install call failed — most often because a link for that applet and login already existsCheck My Applets; refresh before retrying
Install All is greyed outEverything on screen is already installed or blockedNothing to do
Rating fails with Install this applet before you can rate itThe server requires an installed link for the applet before it accepts a ratingInstall it, then rate it
Rating fails with You already rated this appletOnly one active rating per user per applet is allowedRefresh the page; the existing rating is then edited rather than created
Rating fails with Not logged in or Auth token is invalid or expiredThe store was opened without a valid session tokenSign in through the platform shell again
The Documentation button is greyed outThe applet’s registry record carries no documentation URLAdd it in the Developer SysAdmin Applet
The Private tab shows a spinner that never resolvesThe private-catalogue fetch has no error handling; a failed request leaves the loading state setReload the page. This is a known product defect, not a configuration problem

Related documentation

Last updated on