Applet Store
Watch this as a presentation — 1 on this page, slides with narration.
Install applets onto your own login from the catalogues an administrator has opened to you. Every install is for one login, never for the whole tenant, and a private catalogue appears here only because Tenant Admin linked you to it. Nothing here is bought or paid for: the store carries no price, plan or order, and a paid applet is arranged outside it.
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).
Where it fits
| Direction | What | Why |
|---|---|---|
| Upstream | Developer SysAdmin Applet | The 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. |
| Upstream | Tenant Admin Applet | Builds 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. |
| Downstream | The platform launchpad | An installed applet becomes a tile on the launchpad; the store itself is reached from there. |
| Alongside | Complete Applet Catalog | The 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.
| Screen | Route | State |
|---|---|---|
| Private catalogue listing | catalog-listing-private | Working — this is the landing screen; an empty child path redirects here |
| Public catalogue listing | catalog-listing | Working |
| My Applets | my-applets | Working |
| Applet detail | applet-information/:guid | Working — :guid is the applet-to-catalogue link |
| Per-catalogue applet list | applet-listing/:guid | Legacy — no link in any live template reaches it |
| Notifications | applet-notifications | Placeholder — a static card of repeated stock images, no data, not linked from anywhere |
| Subscription | applet-subscription | Broken — 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.
Configuration
Before you can use it
| Prerequisite | Where it is set | Without it |
|---|---|---|
| A platform login | Platform user administration; see Tenant Admin Applet | Every screen in the store is behind an authenticated endpoint |
| Terms of Use accepted | The store itself, once per login | The dialog blocks every screen |
The applet exists and is ACTIVE in the registry | Developer SysAdmin Applet | It is filtered out of both listings |
The applet is linked to a catalogue, and that link is ACTIVE | Tenant Admin Applet | Nothing to install — the store lists catalogue membership, not the registry directly |
The owning tenant record is ACTIVE | Platform administration | The applet is filtered out of the public listing |
| For a private catalogue: your login is linked to it | Tenant Admin Applet | The catalogue does not appear on the Private tab |
Applet settings
The store has no settings of any kind. The only per-user state it writes is your acceptance of the Terms of Use.
Settings in other applets that control this applet
| Setting | Where it is set | Effect here |
|---|---|---|
Catalogue access type (PUBLIC / PRIVATE) | Catalogue record, Tenant Admin Applet | Decides which tab the catalogue’s applets appear on. The Public tab shows only active public catalogues. |
| Catalogue-to-user link | Tenant Admin Applet | The Private tab lists exactly the catalogues your login has a link to. No link, no catalogue. |
Applet-to-catalogue link rank, and the rank on your own catalogue link | Tenant Admin Applet | Which one a card shows depends on the tab — see Rank under Fields. Whatever rank the card showed is the one copied onto your installed link. Values are OWNER, ADMIN, MEMBER. |
| The applet’s documentation link | Developer SysAdmin Applet | Enables or disables the Documentation button on the detail screen. |
| The applet’s icon and images | Developer SysAdmin Applet | The card icon and the Preview gallery. The icon is fetched from the registry each time a listing loads, so replacing it there changes every user’s card on their next visit; nothing is kept per catalogue. An applet with no icon, or one whose image fails to load, is not an error: the card shows the first letter of the applet’s name in a plain tile instead. A grid of letter tiles means the registry records have no icons, and the fix is in the Developer SysAdmin Applet, not here. |
| The applet’s loading details | Developer SysAdmin Applet | What Open hands to the shell to load the applet. |
Feature visibility and permissions
The Applet Store has no client-side permissions. Nothing in the store is hidden or shown by a permission set. Authority is enforced on the server, per endpoint:
| Rule | Enforced by | Effect |
|---|---|---|
| You may install only for yourself | Install and multiple-install endpoints compare the submitted login against the token’s subject | A request naming another user is refused |
| You may uninstall only your own link | Uninstall endpoint compares the link’s login against the token’s subject | A request for another user’s link is refused |
| Installing for other people is an administrator action | A separate tenant-admin endpoint requires either platform system-administrator status or OWNER/ADMIN rank in that tenant | Done from the Tenant Admin Applet, not from the store |
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 the applet is installed for your login in that tenant; without it 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)
| Field | Meaning | Notes |
|---|---|---|
| Icon | The registry icon image | Served from the platform’s public applet-icon endpoint by icon GUID; a missing or broken image shows the name’s first letter instead |
| Publisher | The tenant named on the catalogue entry — the tenant the applet opens in once installed | Catalogue layout only (Public and Private tabs). The applet registry has no owner of its own; the tenant comes from the catalogue row, so the same applet can appear under two publishers, and the one you install from decides whose tenant you are admitted to (see What an installed row actually buys you). Two cards with the same title on the Public tab are the same applet offered by different tenants or at different ranks — duplicates are merged only when applet, tenant and rank all match. Check the publisher before you press Install. If you installed from the wrong card, uninstall it and tell whoever administers users in that tenant, because the install may also have admitted your login there |
| Rank | A catalogue rank, and which one depends on the tab | Public: the applet-to-catalogue link’s rank. Private: your own rank on that catalogue until you install, then the rank on your installed link. My Applets: the rank on your installed link. Installing copies the rank the card showed onto your link, so the same applet can carry different ranks for two colleagues. It is a label, not an authority — see the warning above |
| Catalogue | The catalogue the entry belongs to | Colour-coded; on My Applets this slot shows the catalogue the applet was installed from. The colours are picked at random each time the listing loads, so do not teach anyone “the blue ones” |
| Rating | Average rating | A star with one decimal; an outlined star with no number when the applet has never been rated |
| Installed tick | Your login has an active link to this applet from this catalogue entry | An applet installed from a different catalogue shows no tick here; the card is blocked instead (see Lifecycle). On My Applets every card is ticked. Install All ticks the cards in your browser before the server answers, and an Error! reply does not take the ticks away, so after an error the ticks are not evidence. That is read from the code, not tried: after any Error! from Install All, reload the tab or open My Applets, and treat only what is still ticked as installed |
On the Public and Private tabs the card’s title is the applet’s name from the registry, read afresh on every load; a catalogue cannot rename an applet, so a rename in the Developer SysAdmin Applet reaches those cards at once.
Applet detail screen
| Field | Meaning | Notes |
|---|---|---|
| Rating | Average, and the total rating count | “No ratings” when the count is zero |
| Rank | Catalogue-link rank | Hidden when empty |
| Tenant | Owning tenant name | Hidden when empty |
| Status | Installed or Not installed | Derived from your own installed link, not from the listing row |
| Description | Registry description | Falls back to an explicit “no description” line |
| Version | Registry version | Hidden when empty |
| Updated on | Registry update date, else creation date | Hidden when both are empty |
| Preview | Screenshots, ordered by sequence | Whole section hidden when there are none |
| Reviews | Reviewer display name, photo, date, stars, comment | Your own review is excluded from this list and shown separately |
Review dialog
| Field | Meaning | Required | Notes |
|---|---|---|---|
| Stars | Your rating, 1–5 | Yes | Submit review stays disabled until a star is chosen. The server rejects anything outside 1–5 |
| Comment | Free text | No | Capped 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.
| Action | What it writes |
|---|---|
| Accept the Terms of Use | A flag on your user profile |
| Install (detail screen) | One applet-to-login link: your login, the applet, the catalogue and its entry, the owning tenant, and the rank copied from the catalogue entry |
| Install All (Public or Private tab) | The same link for every applet on screen that is neither installed nor blocked, in one request |
| Uninstall | Removes your applet-to-login link. Nothing inside the applet is deleted |
| Rate | One rating per user per applet; the applet’s rating summary is recalculated, and that summary is what every listing card shows |
| Write or edit a review | One comment attached to your rating |
| Open | Hands the shell what it needs to load the applet, in the browser session |
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
| Symptom | Cause | Fix |
|---|---|---|
| The Terms of Use dialog appears again for one person | Acceptance is stored on the individual login, not the tenant | Expected. Have them accept it once |
| A catalogue a colleague can see is missing from your Private tab | Your login has no link to that catalogue | An OWNER/ADMIN-ranked user adds the link in the Tenant Admin Applet |
| An applet the business has bought is in no catalogue at all | The applet is not ACTIVE in the registry, its catalogue link is not ACTIVE, or the owning tenant record is not ACTIVE | Check the registry record, then the catalogue membership |
| A card is greyed out and does not open | It 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 exists | Check My Applets; refresh before retrying |
| Install All is greyed out | Everything on screen is already installed or blocked | Nothing to do |
| Rating fails with Install this applet before you can rate it | The server requires an installed link for the applet before it accepts a rating | Install it, then rate it |
| Rating fails with You already rated this applet | Only one active rating per user per applet is allowed | Refresh the page; the existing rating is then edited rather than created |
| Rating fails with Not logged in or Auth token is invalid or expired | The store was opened without a valid session token | Sign in through the platform shell again |
| The Documentation button is greyed out | The applet’s registry record carries no documentation URL | Add it in the Developer SysAdmin Applet |
| The Private tab shows a spinner that never resolves | The private-catalogue fetch has no error handling; a failed request leaves the loading state set | Reload the page. This is a known product defect, not a configuration problem |