diff --git a/README.md b/README.md
index 22126641..a305e3b0 100644
--- a/README.md
+++ b/README.md
@@ -2,11 +2,7 @@
[](https://github.com/lowlighter/metrics/actions/workflows/workflow.yml) [](https://github.com/lowlighter/lowlighter/actions/workflows/metrics.yml)
-Generate your metrics that you can embed everywhere, including your GitHub profile readme! It works for both user and organization accounts, and even for repositories!
-
-
-> *â ī¸ This is the documentation of **v3.18-beta** (`@master` branch) which includes [unreleased features](https://github.com/lowlighter/metrics/compare/latest...master), see documentation of [**v3.17** (`@latest` branch) here](https://github.com/lowlighter/metrics/blob/latest/README.md).*
-
+Generate metrics that can be embedded everywhere, including your GitHub profile readme! For users, organizations, and even repositories!
@@ -23,15 +19,9 @@ Generate your metrics that you can embed everywhere, including your GitHub profi
-
-
-
-And you can customize these heavily with plugins, templates and hundreds of options!
-
-
-
-
-
-
-## đĻ Interested to get your own?
-
-For a fully-featured experience you should use **metrics** as a [GitHub Action](https://github.com/marketplace/actions/metrics-embed), but you can also try it now at [metrics.lecoq.io](https://metrics.lecoq.io/) with your GitHub username!
-
-Choose `đ Metrics embed` if you want to customize your GitHub profile and `⨠Metrics insights` to get a quick overview of your GitHub statistics:
-
-
-### đ Features
-
-* Create infographics from **38 plugins**, **4 templates** and **233 options**
- * Even more **customization** with [community templates](source/templates/community) or by [forking this repository](https://github.com/lowlighter/metrics/network/members) and editing HTML/CSS/EJS
-* Support **users**, **organizations** and even **repositories**
-* Transparent by default so it'll blend well whether light or dark mode is used
-* Save your metrics as **images** (SVG, PNG or JPEG), **markdown**, **PDF** or **JSON**
- * Upload them to GitHub through commits, pull requests and gists, or handle renders yourself
-* Works either as [GitHub action](https://github.com/marketplace/actions/metrics-embed) or as [web instance](https://metrics.lecoq.io)
-
-
-# đ How to use?
-
-## âī¸ Using GitHub Action on your profile repository (~5 min setup)
-
-Setup a GitHub Action which runs periodically and pushes your generated metrics image to your repository.
-See all supported options in [action.yml](/action.yml).
-
-Assuming your username is `my-github-user`, you can then embed rendered metrics in your readme like below:
-
-```markdown
-
-
-
-
-```
-
-
-đŦ How to setup? (click to expand)
-
-
-
-### 0. Setup your personal repository
-
-Create a repository with the same name as your GitHub login (if it's not already done).
-
-
-
-Its `README.md` will be displayed on your user profile:
-
-
-
-### 1. Create a GitHub personal token
-
-From the `Developer settings` of your account settings, select `Personal access tokens` to create a new token.
-
-No additional scopes are needed for basic metrics, but you may have to grant additional scope depending on what features you're planning to use:
-- `public_repo` scope for some plugins
-- `read:org` scope for all organizations related metrics
-- `repo` scope for all private repositories related metrics
- - `read:user` scope may also be required for some private repositories related metrics
-
-
-
-A scope-less token can still display private contributions by enabling `Include private contributions on my profile` in your account settings:
-
-
-
-If a plugin has not enough scopes to operate (and `plugins_errors_fatal` isn't enabled), it'll be reported in the rendering like below:
-
-
-
-### 2. Put your GitHub personal token in your repository secrets
-
-Go to the `Settings` of your repository to create a new secret and paste your freshly generated GitHub token there.
-
-
-
-### 3. Create a GitHub Action workflow in your repository
-
-Create a new workflow from the `Actions` tab of your repository and paste the following:
-
-```yaml
-name: Metrics
-on:
- # Schedule updates (each hour)
- schedule: [{cron: "0 * * * *"}]
- # Lines below let you run workflow manually and on each commit (optional)
- workflow_dispatch:
- push: {branches: ["master", "main"]}
-jobs:
- github-metrics:
- runs-on: ubuntu-latest
- steps:
- # See action.yml for all options
- - uses: lowlighter/metrics@latest
- with:
- # Your GitHub token
- token: ${{ secrets.METRICS_TOKEN }}
-```
-
-See all supported options in [action.yml](/action.yml).
-
-Rendered metrics will be committed to your repository on each run.
-
-
-
-#### Choosing between `@latest`, `@master` or a fork
-
-If you wish to use new features as they're being released, you can switch from `@latest` to `@master`.
-As the latter is used as a development branch, jobs may fail from time to time (although we try to mitigate this).
-
-For convenience, it is possible to use `@main` instead of `@master`.
-
-When using a token with additional permissions, it is advised to fork this repository and use it instead to minimize security risks:
-```yaml
- - uses: my-github-username/metrics@master
- # If you make changes on your fork, be sure not leave @latest as tag!
-```
-
-In this case, please consider watching new releases to stay up-to-date and enjoy latest features!
-
-`@latest` will be updated on each release. Metrics doesn't introduce breaking changes **from an user point of view** (i.e. your workflows will always be valid) so you can follow release cycles without worrying.
-
-#### Examples workflows
-
-Metrics displayed on this page are rendered from this [workflow](https://github.com/lowlighter/lowlighter/blob/master/.github/workflows/metrics.yml) so you can check it out for some code examples about plugins usage.
-
-You can also take a look at this [user workflow](https://github.com/lowlighter/lowlighter/blob/master/.github/workflows/personal.yml) if you want.
-
-### 4. Embed link into your README.md
-
-Update your README.md to embed your metrics:
-
-```markdown
-
-
-
-
-
-
-```
-
-
-## đ Using the shared instance (~1 min setup, but with limitations)
-
-For convenience, you can use the shared instance available at [metrics.lecoq.io](https://metrics.lecoq.io) without any additional setup.
-
-```markdown
-
-```
-
-This is mostly intended for previews, to enjoy all features consider using GitHub Action instead.
-Availability is not guaranteed.
-
-
-đŦ Fair use (click to expand)
-
-
-
-To ensure service availability, shared instance has a few limitations:
- * Images are cached for 1 hour
- * Rendered metrics **won't be updated** during this time window when queried
- * You can manually update rendering again your metrics on [metrics.lecoq.io](https://metrics.lecoq.io)
- * A rate limiter is enabled to prevent denial of service (it doesn't affect already cached metrics)
- * Some plugins may not be available
-
-Service is provided free of charge, so please be gentle with it đ
-
-
-## đī¸ Deploying your own web instance (~15 min setup, depending on your sysadmin knowledge)
-
-
-Setup a metrics instance on your server if you don't want to use GitHub Actions and [metrics.lecoq.io](https://metrics.lecoq.io).
-See all supported options in [settings.example.json](/settings.example.json).
-
-Assuming your username is `my-github-user`, you can then embed rendered metrics in your readme like below:
-
-```markdown
-
-```
-
-
-đŦ How to setup? (click to expand)
-
-
-
-### 0. Prepare your server
-
-You'll need a server with a recent version of [Docker](https://www.docker.com/).
-
-### 1. Create a GitHub personal token
-
-From the `Developer settings` of your account settings, select `Personal access tokens` to create a new token.
-
-No additional scopes are needed.
-
-
-
-### 2. Configure your instance
-
-Fetch [settings.example.json](/settings.example.json) which contains all supported option.
-```shell
-wget https://raw.githubusercontent.com/lowlighter/metrics/master/settings.example.json
-```
-
-Edit `settings.json` to configure your instance.
-
-```javascript
-{
- //GitHub API token
- "token":"GITHUB_TOKEN",
- //Other options...
-}
-```
-
-If you plan to make your web instance public, it is advised to restrict its access thanks to rate limiter and access list.
-
-### 3. Start docker container
-
-Metrics docker images are published on [GitHub Container Registry](https://github.com/lowlighter/metrics/pkgs/container/metrics).
-
-Configure the following variables (or hardcode them in the command in the next block):
-```shell
-# Select an existing docker image tag
-VERSION=latest
-# Path to configured `settings.json`
-SETTINGS=/path/to/settings.json
-# Port used internally (use the same one than in `settings.json`)
-SERVICE_PORT=3000
-# Port to publish
-PUBLISHED_PORT=80
-```
-
-And start the container using the following command:
-```shell
-docker run -d --workdir=/metrics --entrypoint="" -p=127.0.0.1:$PUBLISHED_PORT:$SERVICE_PORT --volume=$SETTINGS:/metrics/settings.json ghcr.io/lowlighter/metrics:$VERSION npm start
-```
-
-### 4. Embed link into your README.md
-
-Edit your repository readme and add your metrics image from your server domain:
-
-```markdown
-
-```
-
-### 5. (optional) Setup your instance as a service
-
-To ensure that your instance will restart if it reboots or crashes, you should set it up as a service.
-This is described below for Linux-like systems which support *systemd*.
-
-Create a new service file `/etc/systemd/system/github_metrics.service` and paste the following after editing paths inside:
-
-```ini
-[Unit]
-Description=Metrics
-After=network-online.target
-Wants=network-online.target
-
-[Service]
-Type=simple
-ExecStart=(command to run as service)
-
-[Install]
-WantedBy=multi-user.target
-```
-
-Reload services, enable it, start it and check if it is up and running:
-
-```shell
-systemctl daemon-reload
-systemctl enable github_metrics
-systemctl start github_metrics
-systemctl status github_metrics
-```
-
-### Alternative option: run an instance locally (intended for testing and development)
-
-To run an instance without docker, you'll need to have [NodeJS](https://nodejs.org) (see used version in [Dockerfile](/Dockerfile#L1-L2)) installed.
-
-Clone repository, install dependencies and copy configuration example to `settings.json`:
-
-```shell
-git clone https://github.com/lowlighter/metrics.git
-cd metrics/
-npm install --only=prod
-cp settings.example.json settings.json
-```
-
-Once you've finished configuring metrics, start your instance using the following command:
-
-```shell
-npm start
-```
-
-You should now be able to access your server with provided port in `setting.json` from your browser.
-
-
-
-
-đ HTTP parameters (click to expand)
-
-
-
-Most of options from [action.yml](/action.yml) are actually supported by web instance, though syntax is slightly different.
-All underscores (`_`) must be replaced by dots (`.`) and `plugin_` prefixes must be dropped.
-
-For example, to configure pagespeed plugin you'd use the following:
-```
-https://my-personal-domain.com/my-github-user?pagespeed=1&pagespeed.detailed=1&pagespeed.url=https%3A%2F%2Fexample.com
-```
-
-Note that url parameters must be [encoded](https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Objets_globaux/encodeURIComponent).
-
-As for `base` content, which is enabled by default, sections are available through "`base.`".
-
-For example, to display only `repositories` section, use:
-```
-https://my-personal-domain.com/my-github-user?base=0&base.repositories=1
-```
-
-
-
# đ Documentation
-### đ§° Plugin compatibility matrix
+> *â ī¸ This is the documentation of **v3.18-beta** (`@master`/`@main` branches) which includes [unreleased features](https://github.com/lowlighter/metrics/compare/latest...master). See documentation for [**v3.17** (`@latest` branch) here](https://github.com/lowlighter/metrics/blob/latest/README.md).*
-
-
- | Template/Plugin |
- đī¸ |
- đ
|
- đˇī¸ |
- đ |
- đ |
- đ |
- đĄ |
- đ
|
- đī¸ |
- đ |
- đ§âđ¤âđ§ |
- ⨠|
- đī¸ |
- â |
- đ° |
- đ |
- đŠ |
- đŦ |
- đ |
- đ¨âđģ |
- đ§Ž |
- đ |
- đĢ |
- đ |
- đ |
- đĢ |
- đ |
- âąī¸ |
- đŧ |
- đ¨ī¸ |
- đ¸ |
- đ¤ |
- âī¸ |
- đŧ |
- â° |
- đš |
-
-
- | đ Classic template |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
-
-
- | đ Repository template |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
-
-
- | đ Terminal template |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
-
-
- | đ Markdown template |
- âī¸ |
- â |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- â |
-
-
- |
-
-
- | Mode/Plugin |
- đī¸ |
- đ
|
- đˇī¸ |
- đ |
- đ |
- đ |
- đĄ |
- đ
|
- đī¸ |
- đ |
- đ§âđ¤âđ§ |
- ⨠|
- đī¸ |
- â |
- đ° |
- đ |
- đŠ |
- đŦ |
- đ |
- đ¨âđģ |
- đ§Ž |
- đ |
- đĢ |
- đ |
- đ |
- đĢ |
- đ |
- âąī¸ |
- đŧ |
- đ¨ī¸ |
- đ¸ |
- đ¤ |
- âī¸ |
- đŧ |
- â° |
- đš |
-
-
- | đ¤ User |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
-
-
- | đĨ Organization |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- â |
- âī¸ |
- â |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- â |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
-
-
- | đ Repository |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- â |
- âī¸ |
- â |
- â |
- â |
- â |
- âī¸ |
- âī¸ |
- â |
- âī¸ |
-
-
-*Note: **markdown template** can actually render any kind of SVG metrics using [`embed` function](https://github.com/lowlighter/metrics/blob/master/source/templates/markdown/example.md#embedding-svg-metrics)*
+
+## đĻŽ Setup
+
+There are several ways to setup metrics, each having its advantages and disadvantages:
+
+* [âī¸ Using GitHub Action on a profile repository *(~10 min)*](/.github/readme/partials/setup/action.md)
+ * âī¸ All features
+ * âī¸ High availability (no downtimes)
+ * â Configuration can be a bit time-consuming
+* [đ Using the shared instance *(~1 min)*](/.github/readme/partials/setup/shared.md)
+ * âī¸ Easily configurable and previewable
+ * â Limited features *(compute-intensive features are disabled)*
+* đŗ Using command line with docker *(~5 min)* *(documentation not available yet)*
+ * âī¸ Suited for one-time rendering
+* [đī¸ Deploying your own web instance *(~20 min)*](/.github/readme/partials/setup/web.md)
+ * â Mostly intended for development, or to create another shared instance
+
+Additional resources for setup:
+* [đĻ Configuring metrics for organizations](/.github/readme/partials/organizations.md)
+* [đ§° Template/Plugin compatibility matrix](/.github/readme/partials/compatibility.md)
## đŧī¸ Templates
Templates lets you change general appearance of rendered metrics.
-See their respective documentation for more informations about how to setup them:
+
* [đ Classic template](/source/templates/classic/README.md)
* [đ Repository template](/source/templates/repository/README.md)
@@ -1149,10 +481,9 @@ See their respective documentation for more informations about how to setup them
## đ§Š Plugins
-Plugins are features which provide additional content and lets you customize your rendered metrics.
-See their respective documentation for more informations about how to setup them.
+Plugins provide additional content and lets you customize your rendered metrics.
-The following plugins are maintained by Metric's core team:
+**đĻ Maintained by core team**
* **Core**
* [đī¸ Base content](/source/plugins/base/README.md)
@@ -1194,76 +525,25 @@ The following plugins are maintained by Metric's core team:
* [đš Stock prices](/source/plugins/stock/README.md)
* [đ¤ Latest tweets](/source/plugins/tweets/README.md)
* [â° WakaTime plugin](/source/plugins/wakatime/README.md)
+**đ˛ Maintained by community**
+* [đ Nightscout](/source/plugins/nightscout/README.md) by [@legoandmars](https://github.com/legoandmars)
+* [đŠ PoopMap plugin](/source/plugins/poopmap/README.md) by [@matievisthekat](https://github.com/matievisthekat)
+* [đ¸ Website screenshot](/source/plugins/screenshot/README.md) by [@lowlighter](https://github.com/lowlighter)
-### đ˛ Community plugins
+## đĒ Contributing
-The following plugins are provided and maintained by Metrics's user community:
- * [đ Nightscout](/source/plugins/nightscout/README.md) by [@legoandmars](https://github.com/legoandmars)
- * [đŠ PoopMap plugin](/source/plugins/poopmap/README.md) by [@matievisthekat](https://github.com/matievisthekat)
- * [đ¸ Website screenshot](/source/plugins/screenshot/README.md) by [@lowlighter](https://github.com/lowlighter)
+If you are interested in contributing, the following resources may interest you:
-### đĻ Organizations metrics
+* [đĒ Contribution guide](/CONTRIBUTING.md)
+* [đ§Ŧ Architecture](/ARCHITECTURE.md)
+* [đ License](/LICENSE)
+* **:octocat: GitHub resources**
+ * [đ GitHub GraphQL API](https://docs.github.com/en/graphql)
+ * [đ GitHub GraphQL Explorer](https://docs.github.com/en/free-pro-team@latest/graphql/overview/explorer)
+ * [đ GitHub Rest API](https://docs.github.com/en/rest)
+ * [đ GitHub Octicons](https://github.com/primer/octicons)
-While metrics targets mainly user accounts, it's possible to render metrics for organization accounts.
-
-
-
-
-đŦ Metrics for organizations (click to expand)
-
-
-
-Setup is the same as for user accounts, though you'll need to add `read:org` scope, **whether you're member of target organization or not**.
-
-
-
-You'll also need to set `user` option with your organization name.
-
-If you're encounting errors and your organization is using single sign-on, try to [authorize your personal token](https://docs.github.com/en/free-pro-team@latest/github/authenticating-to-github/authorizing-a-personal-access-token-for-use-with-saml-single-sign-on).
-
-Most of plugins supported by user accounts will work with organization accounts, but note that rendering metrics for organizations consume way more APIs requests.
-
-To support private repositories, add full `repo` scope to your personal token.
-
-#### âšī¸ Example workflow
-
-```yaml
-- uses: lowlighter/metrics@latest
- with:
- # ... other options
- token: ${{ secrets.METRICS_TOKEN }} # A personal token from an user account with read:org scope
- user: organization-name # Organization name
-```
-
-
-
-đŦ Organizations memberships for user accounts (click to expand)
-
-
-
-Only public memberships can be displayed by metrics by default.
-You can manage your membership visibility in the `People` tab of your organization:
-
-
-
-For organization memberships, add `read:org` scope to your personal token.
-
-
-
-
-
-## đĒ Customizing and contributing
-
-Metrics is built to be easily customizable.
-Fork this repository, switch used action from `lowlighter/metrics@latest` to your fork and start coding!
-
-See [ARCHITECTURE.md](/ARCHITECTURE.md) for more informations about how code is structured.
-
-To report a bug fill an [issue](https://github.com/lowlighter/metrics/issues) describing it.
-To suggest new features or requesting help to setup metrics, check out [discussions](https://github.com/lowlighter/metrics/discussions).
-
-If you want to contribute, submit a [pull request](https://github.com/lowlighter/metrics/pulls).
-Be sure to read [CONTRIBUTING.md](/CONTRIBUTING.md) for more information about this.
+Use [`đŦ discussions`](https://github.com/lowlighter/metrics/discussions) for feedback, new features suggestions, bugs reports or to request help for installation.
## đ License
@@ -1273,32 +553,7 @@ MIT License
Copyright (c) 2020-present lowlighter
```
-
-
-See full license in [LICENSE.md](/LICENSE.md)
-

-

-[`âĨī¸ Become a sponsor`](https://github.com/sponsors/lowlighter)
-
-## đ Useful references
-
-* [GitHub GraphQL API](https://docs.github.com/en/graphql)
-* [GitHub GraphQL Explorer](https://docs.github.com/en/free-pro-team@latest/graphql/overview/explorer)
-* [GitHub Rest API](https://docs.github.com/en/rest)
-* [GitHub Octicons](https://github.com/primer/octicons)
- * See [GitHub Logos and Usage](https://github.com/logos) for more information.
-
-### ⨠Inspirations
-
-* [anuraghazra/github-readme-stats](https://github.com/anuraghazra/github-readme-stats)
-* [jstrieb/github-stats](https://github.com/jstrieb/github-stats)
-* [ankurparihar/readme-pagespeed-insights](https://github.com/ankurparihar/readme-pagespeed-insights)
-* [jasonlong/isometric-contributions](https://github.com/jasonlong/isometric-contributions)
-* [jamesgeorge007/github-activity-readme](https://github.com/jamesgeorge007/github-activity-readme)
-* [vvo/sourcekarma](https://github.com/vvo/sourcekarma)
-* [ryo-ma/github-profile-trophy](https://github.com/ryo-ma/github-profile-trophy)
-* [teoxoy/profile-readme-stats](https://github.com/teoxoy/profile-readme-stats)