OneTwoApps App Ratings & ReviewsSetup in the browser

Setup in the browser · ratings.sh admin · this computer only

Every setting as a question. Checked before it is saved.

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.

14steps, from “What would you like to do?” to saving
4files, the page may write nothing else
0keys in the file, only names of environment variables
1backup before every save
Example

How the page asks

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?

Nobody should need to know key names to add an app.

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.

Tasks instead of filesstart page

“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.

Plain-language questionsevery field

For every setting a question, an explanation why it matters, an example and the program’s default. German and English, light and dark.

Checked at oncesame rules

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.

List left, form rightcustomers, apps, topics …

All entries of a list at a glance, the chosen one next to it for editing. New entries are selected at once.

Only what differstraffic light, spread, report

Change nothing and you keep the default. Only deviations are stored, so later, better defaults of the program apply automatically.

With backupbefore saving

Before a file is overwritten, the old version goes to the backup folder. A file with errors is never written.

Start

One command, one page, and “Quit” when you are done.

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.

1

Start

./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.

2

Set up

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.

3

Save and quit

“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

Fourteen steps in five groups. You do not need to go through all of them.

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.

What would you like to do?start

Tasks to click and the state of the configuration: which file, how many customers and apps, whether AI and notification are on.

Basic settingsconfiguration

Address of the report for others, wait between two fetches, start date of the first fetch, folders, backups, log.

Accessconfiguration

Apple key (.p8) and Google service account, as a path to a file or the name of an environment variable. Never the key itself.

Customers and appsconfiguration

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).

Traffic light and spreadconfiguration

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.

Viewsreport

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.

AI analysisconfiguration

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.

Competitorsconfiguration

Other Apple apps per customer, from the public feed, without access to other accounts.

Notificationconfiguration

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.

Eventsereignisse.json

Newsletter, outage, campaign: shown in the charts so you can explain a spike.

Topicsthemen.json

How the report recognises “login”, “crash” and so on, with a test box: type a sample text and see which topics match.

Questions for the AIfragen.json

The preset questions ready to click on the “AI questions” tab.

View filesread only

All five files in full, as saved or with your changes, with a copy button. Nothing can be typed here.

Check and savefinish

All errors and notes at a glance, the state of each file, then “Save”.

Checked at once

A wrong value shows up while typing, not at the nightly fetch.

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.

Customers and apps · app “Kasse Nord”Apple ID of the appabc 1546Only the number, 5 to 15 digits.1546732190✓ fits the formatChecked 400 ms after the lastkeystroke, rules of the scriptsStep listBasic settingsCustomers and appsAccessAI analysis1
Errors show where they ariseA wrong Apple ID turns the field red and writes the reason below it, in full, not abbreviated. The step list shows the number of errors at “Customers and apps”. After the correction both disappear. Only a file without errors is saved; notes, such as an environment variable not set yet, do not stop saving.

Views

Every group of readers gets its own report. What is shown is also printed.

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.

Preview instead of formtabs and cards

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.

Each function once46 functions

“+ Function” shows only what is still free. Single charts may be placed several times. Removing a tab frees its functions again.

One file per groupindex.html · ansicht-<name>.html

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.

Take it alongexport · import

Export a view as JSON and import it into another installation; templates “Standard” and “Minimal” to start from.

Saving

Four checks, then it is written. Afterwards the page says what must restart.

“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.

1 · Checkrules of the scripts,0 errors needed2 · Unchanged?file not changed byothers since loading3 · Back upold version into thebackup folder4 · Writeatomic, mode 0600,under the data lockSaved – please restartAll scripts read the settings at their start.If the AI question service runs: Ctrl+C, then ./ratings.sh ai-report.
Nothing is half writtenIf someone changed the file outside the page in the meantime, the service refuses to save and asks you to reload, so no change gets lost. Otherwise the old version moves to the backup folder, for the events as a verified ZIP of the data folder. Afterwards a window appears: which files were saved and that running scripts keep the old version until they restart.

Security

A page that may write the configuration has to be tightly bounded. This one is.

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.

Only 127.0.0.1network

The service listens on the local address only. It cannot be reached from another computer on the network.

A token per startaccess

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.

Origin checkedOrigin · Host

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.

Exactly five filesfixed list

Configuration, topics, questions, events. The service never accepts a path from a request; the page can neither read nor write other files.

No keys in the filesecrets

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.

Backup and conflictbefore writing

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

What the page reads and writes is listed here in full.

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.

FileContentBackup before saving
config/config.jsoncustomers, apps, credentials (names and paths only), competitors, AI, notification, traffic light, spread, basic settingscopy in the backup folder
config/themen.jsontopics with search terms and area (app or provider)copy in the backup folder
config/fragen.jsonpreset questions for “AI questions”copy in the backup folder
data/ereignisse.jsonevents for the chartsverified 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

Usually the service has ended or the file was changed on the side.

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.

Page loads nothingstart

The service has ended or the token is from an earlier start. Start ./ratings.sh admin again; the page opens with a new token.

“… wurde inzwischen außerhalb des Werkzeugs geändert”save

Someone edited the file on the side. Reload and enter your changes again; nothing is overwritten.

“Umgebungsvariable … ist nicht gesetzt”note

Not an error, saving works. Set the variable before the fetch, for example in ~/.zshrc.

“… sieht nicht wie der Name einer Umgebungsvariable aus”error

The field holds the key itself. Only the name belongs there, such as OPENAI_API_KEY.

Change has no effectafter saving

Running scripts and the AI question service read the setting at their start. Restart them and rebuild the report.

Step shows a red numberstep list

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.