Setup in the browser · ratings.sh admin · this computer only
The tool has many settings: customers, apps, credentials, competitors, AI with three models, notification, traffic light, topics, questions, events and the layout of the report. Instead of hunting for them in a JSON file, one command opens a page in the browser. It asks every setting as a plain-language question, with example and default, checks every input at once with the same rules as the scripts and saves only when everything is right, after making a backup.
What would you like to do? › Add a new app › Store access keys › Switch on AI analysis › Tabs and functions of the report What is the app called? Kasse Nord Apple ID of the app (from the store link) 1546732190 ✓ fits Countries for the store rating DE AT CH Not saved: configuration · 0 errors
Why?
The configuration is one file, config/config.json, plus the topic words, the preset questions and the events. Whoever edits them by hand mistypes, forgets a comma or puts a key into the file by accident. The setup in the browser takes this off your hands and tells you at once what is missing.
“Add a new app”, “Switch on AI analysis”, “Tabs and functions of the report”: you pick what you want to do, the page jumps to the right step.
For every setting a question, an explanation why it matters, an example and the program’s default. German and English, light and dark.
Shortly after the last keystroke every input goes to the service and is checked with the rules of the scripts. What passes here also passes at fetch time.
All entries of a list at a glance, the chosen one next to it for editing. New entries are selected at once.
Change nothing and you keep the default. Only deviations are stored, so later, better defaults of the program apply automatically.
Before a file is overwritten, the old version goes to the backup folder. A file with errors is never written.
Start
The page runs on a small service on your computer. It runs only while you have started it and cannot be reached from any other computer. It does not run on a server.
./ratings.sh admin, in the short menu 7 or item 9 of the big menu. The browser opens the page with a fresh access token.
Steps on the left, questions in the middle. Red numbers in the step list are errors, yellow ones notes. The bottom bar always says what is not saved yet.
“Save” writes every changed file without errors. “Quit” top right stops the service, as does Ctrl+C in the window.
Another configuration? ./ratings.sh admin --config path/to/config.json edits another file, for example that of a second customer. If the file does not exist, the page starts from the template config.example.json.
The steps
The order is a suggestion for the first setup. Later you jump straight to the step you need, or pick a task on the start page.
Tasks to click and the state of the configuration: which file, how many customers and apps, whether AI and notification are on.
Address of the report for others, wait between two fetches, start date of the first fetch, folders, backups, log.
Apple key (.p8) and Google service account, as a path to a file or the name of an environment variable. Never the key itself.
Per customer the apps with Apple ID or Google package name, countries for the store rating, audience and code family (apps from one shared code).
When an app turns yellow or red, and from how many apps a problem counts as shared code, as sentences with number fields. The rule “open 1–2 ★ without reply” is a tick box, off by default.
One view per group of readers: up to eight tabs of your own with the report’s functions in your order; exportable and importable. More below.
Provider, name of the key variable, three models per provider (analysis, AI questions, AI crash analysis), monthly budget, what the AI may do, the safety switches of the crash analysis.
Other Apple apps per customer, from the public feed, without access to other accounts.
E-mail, Slack, Teams or webhook after the daily run, with triggers: new bad reviews, traffic light change, crash jump. With a “Send test message” box: pick a channel, write a text, send.
Newsletter, outage, campaign: shown in the charts so you can explain a spike.
How the report recognises “login”, “crash” and so on, with a test box: type a sample text and see which topics match.
The preset questions ready to click on the “AI questions” tab.
All five files in full, as saved or with your changes, with a copy button. Nothing can be typed here.
All errors and notes at a glance, the state of each file, then “Save”.
Checked at once
Each field first checks the format itself, for example whether an Apple ID consists of digits only. Shortly after the last keystroke the page sends the whole file to the service, which checks it with exactly the rules collect.py and report.py read it with. Every message lands at the step it belongs to.
Views
In the step “Views” you decide per group of readers what the report looks like: up to eight tabs of your own with names, on them the 46 functions of the report (answer cards, traffic light, tables, charts single or all) in your order, each function once. The default view becomes index.html, every other one ansicht-<name>.html; a view without AI carries no AI text. Views can be exported as JSON and imported elsewhere. Each tab prints exactly what it shows.
On the right you see the report in miniature: tab bar at the top, below the functions of the chosen tab as small cards with a symbol of what they look like (table, tiles, list, chart). A click opens a window.
“+ Function” shows only what is still free. Single charts may be placed several times. Removing a tab frees its functions again.
The default view becomes index.html, every other one a file of its own. Without AI the file carries no AI text. Fixed tabs (competitors, AI questions, AI crash reports) on or off per view, “Data status” always last.
Export a view as JSON and import it into another installation; templates “Standard” and “Minimal” to start from.
Saving
“Save” writes each changed file on its own. The same path applies to each; if one station fails, the file on disk stays as it was.
Security
The setup in the browser is a deliberate exception to the rule “no server”. That is why it is built to work only for you, only on this computer and only for four files. It makes no connection to the internet.
The service listens on the local address only. It cannot be reached from another computer on the network.
Every start creates a new random token. The browser gets it only in the part of the address after the #, which never goes to a server; the page itself does not contain it.
The service rejects requests from other websites, and requests under a foreign host name. This protects against an open website changing the configuration behind your back.
Configuration, topics, questions, events. The service never accepts a path from a request; the page can neither read nor write other files.
The page only asks for the name of an environment variable or the path to a key file. If key text appears in the configuration, it refuses to save. Whether a variable is set, the service answers with yes or no; it never reads the value.
A copy of the old version before every save. If someone changed the file in the meantime, nothing is overwritten.
This page does not exist on the server. The published report is a single HTML file without a service. The setup runs only where you start ./ratings.sh admin, and only until you quit it.
The five files
In the step “View files” you see each of them in full, as on disk or with your changes. If you prefer working in the file directly, you still can; the page recognises outside changes.
| File | Content | Backup before saving |
|---|---|---|
config/config.json | customers, apps, credentials (names and paths only), competitors, AI, notification, traffic light, spread, basic settings | copy in the backup folder |
config/themen.json | topics with search terms and area (app or provider) | copy in the backup folder |
config/fragen.json | preset questions for “AI questions” | copy in the backup folder |
data/ereignisse.json | events for the charts | verified ZIP of the data folder |
Comment keys such as _hinweis and unknown extra keys are written back unchanged. How many backups are kept is set by settings.backupKeep.
When something goes wrong
Messages appear on the page at the matching step, in full and not abbreviated. The check messages of the scripts are in German; the page itself is available in German and English.
The service has ended or the token is from an earlier start. Start ./ratings.sh admin again; the page opens with a new token.
Someone edited the file on the side. Reload and enter your changes again; nothing is overwritten.
Not an error, saving works. Set the variable before the fetch, for example in ~/.zshrc.
The field holds the key itself. Only the name belongs there, such as OPENAI_API_KEY.
Running scripts and the AI question service read the setting at their start. Restart them and rebuild the report.
Open the step; the message is at the top of the card and at the field. “Check and save” lists all of them at once.