Skip to content

Commit 24f948f

Browse files
authored
docs: rewrite docs site and README copy in plainer language (#59)
* docs: rewrite docs site and README copy in plainer language Pass over every user-facing text surface to replace vague marketing phrasing with statements of what the package actually does. The marketplace readme was the worst offender: a bold-label-colon feature list, a puffery line about "where content decisions happen", and a "Ready to bring your analytics into the backoffice?" call to action. It is now six bullets that each name a concrete behaviour. On the landing page, "The traffic signals that matter for the current editorial task, within immediate reach, with nothing more to configure" said nothing specific to this package. Replaced with the actual contents of the dashboard. The phrase "follow a headline number down to the context behind it" appeared in four files and is gone from all of them. The Plausible card claimed you could explore "privacy-friendly traffic", which is not a property traffic can have; it now names what Plausible adds over Vercel. Both provider pages opened with "The quickstart owns the first-time setup flow". Vague capability statements now name the mechanism: "The backoffice adapts to those capabilities" became "The backoffice hides both controls on a Vercel connection". Also thinned out repetition introduced while rewriting: "already" ran six times on the landing page alone, the marketplace bullets all opened with the same verb form, and the "a hidden panel is not an error" fact was stated six times across the doc set. It now stays where it is the point and comes out of the overview's Compatibility section. Two accuracy fixes found along the way: - A marketplace screenshot caption said "provider-supported events and features" where it meant feature flags. - A document-analytics condition read "Its nearest configured document root must specifically resolve to one or more connections, not merely any ancestor root", mixing "must" into a list of plain conditions and repeating a clause from earlier on the page. No behaviour or structural changes. Docs build, type-check, and validate clean; the 9 asset warnings from `blume validate` predate this change. * docs: add install and setup steps to the marketplace readme The marketplace listing is a standalone landing surface, reached without going through the docs site, but it only described what the package does. Someone reading it had no way to get started without first finding the documentation link on the last line. Adds a short Install section (package reference, version and provider prerequisites, the Plausible Cloud Business plan requirement) and a four-step connection setup covering the credential, the restart, the Settings screen, and Test connection. Gives the documentation link its own section rather than a bare trailing sentence. Steps verified against apps/docs/docs/quickstart.mdx and the document analytics guide.
1 parent f4e18c2 commit 24f948f

15 files changed

Lines changed: 182 additions & 163 deletions

‎CONTRIBUTING.md‎

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
# Contributing to Web Analytics
22

3-
Thanks for your interest in improving Web Analytics for Umbraco. This guide covers the repository layout, how to set up a local development environment, and how to get a change merged. For how released package versions reach NuGet, see [docs/releasing.md](docs/releasing.md).
3+
Thanks for helping improve Web Analytics for Umbraco. This guide covers the repository layout, how to set up a local development environment, and how to get a change merged. [docs/releasing.md](docs/releasing.md) covers how a released version reaches NuGet.
44

55
## Repository layout
66

7-
This repository is a pnpm and .NET workspace. The most relevant folders:
7+
The repository is a pnpm and .NET workspace. The folders you are most likely to touch:
88

99
| Path | What it is |
1010
| --- | --- |
@@ -17,9 +17,9 @@ This repository is a pnpm and .NET workspace. The most relevant folders:
1717

1818
## Prerequisites
1919

20-
- [.NET SDK 10.0](https://dotnet.microsoft.com/download): builds the package, sample, and tests.
21-
- [Node.js 24](https://nodejs.org/): builds the backoffice client and the docs site.
22-
- [pnpm](https://pnpm.io/) via [Corepack](https://nodejs.org/api/corepack.html). Run `corepack enable` once; the pinned pnpm version is resolved automatically from `package.json`.
20+
- [.NET SDK 10.0](https://dotnet.microsoft.com/download) builds the package, sample, and tests.
21+
- [Node.js 24](https://nodejs.org/) builds the backoffice client and the docs site.
22+
- [pnpm](https://pnpm.io/) via [Corepack](https://nodejs.org/api/corepack.html). Run `corepack enable` once. The pinned pnpm version comes from `package.json`.
2323

2424
Install the JavaScript dependencies from the repository root:
2525

@@ -29,7 +29,7 @@ pnpm install
2929

3030
## Build the backoffice client
3131

32-
The backoffice UI is a separate frontend build. A plain `dotnet build` of the sample does **not** rebuild it; the client is only built automatically when the NuGet package is packed. During development, build (or watch) the client yourself so its assets land in `wwwroot/App_Plugins/`:
32+
The backoffice UI is a separate frontend build. A plain `dotnet build` of the sample does **not** rebuild it. Only packing the NuGet package triggers the client build, so during development you run it yourself. The assets land in `wwwroot/App_Plugins/`:
3333

3434
```sh
3535
pnpm client:build # one-off build
@@ -44,9 +44,9 @@ The example project references the package directly, so it always uses your loca
4444
dotnet run --project samples/TheBuilder.WebAnalytics.Example
4545
```
4646

47-
On first launch Umbraco installs unattended and creates a local SQLite database. In `Development` the sample enables mock connections (`WebAnalytics:EnableMockConnections`), so the Analytics section shows deterministic sample data without any Vercel or Plausible credential. For live data, configure a real provider credential and connection exactly as a consumer would (see the [Quickstart](https://web-analytics.thebuilder.dk/quickstart)).
47+
On first launch Umbraco installs unattended and creates a local SQLite database. In `Development` the sample turns on mock connections (`WebAnalytics:EnableMockConnections`), so the Analytics section shows deterministic sample data without any Vercel or Plausible credential. For live data, set up a real provider credential and connection the way a consumer would. See the [Quickstart](https://web-analytics.thebuilder.dk/quickstart).
4848

49-
For an efficient loop, run `pnpm client:watch` in one terminal and `dotnet run` in another.
49+
Run `pnpm client:watch` in one terminal and `dotnet run` in another for the fastest loop.
5050

5151
## Run the tests and checks
5252

@@ -56,7 +56,7 @@ pnpm client:check # frontend type-chec
5656
dotnet test tests/TheBuilder.WebAnalytics.Tests/TheBuilder.WebAnalytics.Tests.csproj # .NET tests
5757
```
5858

59-
The .NET suite runs against Umbraco 17.1, the latest 17.x, and the latest 18.x in CI. Target a specific line locally by passing the version, for example `-p:UmbracoVersion=18.*`.
59+
CI runs the .NET suite against Umbraco 17.1, the latest 17.x, and the latest 18.x. Target one line locally by passing the version, for example `-p:UmbracoVersion=18.*`.
6060

6161
## Work on the documentation site
6262

@@ -66,15 +66,15 @@ pnpm docs:build # production build
6666
pnpm docs:check # validate content and links
6767
```
6868

69-
The `apps/docs/` content is Markdown/MDX; see the files under `apps/docs/docs/` for structure.
69+
The content in `apps/docs/` is Markdown and MDX. The files under `apps/docs/docs/` show the structure.
7070

7171
## Submitting a change
7272

7373
1. Create a branch for your change.
74-
2. Keep pull requests focused, and update the relevant docs under `apps/docs/` when behaviour changes.
75-
3. Run the frontend and .NET tests above so CI passes on the first try. The `Validate` workflow builds the client, runs both test suites across the supported Umbraco versions, and validates the NuGet package.
76-
4. Open a pull request against `main` with a clear description of the change and its motivation.
74+
2. Keep pull requests focused, and update the docs under `apps/docs/` when behaviour changes.
75+
3. Run the frontend and .NET tests above so CI passes first time. The `Validate` workflow builds the client, runs both test suites across the supported Umbraco versions, and validates the NuGet package.
76+
4. Open a pull request against `main` explaining what changed and why.
7777

7878
## Releasing
7979

80-
Publishing packages to NuGet is release-driven and documented separately in [docs/releasing.md](docs/releasing.md). GitHub Releases are the authoritative changelog and are surfaced in the [documentation changelog](https://web-analytics.thebuilder.dk/changelog/).
80+
Publishing to NuGet is release-driven and documented separately in [docs/releasing.md](docs/releasing.md). GitHub Releases are the authoritative changelog and are mirrored in the [documentation changelog](https://web-analytics.thebuilder.dk/changelog/).

‎PRODUCT.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ Avoid the density, configuration burden, and specialist terminology of enterpris
3838
2. **Native before novel.** Use Umbraco's interaction patterns, components, language, and visual hierarchy so the extension feels built in.
3939
3. **Simple by default.** Present the common path first and progressively reveal configuration or reporting depth only when it becomes relevant.
4040
4. **Trust through clarity.** Explain scope, limitations, credentials, errors, and data availability in plain language close to the affected control.
41-
5. **Delight through fluency.** Earn delight through fast feedback, thoughtful defaults, and polished transitions—not decoration or added complexity.
41+
5. **Delight through fluency.** Earn delight through fast feedback, thoughtful defaults, and polished transitions, not decoration or added complexity.
4242

4343
## Accessibility & Inclusion
4444

‎README.md‎

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44
[![NuGet downloads](https://img.shields.io/nuget/dt/TheBuilder.WebAnalytics)](https://www.nuget.org/packages/TheBuilder.WebAnalytics)
55
[![License](https://img.shields.io/github/license/thebuilder/web-analytics)](https://github.com/thebuilder/web-analytics/blob/main/LICENSE)
66

7-
Bring Vercel Web Analytics and Plausible reports into the Umbraco backoffice. Editors can understand site-wide traffic and the performance of the page they are working on without leaving Umbraco.
7+
Read the traffic your site already sends to Vercel Web Analytics or Plausible, and report it inside the Umbraco backoffice. Editors get the site-wide numbers and the numbers for the page they are editing, without leaving Umbraco.
88

99
![Web Analytics overview in the Umbraco backoffice](https://raw.githubusercontent.com/thebuilder/web-analytics/refs/heads/main/apps/docs/docs/screenshots/analytics-overview.png)
1010

11-
Web Analytics reads analytics already collected by the configured provider. It does **not** install, replace, or configure tracking on your public website.
11+
Web Analytics is read-only. It does **not** install, replace, or configure tracking on your public website.
1212

1313
## Install
1414

@@ -18,7 +18,7 @@ Web Analytics supports Umbraco CMS 17.1 through 18.x. Add it to the Umbraco web
1818
dotnet add package TheBuilder.WebAnalytics
1919
```
2020

21-
Your public site must already collect analytics with Vercel or Plausible; this package reads that data and does not add tracking of its own.
21+
Your public site must already collect analytics with Vercel or Plausible. This package reads that data and adds no tracking of its own.
2222

2323
The package registers its services and backoffice extensions automatically. Then:
2424

@@ -40,15 +40,15 @@ Plausible Cloud's Stats API requires a Business plan. Self-hosted Plausible is s
4040

4141
## Configure a credential
4242

43-
Provider credentials are always read from **server-side configuration** and are never stored in Umbraco or exposed to the browser. Keep them out of `appsettings.json` and source control. Use environment variables, [.NET user secrets](https://learn.microsoft.com/aspnet/core/security/app-secrets), or your hosting platform's secret store. Restart every application instance after adding or rotating a credential.
43+
Provider credentials are always read from **server-side configuration**. They are never stored in Umbraco and never sent to the browser. Keep them out of `appsettings.json` and source control: use environment variables, [.NET user secrets](https://learn.microsoft.com/aspnet/core/security/app-secrets), or your hosting platform's secret store. Restart every application instance after adding or rotating a credential.
4444

45-
The configuration keys use the standard .NET double-underscore (`__`) delimiter for environment variables, or `:` for user secrets and JSON.
45+
Configuration keys use the standard .NET double-underscore (`__`) delimiter in environment variables, or `:` in user secrets and JSON.
4646

4747
### Vercel
4848

4949
1. Create a [Vercel access token](https://vercel.com/kb/guide/how-do-i-use-a-vercel-api-access-token) scoped to the account or team that owns the project.
50-
2. Provide it as `WebAnalytics__Providers__Vercel__AccessToken`.
51-
3. Note the project ID (`prj_...`), and the team ID (`team_...`) or slug for a team-owned project, to enter in Settings.
50+
2. Set it as `WebAnalytics__Providers__Vercel__AccessToken`.
51+
3. Note the project ID (`prj_...`), plus the team ID (`team_...`) or slug for a team-owned project. You enter those in Settings.
5252

5353
```sh
5454
dotnet user-secrets set "WebAnalytics:Providers:Vercel:AccessToken" "your_token" --project path/to/Your.Umbraco.Web.csproj
@@ -57,9 +57,9 @@ dotnet user-secrets set "WebAnalytics:Providers:Vercel:AccessToken" "your_token"
5757
### Plausible
5858

5959
1. Create a [Plausible Stats API key](https://plausible.io/docs/stats-api) for the site you want to connect.
60-
2. Provide it as `WebAnalytics__Providers__Plausible__AccessToken`.
61-
3. Note the Site ID (normally the registered domain) to enter in Settings.
62-
4. For a self-hosted instance, set `WebAnalytics__Providers__Plausible__BaseUrl` to its public base URL (it must expose `/api/v2/query`). Cloud users keep the default `https://plausible.io/`.
60+
2. Set it as `WebAnalytics__Providers__Plausible__AccessToken`.
61+
3. Note the Site ID, normally the registered domain. You enter it in Settings.
62+
4. On a self-hosted instance, set `WebAnalytics__Providers__Plausible__BaseUrl` to its public base URL, which must expose `/api/v2/query`. Cloud users keep the default `https://plausible.io/`.
6363

6464
```sh
6565
dotnet user-secrets set "WebAnalytics:Providers:Plausible:AccessToken" "your_stats_api_key" --project path/to/Your.Umbraco.Web.csproj
@@ -68,15 +68,15 @@ dotnet user-secrets set "WebAnalytics:Providers:Plausible:BaseUrl" "https://anal
6868

6969
### Per-connection credential override (optional)
7070

71-
When one connection needs a different credential from the shared provider token, set a connection-specific override keyed by the connection GUID. The Settings screen shows the exact key. An override takes precedence over the shared provider credential.
71+
When one connection needs a different credential from the shared provider token, set an override keyed by that connection's GUID. The Settings screen shows the exact key. An override wins over the shared provider credential.
7272

7373
```text
7474
WebAnalytics__ConnectionAccessTokens__{connection-guid}
7575
```
7676

7777
## Configuration
7878

79-
The Settings screen (**Settings → Web Analytics**) is the normal way to manage connections. Configuration precedence works as follows:
79+
The Settings screen (**Settings → Web Analytics**) is the normal way to manage connections. Precedence works like this:
8080

8181
- At startup the package reads the `WebAnalytics` section from server configuration.
8282
- Until an administrator first saves Settings, those non-secret values are the active configuration.
@@ -85,21 +85,21 @@ The Settings screen (**Settings → Web Analytics**) is the normal way to manage
8585

8686
Each application instance keeps its own in-memory report cache, so restart every instance after changing saved settings or credentials.
8787

88-
Besides the provider credentials above, these tunables live under the `WebAnalytics` section:
88+
Besides the provider credentials above, the `WebAnalytics` section takes these options:
8989

9090
| Key | Default | Description |
9191
| --- | --- | --- |
9292
| `Enabled` | `true` | Enables the Analytics section and configured document workspace views. |
9393
| `DefaultRangeDays` | `30` | Initial reporting range, in days. Valid values are 1 to 730. |
9494
| `CacheDuration` | `00:05:00` | Per-instance in-memory cache duration. Valid from zero to one hour. |
9595
| `Connections` | `[]` | Provider connection definitions. The first becomes the initial default. |
96-
| `EnableMockConnections` | `false` | Development-only deterministic connection presets. Never enable in production. |
96+
| `EnableMockConnections` | `false` | Deterministic development-only connection presets. Never enable in production. |
9797

98-
Connections are normally created through the Settings screen, but they can also be bootstrapped from configuration for deployment automation. The [configuration reference](https://web-analytics.thebuilder.dk/reference/configuration) documents every connection key and the full precedence rules.
98+
Connections are normally created through the Settings screen, but deployment automation can bootstrap them from configuration instead. The [configuration reference](https://web-analytics.thebuilder.dk/reference/configuration) documents every connection key and the full precedence rules.
9999

100100
## Documentation
101101

102-
The full documentation site covers everything above in more depth, plus the reporting UI and per-provider capabilities:
102+
The documentation site covers everything above in more depth, plus the reporting UI and per-provider capabilities:
103103

104104
- [Quickstart](https://web-analytics.thebuilder.dk/quickstart): install, connect a provider, and verify the dashboard.
105105
- [Understanding your reports](https://web-analytics.thebuilder.dk/guides/reports): what each metric, breakdown, and control means.
@@ -108,4 +108,4 @@ The full documentation site covers everything above in more depth, plus the repo
108108

109109
## Contributing
110110

111-
Contributions are welcome. See [CONTRIBUTING.md](CONTRIBUTING.md) for the repository layout, local development setup (building the backoffice client, running the sample site, and running the tests), and how to submit a pull request. NuGet publishing guidance is in [docs/releasing.md](docs/releasing.md). GitHub Releases are the authoritative changelog and are surfaced in the [documentation changelog](https://web-analytics.thebuilder.dk/changelog/).
111+
Contributions are welcome. [CONTRIBUTING.md](CONTRIBUTING.md) covers the repository layout, local development setup, and how to open a pull request. [docs/releasing.md](docs/releasing.md) covers NuGet publishing. GitHub Releases are the authoritative changelog and are mirrored in the [documentation changelog](https://web-analytics.thebuilder.dk/changelog/).

0 commit comments

Comments
 (0)