Skip to main content
Draft. Summer Apps is in a closed test. This page goes live after the end-to-end test on production.

What your team gets

  • Every source (quest rewards, drops, selling) and sink (repairs, shops, upgrades) of each currency, as an amount per hour of play.
  • Per currency: sources, sinks and net per hour, against the net your design aims for. A net far from the target shows in warning colour.
  • A bar chart of the flows per hour, sinks in red.
  • Your agent changes the economy by asking (“cut quest gold by 10%”) and can scale all sources or sinks of a currency at once.

Ask your agent

Economy balance sheet. Your agent builds, seeds and checks the app.

The manifest

Seed the data

Gold now nets 650 per hour against a target of 800. Gems net 4 against 5.

An agent edit: “cut quest gold by 10%”

Read the flows:
In the answer, quest-gold has "amountPerHour": 1200 and a revision, here 1. Write the change:
Gold net per hour drops from 650 to 530. A conflict means someone changed the flow: read again and retry. For “make every gold sink 15% bigger”, call the app’s tool while the person has it open: summer_app_call with { "tool": "scale_flows", "input": { "currency": "gold", "kind": "sink", "percent": 15 } }.

Check the look

After every publish:
  • summer_app_screenshot { "appId": "<app id>" }
  • summer_app_screenshot { "appId": "<app id>", "width": 390 }
  • summer_app_screenshot { "appId": "<app id>", "theme": "dark" }
  • summer_app_screenshot { "appId": "<app id>", "params": { "currency": "gems" } } if the app reads the currency from launch params.
The net per hour must be right for each currency, and the chart must show sinks in red. Fix every entry in errors and console.

What it uses

SDK: summer.ready (its params for a starting currency); summer.data.collection("currencies") and summer.data.collection("flows") with .list() and .subscribe(); summer.data.commands() to save table edits and scale_flows in one revision; summer.agent.tool("scale_flows"); summer.page.declare() with a choice field for the currency. Kit: summer-page; summer-toolbar with summer-segmented (one option per currency); summer-stats and summer-stat (sources, sinks and net per hour; the net with delta against the target and tone="warn" when it is more than 20% away); summer-chart (kind="bar", x="name", y ["perHour"], highlight { "key": "kind", "equals": "sink", "tone": "bad", "label": "Sinks", "otherLabel": "Sources" }); summer-table (row-key="id", sortable, an editable amount column with format: "number"); summer-save-bar; summer-dialog with summer-form and summer-select to add a flow. The numbers per currency: