Ensemble is the platform that powers the [Firefox Public Data
Report](https://data.firefox.com), a weekly public report on the activity,
behavior, and hardware configuration of Firefox Desktop users.
Ensemble fetches data from
[ensemble-transposer](https://github.com/mozilla/ensemble-transposer), a JSON
server that adds metadata to the raw data hosted by Mozilla data engineers.
See [`docs/architecture/data-pipeline.md`](docs/architecture/data-pipeline.md)
for how that data is generated upstream, where it lives, and which
repositories are involved.
Ensemble is written in React, built with [Vite](https://vite.dev/).
## Run
### For development
Run `npm start`. See `CONTRIBUTING.md` for the full command reference.
Any of the environment variables in *.env* can be overridden. For example:
`VITE_SITE_TITLE='Firefox Public Lore Report' npm start`
### In production
Run `npm run build:app` to produce a static build in `build/` (see `CONTRIBUTING.md` for the full
command reference). How that build is deployed is not documented in this repository.
Any of the environment variables in *.env* can be overridden.
## Development
See `CONTRIBUTING.md` for build, lint, and test commands, coding conventions,
and the current status of this repository's test suites.
### Analyzing
To analyze the size of the JavaScript bundle that will be served, run `npm run
size`.
### Notes
#### Versioning
We maintain a version number for this project. We try to update it when we
deploy new code. The version number is specified in package.json.
The number looks like a semantic version number, but [semver isn't suitable for
applications](https://softwareengineering.stackexchange.com/a/255201). We
instead follow this basic guideline: the first number is incremented for major
changes, the second number is incremented for medium changes, and the third
number is incremented for small changes.