diff --git a/README.md b/README.md
index d18747a..644a45a 100644
--- a/README.md
+++ b/README.md
@@ -212,8 +212,8 @@ By default, the image will run at ```http://127.0.0.1:80/```. If it doesn't work
- run ```npm run build```
- run ```docker build -t assayo .```
- visually check the image ```docker run --name assayo -p 80:80 -d assayo```;
-- add tag ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- push image to [Docker Hub](https://hub.docker.com/r/bakhirev/assayo);
+- add tag ```docker tag assayo bakhirev/assayo:latest```;
+- push image to [Docker Hub](https://hub.docker.com/r/bakhirev/assayo) ```docker push bakhirev/assayo:latest```;
### ️ 🛠️ About application
diff --git a/documents/DE.md b/documents/DE.md
index 66ff293..6ef5241 100644
--- a/documents/DE.md
+++ b/documents/DE.md
@@ -1,44 +1,68 @@
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | __[Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)__ | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
# [Assayo](https://assayo.online/?ref=github&lang=de)
+
-Visualisierung und analyse ihrer Git-datenbank ([demo](https://assayo.online/demo/?dump=./test.txt&lang=ru)).
-
-##### Mitarbeiter können den neuen arbeitsplatz bewerten
+Visualisierung und analyse ihrer Git-datenbank ([demo](https://assayo.online/demo/?ref=github&lang=de&dump=./test.txt)).
+
+##### 👨💻 Mitarbeiter können den neuen arbeitsplatz bewerten
- arbeitsgeschwindigkeit;
- anzahl der überstunden;
- verantwortungsbereiche;
- umfang des neuen funktionsweise und fehlerbestandes;
- arbeitsstil der kollegen;
-
-##### Der vorgesetzte kann die mitarbeiter bewerten
+
+##### 👨💼 Der vorgesetzte kann die mitarbeiter bewerten
- ermitteln sie die untätigen;
- schätzen sie den codeumfang ab;
- erfahren sie die arbeitsgeschwindigkeit;
- merken sie verhaltensanomalien;
- beobachten sie das arbeitsgeschehen nach wochen;
-
-##### Der Investor kann das produkt bewerten
+
+##### 👑 Der Investor kann das produkt bewerten
- produktpreis;
- preis des neuen funktionsumfanges;
- entwicklungszeit;
- vorhersage der zeit für überarbeitungen;
- preiskostenprognose;
-
-### Wie kann ich die anzahl der commits schnell sehen?
-
+
+### Table of contents
+- [Wie kann ich die anzahl der commits schnell sehen?](#link-4)
+- [Wie kann ich autoren zusammenbringen?](#link-5)
+- [Wie kann ich daten aus git?](#link-6)
+ - [Für die onlineansicht](#link-7)
+ - [Zum surfen ohne internet](#link-8)
+- [Wie kann ich den bericht sehen?](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [Wie kann ich die berichtsdatei neu erstellen?](#link-12)
+- [Wie kann ich den bericht zur microservices-gruppe anzeigen?](#link-13)
+- [Wie kann ich die benutzeroberfläche in ihren markenfarben neu streichen?](#link-14)
+- [Wie signiere ich commits?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [ Use file commit-msg](#link-17)
+ - [ Use package pre-commit](#link-18)
+- [Wie kann ich die datenerfassung automatisieren?](#link-19)
+ - [With backend](#link-20)
+ - [Kein bekend](#link-21)
+- [DevOps ](#link-22)
+ - [Öffentlicher server](#link-23)
+ - [Privater server](#link-24)
+ - [Aktualisieren eines Docker-Images](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [Veröffentlichungen, ungefähr alle sechs monate. Was weiter:](#link-28)
+ - [Wie kann ich eine übersetzung hinzufügen oder bearbeiten?](#link-29)
+ - [Wünsche, Anregungen, Kommentare](#link-30)
+
+### 🚀 Wie kann ich die anzahl der commits schnell sehen?
In der wurzelverzeichnis ihres projektes muss der befehl ausgeführt werden:
```
git shortlog -s -n -e
```
-### Wie kann ich autoren zusammenbringen?
+
+### 🎭 Wie kann ich autoren zusammenbringen?
Sie müssen eine datei im stammverzeichnis ihres projekts erstellen `.mailmap`.
Beispiel für den Inhalt einer Datei:
```
@@ -46,59 +70,57 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
Sie können mehr über das format dieser datei lesen[hier](https://git-scm.com/docs/gitmailmap).
-
-### Wie kann ich daten aus git?
-
-#### Für die onlineansicht
+
+### 📤 Wie kann ich daten aus git?
+
+#### Für die onlineansicht
In der wurzelverzeichnis ihres projektes ausführen:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### Zum surfen ohne internet
-
+
+#### Zum surfen ohne internet
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git erstellt eine datei `log.txt`.
Diese datei enthält die daten zum erstellen des berichts.
-
Der unterschied zwischen den formaten liegt im vorhandensein einer wrapper für zeilen. Das format ohne internet wird wie eine js-datei geladen, wenn sie es einfach öffnen. `/build/index.html`
-
-### Wie kann ich den bericht mit dem internet anzeigen?
-
+
+### 📈 Wie kann ich den bericht sehen?
+
+#### Online
- gehe zu [Webseite](https://assayo.online/)
- den knopf drücken “[Demonstration](https://assayo.online/demo?lang=ru)”
- datei ziehen `log.txt` in das Browserfenster
-
-### Wie kann ich einen bericht ohne internet anzeigen?
+
+#### Offline
- laden sie dieses repository herunter
- datei ziehen `log.txt` in den ordner`/build`
- starten `/build/index.html`
- oder ziehen sie einen ordner `/build` zu sich ins repository (der ort, an dem es liegt `log.txt`). Sie können den namen ändern. zum beispiel mit dem namen `/build` auf den namen `/report`
-
Es ist wichtig, dass die log.txt datei vom befehl für die offlineansicht erstellt wird.
-
-### Wie kann ich die berichtsdatei neu erstellen?
+
+### 🏭 Wie kann ich die berichtsdatei neu erstellen?
- Laden sie dieses repository herunter
- Erfüllen `npm install`
- Erfüllen `npm run build`
- Der neue build wird im ordner sein `/build`
-
-### Wie kann ich den bericht zur microservices-gruppe anzeigen?
+
+### 🗃️ Wie kann ich den bericht zur microservices-gruppe anzeigen?
- Datei für jeden microservice generieren `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.)
- Siehe “Wie kann ich den bericht mit internet ansehen?”. Im letzten schritt ziehen sie alle dateien gleichzeitig in das browserfenster.
- Siehe “Wie kann man den bericht ohne internet ansehen?” Im zweiten schritt ziehen sie die microservice-dateien alle (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.) in den berichtsordner (`/build`).
-
-### Wie kann ich die benutzeroberfläche in ihren markenfarben neu streichen?
+
+### 🎨 Wie kann ich die benutzeroberfläche in ihren markenfarben neu streichen?
Sie können ihr skin für die schnittstelle schreiben. Kann geändert werden:
- **Überschrift**. Sie können es im URL-parameter angeben ```title```. Zum beispiel: ```?title=you company```
- **CSS stile**. Um dies zu tun, müssen sie die CSS-datei vorbereiten und ihre adresse im URL-parameter angeben ```theme```. Zum beispiel: ```?theme=//company.com/some.css```. Sie können klassennamen als selektoren verwenden. Die meisten von ihnen ändern sich nicht, wenn eine neue version veröffentlicht wird.
- **Sprache**. Sie können es im URL-parameter angeben ```lang```. Zum Beispiel: ```?lang=es```
-
-### Wie signiere ich commits?
-
+
+### 📝 Wie signiere ich commits?
Folge der praxis [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Zum beispiel:
```
JIRA-1234 feat(profile): added avatar for user
@@ -107,27 +129,53 @@ JIRA-1234 feat(profile): added avatar for user
- art der arbeit `(feat, fix, style, refactor, test, doc usw.)`
- arbeitsbereich `(profile - ein abschnitt der website, eine seite oder eine neue funktionalität, mit einem wort)`
- beschreibung der arbeit `(added avatar for user)`
-
-### Wie kann ich die datenerfassung automatisieren?
-
-#### Kein bekend
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 Wie kann ich die datenerfassung automatisieren?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Kein bekend
- erstellen sie einen klon ihres repositorys;
- kopieren sie den ordner `build` aus dem aktuellen repository;
- öffnen `build/index.html` im browser und zu lesezeichen hinzufügen;
- fügen sie eine verknüpfung hinzu `build/assets/ci-cd.sh` in den startordner (windows);
-
Jedes mal, wenn der computer neu gestartet wird, aktualisiert das skript die statistiken für alle daten, die automatisch in den hauptzweig aufgenommen wurden.
-
-### DevOps (CI/CD)
-
-#### Öffentlicher server
-
+
+### 🛠️ DevOps (CI/CD)
+
+#### Öffentlicher server
Sie können eine datendatei zum erstellen eines berichts auf eine öffentliche URL hochladen. Sie können die Website verwenden, um sie zu visualisieren [assayo](https://assayo.online/). Geben sie im URL-parameter die adresse an, an der die daten liegen ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### Privater server
+
+#### Privater server
- herunterladen [docker das bild](https://hub.docker.com/r/bakhirev/assayo);
- führen Sie es im lokalen netzwerk aus;
- um berichte anzuzeigen, verwenden sie die webschnittstelle, um die adresse anzugeben, an der sich die daten befinden, im URL-parameter ```dump```:
@@ -136,27 +184,32 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - die adresse des assayo-containers, er hört auf port 80;
you_url - URL die adresse ihres containers mit git-logs;
```
-
Standardmäßig wird das abbild an der folgenden adresse ausgeführt ```http://127.0.0.1:80/```. Wenn es nicht funktioniert, überprüfen sie, ob der port 80 frei ist.
-#### Aktualisieren eines Docker-Images
-
+
+#### Aktualisieren eines Docker-Images
- befehl ausführen ```npm run build```
- befehl ausführen ```docker build -t assayo .```
- ergebnis überprüfen ```docker run --name assayo -p 80:80 -d assayo```;
-- befehl ausführen ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- senden sie ein containerimage an Docker Hub
-
-### Veröffentlichungen, ungefähr alle sechs monate. Was weiter:
+- befehl ausführen ```docker tag assayo bakhirev/assayo:latest```;
+- senden sie ein containerimage an Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 Veröffentlichungen, ungefähr alle sechs monate. Was weiter:
Schau [haupt dokumentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-
-### Wie kann ich eine übersetzung hinzufügen oder bearbeiten?
-
+
+#### 🗺️ Wie kann ich eine übersetzung hinzufügen oder bearbeiten?
Sie können eine neue übersetzung hinzufügen oder die aktuelle im abschnitt korrigieren ```ts/translations/```.
[Anleitung](https://github.com/firstcontributions/first-contributions)
-
-### Wünsche, Anregungen, Kommentare
+
+#### 📧 Wünsche, Anregungen, Kommentare
- telegramm [@bakhirev](https://t.me/bakhirev) (vorrangiger kommunikationsweg)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- web site [https://assayo.online/](https://assayo.online/?ref=github&lang=de)
-
+- web site [https://assayo.online/](https://assayo.online/?ref=github&lang=de)
\ No newline at end of file
diff --git a/documents/EN.md b/documents/EN.md
new file mode 100644
index 0000000..3c4eb19
--- /dev/null
+++ b/documents/EN.md
@@ -0,0 +1,223 @@
+> __[English](https://github.com/bakhirev/assayo)__ | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
+> The [main documentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) is in russian. This is a translation. It may contain errors. If you a native speaker, you can help improve this translation. Thanks!
+
+# [Assayo](https://assayo.online/?ref=github&lang=en)
+
+
+Visualization and analysis of your git repository data ([demo](https://assayo.online/demo/?ref=github&lang=en&dump=./test.txt)).
+
+##### 👨💻 Employee can evaluate new workplace
+- work speed;
+- number of extra hours worked;
+- areas of competence;
+- volume of features and bugs;
+- working style of colleagues;
+
+##### 👨💼 Team lead can evaluate employees
+- identify slackers;
+- estimate the amount of code;
+- learn the work speed;
+- notice behavioral anomalies;
+- see the dynamics of work by week;
+
+##### 👑 Founder can evaluate product
+- product cost;
+- cost of features;
+- development time;
+- forecast of rework time;
+- forecast cost;
+
+### Table of contents
+- [How to quickly view the number of commits?](#link-4)
+- [How to concat authors?](#link-5)
+- [How to export data from git?](#link-6)
+ - [For online viewing](#link-7)
+ - [For offline viewing](#link-8)
+- [How to view the report?](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [How to rebuild the report build?](#link-12)
+- [How to view a report on a group of microservices?](#link-13)
+- [How to brand the interface?](#link-14)
+- [How to sign commits?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [Use file commit-msg](#link-17)
+ - [Use package pre-commit](#link-18)
+- [How to automate data collection?](#link-19)
+ - [With backend](#link-20)
+ - [Without backend](#link-21)
+- [DevOps ](#link-22)
+ - [Public server](#link-23)
+ - [Private server](#link-24)
+ - [How to update the Docker image?](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [How to add or edit a translation?](#link-28)
+ - [RoadMap:](#link-29)
+ - [Feedback, comments](#link-30)
+
+### 🚀 How to quickly view the number of commits?
+In the root directory of your project, run:
+```
+git shortlog -s -n -e
+```
+
+### 🎭 How to concat authors?
+In the root directory of your project, you need to create a `.mailmap` file.
+Example of the contents of the file:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Read more about the format of this file you can [here](https://git-scm.com/docs/gitmailmap).
+
+### 📤 How to export data from git?
+
+#### For online viewing
+In the root directory of your project run:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+
+#### For offline viewing
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git will create a file `log.txt`.
+This file contains data for show a report.
+The difference between the online and offline format is the presence of a wrapper for strings. The offline format will be pulled up like a `js` file if you just opened `/build/index.html `
+
+### 📈 How to view the report?
+
+#### Online
+- go to the [website](https://assayo.online/);
+- click the “[Demo](https://assayo.online/demo?ref=github&lang=en)” button;
+- drag the `log.txt` file into the browser window;
+
+#### Offline
+- download this repository;
+- drag the `log.txt` file to the `/build` folder;
+- run `/build/index.html`;
+- or drag the `/build` folder to your repository (where the `log.txt` is located). You can change the name. For example, from `/build` to `/report`.
+ In this case, it is important that the `log.txt` file is generated by the command for offline viewing.
+
+### 🏭 How to rebuild the report build?
+- download this repository
+- run `npm install`
+- run `npm run build`
+- the new build will be in the `/build` folder
+
+### 🗃️ How to view a report on a group of microservices?
+- generate for each microservice file `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) You can do this manually, or use the [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) module for automatic log collection;
+- see “How to view an online report?”. At the last step, drag all the files at once into the browser window.
+- see “How to see a report offline?”. At the second step, drag all microservice files (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) to the report folder (`/build`).
+
+### 🎨 How to brand the interface?
+You can create your own interface theme. Options:
+- **Title**. You can set default document title in the URL parameter ```title```. Example: ```?title=You Company```
+- **Visual theme**. To do this, you need to prepare a CSS file with new styles and specify its URL in the ```theme``` parameter. Example: ```?theme=//company.com/some.css```. You can use class names as selectors. Most of them do not change in new versions.
+- **Language**. You can set language in the URL parameter ```lang```. Example: ```?lang=es```
+
+### 📝 How to sign commits?
+Follow the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Example:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- task number in the task tracker `(JIRA-1234)`
+- type of work `(feat, fix, style, refactor, test, doc и т.д.)`
+- feature `(profile - new page on site or new function, use one (two) short wordor an abbreviation)`
+- what problem were solved `(Added avatar for user)`
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 How to automate data collection?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Without backend
+- create a clone of the repository you need;
+- copy the `build` folder to the root;
+- open `build/index.html` in the browser and add it to bookmarks;
+- add a shortcut to `build/assets/ci-cd.sh` to the startup folder (Windows);
+ Every time you restart the computer, the script will update statistics on all the data that automatically merged into the main branch.
+
+### 🛠️ DevOps (CI/CD)
+
+#### Public server
+You can upload the data file for report construction to a public URL. And use the website’s [assayo](https://assayo.online/?ref=github&lang=en) to visualize it.
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Private server
+- download the [docker image](https://hub.docker.com/r/bakhirev/assayo);
+- run it on your local network;
+- use the web interface to view the reports, set the URL of the data in the URL parameter ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - URL of the assayo container, it listens on port 80;
+you_url - URL of your container with git logs;
+```
+By default, the image will run at ```http://127.0.0.1:80/```. If it doesn't work, check if port 80 is free.
+
+#### How to update the Docker image?
+- remove metrics, alerts, old builds;
+- run ```npm run build```
+- run ```docker build -t assayo .```
+- visually check the image ```docker run --name assayo -p 80:80 -d assayo```;
+- add tag ```docker tag assayo bakhirev/assayo:latest```;
+- push image to [Docker Hub](https://hub.docker.com/r/bakhirev/assayo) ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 How to add or edit a translation?
+You can add a new translation or correct an existing one in the ```ts/translations/``` folder.
+[Instruction](https://github.com/firstcontributions/first-contributions)
+
+#### 🗺️ RoadMap:
+Releases are planned approximately once every six months. What’s next:
+- more recommendations and achievements;
+- annual/monthly summaries, report printing;
+- localization and internationalization;
+- file analysis;
+- different roles for statistics (hiding finances);
+- development of the backend, integration with other systems;
+
+#### 📧 Feedback, comments
+- telegramm [@bakhirev](https://t.me/bakhirev) (priority method of communication)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- website [https://assayo.online/](https://assayo.online/?ref=github&lang=en)
\ No newline at end of file
diff --git a/documents/ES.md b/documents/ES.md
index ea0b08c..98d90ea 100644
--- a/documents/ES.md
+++ b/documents/ES.md
@@ -1,46 +1,69 @@
+> [English](https://github.com/bakhirev/assayo) | __[Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)__ | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
> [Documentación básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) en ruso. Es una traducción. Puede contener errores. Si usted es un hablante nativo, puede ayudar a mejorar esta traducción. ¡Gracias!
-
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
# [Assayo](https://assayo.online/?ref=github&lang=es)
+
-Visualización y análisis de los datos de su repositorio git. ([демо](https://assayo.online/demo/?dump=./test.txt)).
-
-##### El empleado puede evaluar el nuevo lugar de trabajo
+Visualización y análisis de los datos de su repositorio git. ([демо](https://assayo.online/demo/?ref=github&lang=es&dump=./test.txt)).
+
+##### 👨💻 El empleado puede evaluar el nuevo lugar de trabajo
- El ritmo de trabajo;
- El número de horas extras;
- Las áreas de responsabilidad;
- El volumen de características y errores;
- El estilo de trabajo de los colegas;
-
-##### El jefe puede evaluar a los empleados
+
+##### 👨💼 El jefe puede evaluar a los empleados
- Identificar a los ociosos;
- Calcular el volumen de código;
- Conocer la velocidad de trabajo;
- Se han notado anomalías de comportamiento;
- Ver el ritmo de trabajo por semanas;
-
-##### El inversor puede evaluar el producto
+
+##### 👑 El inversor puede evaluar el producto
- El costo del producto;
- El coste de las peculiaridades;
- El tiempo de desarrollo;
- La predicción del tiempo de mejoras;
- La predicción del costo;
-
-### Cómo puedo rápidamente ver el número de commits?
-
+
+### Table of contents
+- [Cómo puedo rápidamente ver el número de commits?](#link-4)
+- [Cómo combinar a los autores?](#link-5)
+- [Cómo descargar los datos desde git?](#link-6)
+ - [Para la visualización en línea](#link-7)
+ - [Para ver sin conexión](#link-8)
+- [¿Cómo ver el informe?](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [Como recompilar el build de un informe?](#link-12)
+- [Como mirar el reporte de un grupo de microservicios?](#link-13)
+- [¿Cómo puedo personalizar la interfaz de usuario?](#link-14)
+- [¿Cómo firmar los commits?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [ Use file commit-msg](#link-17)
+ - [ Use package pre-commit](#link-18)
+- [¿Cómo automatizar el recolección de datos?](#link-19)
+ - [With backend](#link-20)
+ - [Sin backend](#link-21)
+- [DevOps ](#link-22)
+ - [Servidor público](#link-23)
+ - [Servidor privado](#link-24)
+ - [Actualización de la imagen Docker](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [Los lanzamientos son aproximadamente una vez cada seis meses. Lo siguiente será:](#link-28)
+ - [¿Cómo añadir o editar una traducción?](#link-29)
+ - [Deseos, comentarios](#link-30)
+
+### 🚀 Cómo puedo rápidamente ver el número de commits?
En la carpeta raíz de su proyecto, ejecute:
```
git shortlog -s -n -e
```
-### Cómo combinar a los autores?
+
+### 🎭 Cómo combinar a los autores?
En la carpeta raíz de su proyecto debe crear un archivo `.mailmap`.
Un ejemplo del contenido del archivo:
```
@@ -48,59 +71,57 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
Más información sobre el formato de este archivo se puede leer en [aquí](https://git-scm.com/docs/gitmailmap).
-
-### Cómo descargar los datos desde git?
-
-#### Para la visualización en línea
+
+### 📤 Cómo descargar los datos desde git?
+
+#### Para la visualización en línea
En el directorio raíz de su proyecto ejecutar:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### Para ver sin conexión
-
+
+#### Para ver sin conexión
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git creará un archivo `log.txt`.
contiene los datos para construir el informe.
-
La diferencia entre los formatos en línea y fuera de línea está en la existencia de una envoltura para las cadenas. El formato fuera de línea se cargará como un archivo`js` si usted simplemente lo abrió. `/build/index.html`
-
-### ¿Cómo ver el informe en línea?
-
+
+### 📈 ¿Cómo ver el informe?
+
+#### Online
- Ir a [sitio web](https://assayo.online/)
-- Pulse el botón [Demo](https://assayo.online/demo)»
+- Pulse el botón [Demo](https://assayo.online/demo?ref=github&lang=es)»
- Arrastrar y soltar archivo `log.txt` en la ventana del navegador
-
-### ¿Cómo ver el informe sin conexión?
+
+#### Offline
- Descargar este repositorio
- Arrastrar y soltar archivo `log.txt` en la carpeta `/build`
- Lanzar `/build/index.html`
- O arrastrar una carpeta `/build` a su repositorio (donde se encuentra ' log.txt`). Puede cambiar el nombre. Por ejemplo `/build` contra `/report`
-
En este caso, es importante que el archivo ' log.txt ' fue generado por el equipo para ver sin conexión.
-
-### Como recompilar el build de un informe?
+
+### 🏭 Como recompilar el build de un informe?
- Descargar este repositorio
- Ejecutar `npm install`
- Ejecutar `npm run build`
- La nueva compilación estará en el directorio `/build`
-
-### Como mirar el reporte de un grupo de microservicios?
+
+### 🗃️ Como mirar el reporte de un grupo de microservicios?
- Generar para cada microservicio el archivo `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
- Ver “Cómo ver el informe en línea?”. En el último paso, arrastrar todos los archivos al navegador.
- Ver “Cómo ver informe fuera de línea?”. En el segundo paso, arrastrar los archivos de todos los microservicios al navegador (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) la carpeta informe (`/build`).
-
-### ¿Cómo puedo personalizar la interfaz de usuario?
+
+### 🎨 ¿Cómo puedo personalizar la interfaz de usuario?
Puedes crear tu propio tema para la interfaz. Puedes cambiar:
- **El título**. Puedes especificarlo en el parámetro de la URL ```title```. Por ejemplo: ```?title=You Company```
- **El tema visual**. Para esto, debes preparar un archivo CSS con los nuevos estilos y especificar su dirección en el parámetro de URL ```theme```. Por ejemplo: ```?theme=//company.com/some.css```. Puedes usar los nombres de clases como selectores. La mayoría de ellos no cambia con el lanzamiento de nuevas versiones.
- **La lengua**. Puedes especificarla en el parámetro de la URL ```lang```. Por ejemplo: ```?lang=es```
-
-### ¿Cómo firmar los commits?
-
+
+### 📝 ¿Cómo firmar los commits?
Siga la práctica [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por ejemplo:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -109,28 +130,54 @@ JIRA-1234 feat(profile): Added avatar for user
- tipo de trabajo `(feat, fix, style, refactor, test, doc etc.)`
- ficha `(profile - La sección del sitio, la página o la nueva funcionalidad, en una palabra)`
- ¿qué problema resolvieron? `(Added avatar for user)`
-
-### ¿Cómo automatizar el recolección de datos?
-
-#### Sin backend
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 ¿Cómo automatizar el recolección de datos?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sin backend
- clone del repositorio que desea;
- copiar a la carpeta raíz `build`;
- abridlo `build/index.html` añadir a favoritos;
- agregue un icono de `build/assets/ci-cd.sh` a su carpeta de inicio automático
(Windows);
-
Cada vez que reinicie su computadora, el script actualizará la estadística de todos los datos que se hayan incorporado automáticamente a la rama principal.
-
-### DevOps (CI/CD)
-
-#### Servidor público
-
+
+### 🛠️ DevOps (CI/CD)
+
+#### Servidor público
Puede publicar el archivo con los datos para generar el informe en una URL pública. Para visualizarlo, puede usar la interfaz web del sitio [assayo](https://assayo.online/). Simplemente indique la dirección donde están los datos en el parámetro URL ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### Servidor privado
+
+#### Servidor privado
- descargar [docker образ](https://hub.docker.com/r/bakhirev/assayo);
- recogerlo en la red local;
- Para ver los informes, use la interfaz web indicándole la dirección de los datos en el parámetro URL ```dump```:
@@ -139,33 +186,38 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - URL dirección del contenedor assayo, Él está escuchando el puerto 80;
you_url - URL la dirección de su contenedor con registros git;
```
-
Por defecto, la imagen se ejecutará en la siguiente dirección ```http://127.0.0.1:80/```. Si no funciona, compruebe si tiene el puerto 80 disponible
-#### Actualización de la imagen Docker
-
+
+#### Actualización de la imagen Docker
- eliminar métricas, alertas, compilaciones antiguas;
- construir ```npm run build```
- montar la imagen ```docker build -t assayo .```
- comprobar visualmente la imagen ```docker run --name assayo -p 80:80 -d assayo```;
-- poner la etiqueta ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- poner la imagen en Docker Hub
-
-### Los lanzamientos son aproximadamente una vez cada seis meses. Lo siguiente será:
+- poner la etiqueta ```docker tag assayo bakhirev/assayo:latest```;
+- poner la imagen en Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 Los lanzamientos son aproximadamente una vez cada seis meses. Lo siguiente será:
- más consejos y logros;
- resultados del año / mes, impresión de informes;
- localización e internacionalización;
- análisis de archivos;
- diferentes roles para estadísticas (ocultación de finanzas);
- desarrollo de la parte de atrás, integraciones con otros sistemas;
-
-### ¿Cómo añadir o editar una traducción?
-
+
+#### 🗺️ ¿Cómo añadir o editar una traducción?
Puede agregar una nueva traducción o corregir la actual en la sección ```ts/translations/```.
[Instrucciones](https://github.com/firstcontributions/first-contributions)
-
-### Deseos, sugerencias, comentarios
+
+#### 📧 Deseos, comentarios
- telegramm [@bakhirev](https://t.me/bakhirev) (La forma preferencial de contacto)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- sitio web [https://assayo.online/](https://assayo.online/?ref=github&lang=es)
-
+- sitio web [https://assayo.online/](https://assayo.online/?ref=github&lang=es)
\ No newline at end of file
diff --git a/documents/FR.md b/documents/FR.md
index ea92bf3..7a0d1db 100644
--- a/documents/FR.md
+++ b/documents/FR.md
@@ -1,46 +1,69 @@
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | __[Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)__ | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
> La [documentation principale](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) est en russe. C'est une traduction. Il peut contenir des erreurs. Si vous êtes un locuteur natif, vous pouvez aider à améliorer cette traduction. Merci!
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
-
# [Assayo](https://assayo.online/?ref=github&lang=fr)
+
-Visualisation et analyse des données de votre dépôt Git ([демо](https://assayo.online/demo/?dump=./test.txt)).
-
-##### Un employé peut évaluer un nouveau lieu de travail
+Visualisation et analyse des données de votre dépôt Git ([демо](https://assayo.online/demo/?ref=github&lang=fr&dump=./test.txt)).
+
+##### 👨💻 Un employé peut évaluer un nouveau lieu de travail
- le rythme du travail;
- le nombre de heures supplémentaires;
- les zones de responsabilité;
- la taille des fonctionnalités et bogues;
- le style de travail des collègues;
-
-##### Un chef peut évaluer les employés
+
+##### 👨💼 Un chef peut évaluer les employés
- détecter les fainéants;
- estimer la taille du code;
- connaître la vitesse de travail;
- remarquer les anomalies du comportement;
- remarquer les anomalies du comportement;
-
-##### L’investisseur peut évaluer le produit
+
+##### 👑 L’investisseur peut évaluer le produit
- le coût du produit;
- le coût des fonctionnalités;
- la durée de développement;
- la projection de la durée des mises à niveau;
- la projection du coût;
-
-### De combien de commits avez-vous besoin?
-
+
+### Table of contents
+- [De combien de commits avez-vous besoin?](#link-4)
+- [Comment pouvez-vous combiner les auteurs ?](#link-5)
+- [Comment télécharger des données depuis git ?](#link-6)
+ - [Pour une visualisation en ligne](#link-7)
+ - [Pour la navigation hors ligne](#link-8)
+- [Comment voir le rapport en ligne?](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [Comment recompiler la build du rapport?](#link-12)
+- [Comment voir le compte rendu pour un groupe de microservices?](#link-13)
+- [Comment apposer une marque sur l’interface?](#link-14)
+- [Comment signer les commits ?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [ Use file commit-msg](#link-17)
+ - [ Use package pre-commit](#link-18)
+- [Comment automatiser la collecte de données?](#link-19)
+ - [With backend](#link-20)
+ - [Sans back-end](#link-21)
+- [DevOps ](#link-22)
+ - [Serveur public](#link-23)
+ - [Serveur privé](#link-24)
+ - [Mise à jour de l’image-Docker](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [Les versions sont publiées environ tous les six mois. Quoi de neuf:](#link-28)
+ - [Comment ajouter ou modifier une traduction?](#link-29)
+ - [Souhaits, suggestions, commentaires](#link-30)
+
+### 🚀 De combien de commits avez-vous besoin?
Dans le répertoire racine de votre projet, exécutez les commandes suivantes:
```
git shortlog -s -n -e
```
-### Comment pouvez-vous combiner les auteurs ?
+
+### 🎭 Comment pouvez-vous combiner les auteurs ?
Dans le répertoire racine de votre projet, créez le fichier suivant: `.mailmap`.
L’exemple de la ligne de fichier est le suivant:
```
@@ -48,59 +71,56 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
Vous pouvez en savoir plus sur le format de ce fichier en lisant la documentation officielle. [ici](https://git-scm.com/docs/gitmailmap).
-
-### Comment télécharger des données depuis git ?
-
-#### Pour une visualisation en ligne
+
+### 📤 Comment télécharger des données depuis git ?
+
+#### Pour une visualisation en ligne
Dans le répertoire racine de votre projet, exécutez:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### Pour la navigation hors ligne
-
+
+#### Pour la navigation hors ligne
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git va créer le fichier `log.txt`.
Son contenu est destiné à la création de rapports.
-
La différence entre le format en ligne et le format hors ligne réside dans l’enveloppe des lignes. Le format hors ligne sera chargé comme un fichier js si vous avez simplement ouvert `/build/index.html`
-
-### Comment voir le rapport en ligne?
-
+
+### 📈 Comment voir le rapport en ligne?
+
+#### Online
- Aller à [сайт](https://assayo.online/)
-- Appuyer sur le bouton “[Démo](https://assayo.online/demo)”
+- Appuyer sur le bouton “[Démo](https://assayo.online/demo?ref=github&lang=fr)”
- Faites glisser le fichier `log.txt` dans la fenêtre du navigateur
-
-### Comment voir le rapport hors ligne?
+
+#### Offline
- Télécharger ce dépôt
- Glisser le fichier `log.txt` dans le dossier `/build`
- Démarrer `/build/index.html`
-- Ou coller le dossier `/build` Sur votre dépôt (là où se trouve `log.txt`). Vous pouvez changer le nom. Par exemple avec `/build` sur `/report`
-
-Dans cette cas, il est important que le fichier log.txt ait été généré par le commande pour la visualisation hors ligne.
-
-### Comment recompiler la build du rapport?
+- Ou coller le dossier `/build` Sur votre dépôt (là où se trouve `log.txt`). Vous pouvez changer le nom. Par exemple avec `/build` sur `/report`. Dans cette cas, il est important que le fichier log.txt ait été généré par le commande pour la visualisation hors ligne.
+
+### 🏭 Comment recompiler la build du rapport?
- Télécharger ce dépôt
- Exécuter `npm install`
- Exécuter `npm run build`
- La dernière build sera dans le dossier `/build`
-
-### Comment voir le compte rendu pour un groupe de microservices?
+
+### 🗃️ Comment voir le compte rendu pour un groupe de microservices?
- générer un fichier pour chaque microservice `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
- Voir “Comment voir le rapport en ligne?”. Au dernier pas, glisser tous les fichiers dans la fenêtre du navigateur.
- Voir “Comment regarder le rapport hors-ligne?”. Au deuxième pas, coller tous les fichier de microservices (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) dans le dossier du rapport (`/build`).
-
-### Comment apposer une marque sur l’interface?
+
+### 🎨 Comment apposer une marque sur l’interface?
Vous pouvez écrire votre propre thème pour l’interface. Vous pouvez changer :
- **En-tête**. Vous pouvez le spécifier dans le paramètre de l’URL ```title```. Par exemple: ```?title=You Company```
- **Thème visuel**.Pour cela, vous devez préparer un fichier CSS avec de nouveaux styles et indiquer son adresse dans le paramètre de l’URL ```theme```. Par exemple: ```?theme=//company.com/some.css```. Vous pouvez utiliser les noms de classes comme sélecteurs. La plupart d’entre elles ne changent pas lors de la sortie de nouvelles versions.
- **Langue**. Vous pouvez l’indiquer dans le paramètre d’URL ```lang```. Par exemple: ```?lang=es```
-
-### Comment signer les commits ?
-
+
+### 📝 Comment signer les commits ?
Suivez la pratique [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Par exemple:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -109,27 +129,52 @@ JIRA-1234 feat(profile): Added avatar for user
- type de travail `(feat, fix, style, refactor, test, doc etc.)`
- ficha `(profile - la section du site, la page ou la nouvelle fonctionnalité, en un mot)`
- quel problème ont-ils résolu `(Added avatar for user)`
-
-### Comment automatiser la collecte de données?
-
-#### Sans back-end
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 Comment automatiser la collecte de données?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sans back-end
- clonez le dépôt que vous voulez ;
- copiez le dossier `build`;
- Ouvrez `build/index.html` dans le navigateur et ajoutez-le aux favoris;
-- ajoutez un raccourci sur `build/assets/ci-cd.sh` dans le dossier de démarrage automatique (Windows);
-
-Chaque fois que votre ordinateur se recharge, le script mettra à jour les statistiques sur toutes les données qui se sont automatiquement insérées dans la branche principale.
-
-### DevOps (CI/CD)
-
-#### Serveur public
-
+- ajoutez un raccourci sur `build/assets/ci-cd.sh` dans le dossier de démarrage automatique (Windows); Chaque fois que votre ordinateur se recharge, le script mettra à jour les statistiques sur toutes les données qui se sont automatiquement insérées dans la branche principale.
+
+### 🛠️ DevOps (CI/CD)
+
+#### Serveur public
Vous pouvez mettre à disposition le fichier avec les données pour construire le rapport sur l’URL publique. Et pour sa visualisation, utiliser l’interface web du site. [assayo](https://assayo.online/). Tout simplement, indiquez l’adresse où se trouvent les données dans le paramètre de l’URL ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### Serveur privé
+
+#### Serveur privé
- télécharger [docker образ](https://hub.docker.com/r/bakhirev/assayo);
- Soulevez-le sur le réseau local;
- Pour consulter les rapports, utilisez l’interface web en lui indiquant l’adresse où les données se trouvent, sous forme de paramètre dans l’URL ```dump```:
@@ -138,33 +183,38 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - URL Conteneur assayo, écoute le port 80;
you_url - URL адресс Adresse de votre conteneur de logs git;
```
-
Par défaut, l'image s'exécute à ```http://127.0.0.1:80/```. Si cela ne fonctionne pas, vérifiez si le port 80 est disponible.
-#### Mise à jour de l’image-Docker
-
+
+#### Mise à jour de l’image-Docker
- supprimer la métrique, les alertes, les vieilles builds;
- constuire la build ```npm run build```
- assembler l'image ```docker build -t assayo .```
- vérifier visuellement l'image ```docker run --name assayo -p 80:80 -d assayo```;
-- mettre la balise ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- Envoyer le code au référentiel d'images dans Docker Hub
-
-### Les versions sont publiées environ tous les six mois. Quoi de neuf:
+- mettre la balise ```docker tag assayo bakhirev/assayo:latest```;
+- Envoyer le code au référentiel d'images dans Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 Les versions sont publiées environ tous les six mois. Quoi de neuf:
- plus de conseils et de succès;
- résultats de l’année / du mois, impression des rapports;
- localisation et internationalisation;
- analyse des fichiers;
- différents rôles pour la statistique (cacher la finance);
- développement du backend, intégrations avec d’autres systèmes;
-
-### Comment ajouter ou modifier une traduction?
-
+
+#### 🗺️ Comment ajouter ou modifier une traduction?
Vous pouvez ajouter une nouvelle traduction ou corriger la traduction existante dans le section ```ts/translations/```.
[Instruction](https://github.com/firstcontributions/first-contributions)
-
-### Souhaits, suggestions, commentaires
+
+#### 📧 Souhaits, suggestions, commentaires
- telegramm [@bakhirev](https://t.me/bakhirev) (voie de communication prioritaire)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- site [https://assayo.online/](https://assayo.online/?ref=github&lang=fr)
-
+- site [https://assayo.online/](https://assayo.online/?ref=github&lang=fr)
\ No newline at end of file
diff --git a/documents/JA.md b/documents/JA.md
index 66c1027..75203f5 100644
--- a/documents/JA.md
+++ b/documents/JA.md
@@ -1,46 +1,69 @@
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | __[日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)__ | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
> [主な文書はロシア語です。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) これは翻訳です。 エラーが含まれている可能性があります。 あなたがネイティブスピーカーであれば、この翻訳を改善するのに役立ちます。 ありがとう!
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
-
# [Assayo](https://assayo.online/?ref=github&lang=ja)
+
-データの可視化とGitレポジトリの分析 ([デモ](https://assayo.online/demo/?dump=./test.txt&lang=ru)).
-
-##### 従業員は新しい職場を評価することができます
+データの可視化とGitレポジトリの分析 ([デモ](https://assayo.online/demo/?ref=github&lang=ja&dump=./test.txt)).
+
+##### 👨💻 従業員は新しい職場を評価することができます
- 働きのペース;
- 過労;
- 職務範囲;
- 新機能とバグの量;
- 同僚の仕事スタイル;
-
-##### 管理者は従業員を評価できます
+
+##### 👨💼 管理者は従業員を評価できます
- 無職人の特定;
- コードの量を推定する;
- 作業速度を確認する;
- 行動の異常を発見する;
- 週次で作業状況を確認する;
-
-##### アイベンターは製品を評価できます
+
+##### 👑 アイベンターは製品を評価できます
- 製品の価格;
- 新機能の価格;
- 開発時間;
- 改善時間の予測;
- 予測価格;
-
-### コミット数を素早く確認するにはどうすればよいでしょうか。
-
+
+### Table of contents
+- [コミット数を素早く確認するにはどうすればよいでしょうか。](#link-4)
+- [作者をまとめるにはどうすればいいですか?](#link-5)
+- [Gitからデータをダウンロードするにはどうすればよろしいでしょうか。](#link-6)
+ - [Дオンラインで見るため](#link-7)
+ - [インターネットなしで見るために](#link-8)
+- [レポートを表示するにはどうすればよいですか? ](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [レポートファイルを再構成する方法は?](#link-12)
+- [マイクロサービス群のレポートを表示するにはどうすればよいでしょうか。](#link-13)
+- [自社のブランドカラーでインターフェースをリニュアルカラーに変えるにはどうすればよろしいでしょうか。](#link-14)
+- [commit文の署名方法は?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [ Use file commit-msg](#link-17)
+ - [ Use package pre-commit](#link-18)
+- [データの自動収集方法は?](#link-19)
+ - [With backend](#link-20)
+ - [バックエンドなし](#link-21)
+- [DevOps ](#link-22)
+ - [公開サーバ](#link-23)
+ - [プライベートサーバー](#link-24)
+ - [Dockerイメージの更新](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [半年ごとにリリースを行います。次は何でしょうか。](#link-28)
+ - [翻訳を追加または編集するにはどうすればいいでしょうか。](#link-29)
+ - [願い、提案、コメント](#link-30)
+
+### 🚀 コミット数を素早く確認するにはどうすればよいでしょうか。
プロジェクトのルートディレクトリで以下のコマンドを実行します:
```
git shortlog -s -n -e
```
-### 作者をまとめるにはどうすればいいですか?
+
+### 🎭 作者をまとめるにはどうすればいいですか?
プロジェクトのルートディレクトリ内に.mailmapファイルを作成する必要があります。
ファイルの内容の例:
```
@@ -48,59 +71,57 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
このファイルの形式について詳しく読むことができます [ここに](https://git-scm.com/docs/gitmailmap).
-
-### Gitからデータをダウンロードするにはどうすればよろしいでしょうか。
-
-#### Дオンラインで見るため
+
+### 📤 Gitからデータをダウンロードするにはどうすればよろしいでしょうか。
+
+#### Дオンラインで見るため
プロジェクトのルートディレクトリに次のコマンドを入力します:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### インターネットなしで見るために
-
+
+#### インターネットなしで見るために
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Gitはファイルを作成します `log.txt`.
このファイルには、レポートを構築するためのデータが含まれています。
-
インターネットのない形式とインターネットのある形式は、文字列が埋め込まれているという点で異なります。インターネットを持たない形式でファイルを開くと、単に「js」ファイルとして読み込まれます。 `/build/index.html`
-
-### インターネットを使ってレポートを見るにはどうすれば良いでしょうか。
-
+
+### 📈 レポートを表示するにはどうすればよいですか?
+
+#### Online
- に切り替える [ウェブサイト](https://assayo.online/)
- ボタンを押す “[デモ](https://assayo.online/demo?lang=ru)”
- ファイルをドラッグ&ドロップする `log.txt` ブラウザウィンドウで
-
-### インターネットを使用せずレポートを見るにはどうしたらよいでしょうか
+
+#### Offline
- このリポジトリをダウンロードする
- ファイルをドラッグ&ドロップする `log.txt` フォルダへ `/build`
- 実行するには `/build/index.html`
- フォルダをドラッグして下さい `/build` 自分のリポジトリーにフォルダを置いてください (それがある場所 `log.txt`). 名前を変更することができます。例えば名前 `/build` を `/report`
-
重要なのは、ファイル `log.txt` インターネットが利用できない環境で、レポートを表示するために作成されたコマンドである必要があります。
-
-### レポートファイルを再構成する方法は?
+
+### 🏭 レポートファイルを再構成する方法は?
- このリポジトリをダウンロードしてください
- 実行するには `npm install`
- 実行するには `npm run build`
- 最新のビルドは、フォルダに含まれるでしょう `/build`
-
-### マイクロサービス群のレポートを表示するにはどうすればよいでしょうか。
+
+### 🗃️ マイクロサービス群のレポートを表示するにはどうすればよいでしょうか。
- マイクロサービスごとにファイルを作成します。 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` など。)
- "インターネット上でレポートを見る方法"を参照してください。最後の手順では、すべてのファイルをブラウザのウィンドウに一度にドラッグ&ドロップします。
- “インターネットなしでレポートを見る方法” を参照してください。第二段階では、マイクロサービスのすべてのファイルをドラッグしてドロップする必要があります。(`log-1.txt`, `log-2.txt`, `log-3.txt` など。) レポートフォルダへ (`/build`).
-
-### 自社のブランドカラーでインターフェースをリニュアルカラーに変えるにはどうすればよろしいでしょうか。
+
+### 🎨 自社のブランドカラーでインターフェースをリニュアルカラーに変えるにはどうすればよろしいでしょうか。
インターフェースのテーマを独自に作成することができます。下記の項目は変更できます。
- **見出し**. それはURLパラメータで指定することができます ```title```. 例えば: ```?title=You Company```
- **CSS スタイル**. そのためにはCSSファイルを用意し、そのアドレスをURLパラメーターに指定する必要があります ```theme```. 例えば: ```?theme=//company.com/some.css```. クラス名をセレクターとして使用することができます。ほとんどの場合、新しいバージョンがリリースされると変更されません
- **言語**. URLパラメータに指定することができます ```lang```. 例えば: ```?lang=es```
-
-### commit文の署名方法は?
-
+
+### 📝 commit文の署名方法は?
練習に従ってください [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例えば:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -109,27 +130,53 @@ JIRA-1234 feat(profile): Added avatar for user
- 仕事の種類 `(feat, fix, style, refactor, test, doc など。)`
- 仕事の分野 `(profile - サイトのセクション、ページ、新機能、簡単に)`
- ジョブの説明 `(Added avatar for user)`
-
-### データの自動収集方法は?
-
-#### バックエンドなし
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 データの自動収集方法は?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### バックエンドなし
- リポジトリのクローンを作成します。;
- フォルダをコピーする `build` 現在のリポジトリから;
- オープン `build/index.html` ブラウザでブックマークに追加します。;
- にショートカットを追加する `build/assets/ci-cd.sh` 自動起動フォルダーに (Windows);
-
コンピューターを再起動するとき、スクリプトはメインブランチに自動的に挿入されたすべてのデータについての統計を更新します。
-
-### DevOps (CI/CD)
-
-#### 公開サーバ
-
+
+### 🛠️ DevOps (CI/CD)
+
+#### 公開サーバ
データをレポートビルド用に公開するファイルをURLで公開することができます。その視覚化は、サイト上で利用可能なツールを使用することで行うことができます。 [assayo](https://assayo.online/). データがある場所のアドレスを、URLパラメータに入力してください。 ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### プライベートサーバー
+
+#### プライベートサーバー
- ダウンロード [dockerイメージ](https://hub.docker.com/r/bakhirev/assayo);
- ローカルネットワーク内で実行します。;
- レポートの表示には、データが置かれている場所のアドレスがURLパラメータに入っていることを指定したウェブインターフェイスを使用します。 ```dump```:
@@ -138,27 +185,32 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - ポート80でリッスンしているassayoコンテナのURL;
you_url - gitのログのコンテナーのURLアドレス;
```
-
デフォルトではイメージは以下のアドレスで起動します ```http://127.0.0.1:80/```. 問題が解決しない場合は、ポート80が開いているか確認してみてください。
-#### Dockerイメージの更新
-
+
+#### Dockerイメージの更新
- 次のコマンドを実行します ```npm run build```
- 次のコマンドを実行します ```docker build -t assayo .```
- 結果を確認する ```docker run --name assayo -p 80:80 -d assayo```;
-- 次のコマンドを実行します ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- コンテナイメージをDocker Hubにアップロードする
-
-### 半年ごとにリリースを行います。次は何でしょうか。
+- 次のコマンドを実行します ```docker tag assayo bakhirev/assayo:latest```;
+- コンテナイメージをDocker Hubにアップロードする ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 半年ごとにリリースを行います。次は何でしょうか。
見て! [主なドキュメント](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-
-### 翻訳を追加または編集するにはどうすればいいでしょうか。
-
+
+#### 🗺️ 翻訳を追加または編集するにはどうすればいいでしょうか。
新しい翻訳を追加するか、現在の翻訳を修正するために、以下のセクションでそれを行うことができます: ```ts/translations/```.
[取扱説明書](https://github.com/firstcontributions/first-contributions)
-
-### 願い、提案、コメント
+
+#### 📧 願い、提案、コメント
- telegramm [@bakhirev](https://t.me/bakhirev) (優先通信方式)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- ウェブサイト [https://assayo.online/](https://assayo.online/?ref=github&lang=ja)
-
+- ウェブサイト [https://assayo.online/](https://assayo.online/?ref=github&lang=ja)
\ No newline at end of file
diff --git a/documents/PT.md b/documents/PT.md
index 27c87eb..cd0695a 100644
--- a/documents/PT.md
+++ b/documents/PT.md
@@ -1,46 +1,69 @@
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | __[Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)__ | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
> [Documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) em russo. É uma tradução. Pode conter erros. Se você é um falante nativo, você pode ajudar a melhorar esta tradução. Obrigado!
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
-
# [Assayo](https://assayo.online/?ref=github&lang=pt)
+
-Visualização e análise de dados do seu repositório git ([demonstração](https://assayo.online/demo/?dump=./test.txt&lang=ru)).
-
-##### Funcionario de avaliar o novo local de trabalho
+Visualização e análise de dados do seu repositório git ([demonstração](https://assayo.online/demo/?ref=github&lang=pt&dump=./test.txt)).
+
+##### 👨💻 Funcionario de avaliar o novo local de trabalho
- ritmo de trabalho;
- número de horas extras;
- áreas de responsabilidade;
- volume de novo funcionalidade e bugs;
- estilo de trabalho dos colegas;
-
-##### O chefe pode avaliar os funcionários
+
+##### 👨💼 O chefe pode avaliar os funcionários
- identificar os ociosos;
- estimar o volume do código;;
- descobrir a velocidade de trabalho;
- notar anomalias no comportamento;
- ver a dinâmica do trabalho por semanas;
-
-##### O investidor pode avaliar o produto:
+
+##### 👑 O investidor pode avaliar o produto:
- o valor do produto;
- o custo do novo funcionalismo;
- tempo de desenvolvimento;
- Forecasting the time for improvements;
- previsão de custos;
-
-### Como é rápido ver o número de commits?
-
+
+### Table of contents
+- [Como é rápido ver o número de commits?](#link-4)
+- [Como combinar os autores?](#link-5)
+- [Como exportar dados do git? ](#link-6)
+ - [Para visualização online](#link-7)
+ - [Para ver sem internet](#link-8)
+- [Como ver o relatório?](#link-9)
+ - [Online](#link-10)
+ - [Offline](#link-11)
+- [Como recompilar o arquivo do relatório?](#link-12)
+- [Como visualizar o relatório do grupo de microserviços?](#link-13)
+- [Como alterar as cores da interface para as cores da sua marca?](#link-14)
+- [Como faço para assinar commits?](#link-15)
+- [How to add checking for commit message?](#link-16)
+ - [ Use file commit-msg](#link-17)
+ - [ Use package pre-commit](#link-18)
+- [Como automatizar a coleta de dados?](#link-19)
+ - [With backend](#link-20)
+ - [Sem backend](#link-21)
+- [DevOps ](#link-22)
+ - [Servidor Público](#link-23)
+ - [Servidor Privado](#link-24)
+ - [Atualizar a imagem Docker](#link-25)
+- [️ About application](#link-26)
+ - [Architecture](#link-27)
+ - [Liberações, aproximadamente, uma vez por semestre. O que vem a seguir:](#link-28)
+ - [Como adicionar ou editar uma tradução?](#link-29)
+ - [Sugestões, sugestões, comentários](#link-30)
+
+### 🚀 Como é rápido ver o número de commits?
No diretório raiz do seu projeto, execute o comando:
```
git shortlog -s -n -e
```
-### Como combinar os autores?
+
+### 🎭 Como combinar os autores?
É necessário criar um arquivo no diretório principal do seu projeto `.mailmap`.
Exemplo de conteúdo de arquivo:
```
@@ -48,59 +71,57 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
Pode ler mais sobre o formato deste arquivo em [aqui](https://git-scm.com/docs/gitmailmap).
-
-### Como exportar dados do git?
-
-#### Para visualização online
+
+### 📤 Como exportar dados do git?
+
+#### Para visualização online
No diretório raiz do seu projeto executar:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### Para ver sem internet
-
+
+#### Para ver sem internet
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git criar um ficheiro `log.txt`.
Esse arquivo contém dados para construção de relatórios.
-
A diferença entre os formatos está na existência de uma envoltória para as linhas. O formato sem internet será puxado como `js` o arquivo se você o abriu simplesmente `/build/index.html`
-
-### Como ver o relatório da Internet?
-
+
+### 📈 Como ver o relatório?
+
+#### Online
- Ir para [site](https://assayo.online/)
- Pressione o botão “[Demonstração](https://assayo.online/demo?lang=ru)”
- Arrastar e largar `log.txt` na janela do navegador
-
-### Como visualizar o relatório sem internet?
+
+#### Offline
- Baixar este repositório
- Arraste o arquivo `log.txt` para a pasta `/build`
- Lançar `/build/index.html`
- Ou arraste a pasta `/build` ir para o repositório (o lugar onde se encontra `log.txt`). Você pode mudar o nome. Por exemplo, do nome `/build` no título `/report`
-
É importante que o arquivo `log.txt` foi criado por uma equipe para navegar sem internet.
-
-### Como recompilar o arquivo do relatório?
+
+### 🏭 Como recompilar o arquivo do relatório?
- Baixar este repositório
- Executar `npm install`
- Executar `npm run build`
- A compilação mais recente estará na pasta `/build`
-
-### Como visualizar o relatório do grupo de microserviços?
+
+### 🗃️ Como visualizar o relatório do grupo de microserviços?
- Gerar um arquivo para cada microserviço `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
- Veja “Como visualizar o relatório com a internet?”. No último passo, arraste todos os arquivos para a janela do navegador.
- Veja “Como visualizar o relatório sem a internet?”. No segundo passo, arraste todos os microserviços (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) na pasta relatório (`/build`).
-
-### Como alterar as cores da interface para as cores da sua marca?
+
+### 🎨 Como alterar as cores da interface para as cores da sua marca?
Você pode escrever seu próprio tema de interface. Pode mudar:
- **Cabeçalho**. Você pode especificar em um parâmetro da URL ```title```. Por exemplo: ```?title=You Company```
- **CSS стили**. Para fazer isso, você precisa preparar um arquivo CSS e especificar o seu endereço no parâmetro da URL ```theme```. Por exemplo: ```?theme=//company.com/some.css```. Você pode usar os nomes das classes como seletores. A maioria deles não muda na saída de uma nova versão.
- **Idioma**. Você pode incluir em um parâmetro de URL. ```lang```. Por exemplo: ```?lang=es```
-
-### Como faço para assinar commits?
-
+
+### 📝 Como faço para assinar commits?
Siga a prática [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por exemplo:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -109,27 +130,53 @@ JIRA-1234 feat(profile): Added avatar for user
- tipo de trabalho `(feat, fix, style, refactor, test, doc etc.)`
- área de trabalho `(profile - Página)`
- descrição do trabalho `(Added avatar for user)`
-
-### Como automatizar a coleta de dados?
-
-#### Sem backend
+
+### 👮 How to add checking for commit message?
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 📚 Como automatizar a coleta de dados?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sem backend
- criar um clone do seu repositório;
- copie a pasta `build` do repositório atual;
- abrir `build/index.html` no navegador e adicionar aos favoritos;
- adicionar um shortcut na `build/assets/ci-cd.sh` na pasta de inicialização (Windows);
-
A cada reinício do computador, o script atualiza a estatística com todos os dados que sejam automaticamente incorporados na branch principal.
-
-### DevOps (CI/CD)
-
-#### Servidor Público
-
+
+### 🛠️ DevOps (CI/CD)
+
+#### Servidor Público
Você pode disponibilizar o arquivo com os dados para construção do relatório em um URL público. Para visualizá-lo, você pode usar um site [assayo](https://assayo.online/). Especifique o endereço onde os dados estão localizados no parâmetro de URL ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### Servidor Privado
+
+#### Servidor Privado
- baixar [docker imagem](https://hub.docker.com/r/bakhirev/assayo);
- execute-o na rede local;
- Para visualizar os relatórios, utilize a interface web, indicando-lhe o endereço em que os dados se encontram localizados através do parâmetro URL ```dump```:
@@ -138,27 +185,32 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - O URL do endereço do container Assay, ele está escutando na porta 80;
you_url - O URL do seu container com os logs do git;
```
-
Por padrão, a imagem será iniciada no endereço ```http://127.0.0.1:80/```. Se você não conseguiu, verifique se a porta 80 está disponível no seu computador.
-#### Atualizar a imagem Docker
-
+
+#### Atualizar a imagem Docker
- executar um comando ```npm run build```
- executar um comando ```docker build -t assayo .```
- verificar o resultado ```docker run --name assayo -p 80:80 -d assayo```;
-- executar um comando ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- enviar a imagem do container para o Docker Hub
-
-### Liberações, aproximadamente, uma vez por semestre. O que vem a seguir:
+- executar um comando ```docker tag assayo bakhirev/assayo:latest```;
+- enviar a imagem do container para o Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ About application
+
+#### 📐 Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 🈯 Liberações, aproximadamente, uma vez por semestre. O que vem a seguir:
Vide [documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-
-### Como adicionar ou editar uma tradução?
-
+
+#### 🗺️ Como adicionar ou editar uma tradução?
Você pode adicionar uma nova tradução ou corrigir uma existente na seção ```ts/translations/```.
[Instrução](https://github.com/firstcontributions/first-contributions)
-
-### Sugestões, sugestões, comentários
+
+#### 📧 Sugestões, sugestões, comentários
- telegramm [@bakhirev](https://t.me/bakhirev) (método de comunicação prioritário)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- site [https://assayo.online/](https://assayo.online/?ref=github&lang=pt)
-
+- site [https://assayo.online/](https://assayo.online/?ref=github&lang=pt)
\ No newline at end of file
diff --git a/documents/RU.md b/documents/RU.md
index 2a285d6..79fa942 100644
--- a/documents/RU.md
+++ b/documents/RU.md
@@ -1,69 +1,68 @@
-> [English](https://github.com/bakhirev/assayo) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | __[Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)__
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md) | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | __[Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)__
+
# [Assayo](https://assayo.online/?ref=github&lang=ru)
-
-Визуализация и анализ данных вашего git-репозитория ([демо](https://assayo.online/demo/?dump=./test.txt)).
-
-##### Сотрудник может оценить новое место работы
+Визуализация и анализ данных вашего git-репозитория ([демо](https://assayo.online/demo/?ref=github&lang=ru&dump=./test.txt)).
+
+##### 👨💻 Сотрудник может оценить новое место работы
- темп работы;
- количество переработок;
- зоны ответственности;
- объем фичей и багов;
- стиль работы коллег;
-
-##### Руководитель может оценить сотрудников
+
+##### 👨💼 Руководитель может оценить сотрудников
- выявить бездельников;
- прикинуть объём кода;
- узнать скорость работы;
- заметить аномалии поведения;
- посмотреть динамику работы по неделям;
-
-##### Инвестор может оценить продукт
+
+##### 👑 Инвестор может оценить продукт
- стоимость продукта;
- стоимость фичей;
- время на разработку;
- прогноз времени доработок;
- прогноз стоимости;
-
-### Содержание
-
-- [Как быстро посмотреть количество коммитов?](#link-1)
-- [Как объединить авторов?](#link-2)
-- [Как выгрузить данные из git?](#link-3)
- - [Для онлайн просмотра](#link-4)
- - [Для офлайн просмотра](#link-5)
-- [Как посмотреть отчёт?](#link-6)
- - [Онлайн](#headers)
- - [Офлайн](#headers)
-- [Как пересобрать билд отчёта?](#headers)
-- [Как посмотреть отчёт по группе микросервисов?](#headers)
-- [Как брендировать интерфейс?](#headers)
-- [Как подписывать коммиты?](#headers)
-- [Как добавить проверку текста коммита?](#headers)
- - [Используя файл commit-msg](#headers)
- - [Используя пакет pre-commit](#headers)
-- [Как автоматизировать сбор данных?](#headers)
- - [С бекендом](#headers)
- - [Без бекенда](#headers)
-- [DevOps (CI/CD)](#headers)
- - [Публичный сервер](#headers)
- - [Приватный сервер](#headers)
- - [Обновление Docker-образа](#headers)
-- [Как добавить или отредактировать перевод?](#headers)
-- [Дорожная карта](#headers)
-- [Пожелания, предложения, замечания](#headers)
-
-
-### Как быстро посмотреть количество коммитов?
-
+
+### Содержание
+- [Как быстро посмотреть количество коммитов?](#link-4)
+- [Как объединить авторов?](#link-5)
+- [Как выгрузить данные из git?](#link-6)
+ - [Для онлайн просмотра](#link-7)
+ - [Для офлайн просмотра](#link-8)
+- [Как посмотреть отчёт? ](#link-9)
+ - [Онлайн](#link-10)
+ - [Офлайн](#link-11)
+- [Как пересобрать билд отчёта?](#link-12)
+- [Как посмотреть отчёт по группе микросервисов?](#link-13)
+- [Как брендировать интерфейс?](#link-14)
+- [Как подписывать коммиты?](#link-15)
+- [Как добавить проверку текста коммита?](#link-16)
+ - [Используя файл commit-msg](#link-17)
+ - [Используя пакет pre-commit](#link-18)
+- [Как автоматизировать сбор данных?](#link-19)
+ - [С бекендом](#link-20)
+ - [Без бекенда](#link-21)
+- [DevOps ](#link-22)
+ - [Публичный сервер](#link-23)
+ - [Приватный сервер](#link-24)
+ - [Обновление Docker-образа](#link-25)
+- [️ О приложении](#link-26)
+ - [Архитектура](#link-27)
+ - [Релизы, примерно, раз в полгода. Что дальше:](#link-28)
+ - [Как добавить или отредактировать перевод?](#link-29)
+ - [Пожелания, предложения, замечания](#link-30)
+
+### 🚀 Как быстро посмотреть количество коммитов?
В корневой директории вашего проекта выполнить:
```
git shortlog -s -n -e
```
-
-### Как объединить авторов?
+
+### 🎭 Как объединить авторов?
В корневой директории вашего проекта нужно создать файл `.mailmap`.
Пример содержания файла:
```
@@ -71,63 +70,57 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
Подробнее про формат этого файла можно прочитать [тут](https://git-scm.com/docs/gitmailmap).
-
-
-### Как выгрузить данные из git?
-
-
-#### Для онлайн просмотра
+
+### 📤 Как выгрузить данные из git?
+
+#### Для онлайн просмотра
В корневой директории вашего проекта выполнить:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-
-#### Для офлайн просмотра
-
+
+#### Для офлайн просмотра
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git создаст файл `log.txt`.
Он содержит данные для построения отчёта.
-
Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как `js` файл если вы просто открыли `/build/index.html`
-
-### Как посмотреть отчёт?
-#### Онлайн
-
+
+### 📈 Как посмотреть отчёт?
+
+#### Онлайн
- Перейти на [сайт](https://assayo.online/)
-- Нажать кнопку «[Демо](https://assayo.online/demo)»
+- Нажать кнопку «[Демо](https://assayo.online/demo?ref=github&lang=ru)»
- Перетащить файл `log.txt` в окно браузера
-
-#### Офлайн
+
+#### Офлайн
- Скачать этот репозиторий
- Перетащить файл `log.txt` в папку `/build`
- Запустить `/build/index.html`
- Или перетащить папку `/build` к себе в репозиторий (туда, где лежит `log.txt`). Можно сменить название. Например с `/build` на `/report`
-
В этом случае важно, чтобы файл `log.txt` был сгенерирован командой для офлайн просмотра.
-
-### Как пересобрать билд отчёта?
+
+### 🏭 Как пересобрать билд отчёта?
- Скачать этот репозиторий
- Выполнить `npm install`
- Выполнить `npm run build`
- Свежая сборка будет в папке `/build`
-
-### Как посмотреть отчёт по группе микросервисов?
+
+### 🗃️ Как посмотреть отчёт по группе микросервисов?
- Сгенерировать для каждого микросервиса файл `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.). Вы можете сделать это в ручную, или использовать модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) для автоматического сбора логов;
- См. «Как посмотреть отчёт онлайн?». На последнем шаге перетащить сразу все файлы в окно браузера.
- См. «Как посмотреть отчёт офлайн?». На втором шаге перетащить все файлы микросервисов (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.) в папку отчета (`/build`).
-
-### Как брендировать интерфейс?
+
+### 🎨 Как брендировать интерфейс?
Вы можете написать свою тему для интерфейса. Можно менять:
- **Заголовок**. Вы можете указать его в URL-параметре ```title```. Например: ```?title=You Company```
- **Визуальную тему**. Для этого нужно подготовить CSS файл с новыми стилями и указать его адрес в URL-параметре ```theme```. Например: ```?theme=//company.com/some.css```. Вы можете использовать имена классов в качестве селекторов. Большинство из них не меняется в при выходе новой версий.
- **Язык**. Вы можете указать его в URL-параметре ```lang```. Например: ```?lang=es```
-
-### Как подписывать коммиты?
-
+
+### 📝 Как подписывать коммиты?
Следуйте практике [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Например:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -136,23 +129,21 @@ JIRA-1234 feat(profile): Added avatar for user
- тип работы `(feat, fix, style, refactor, test, doc и т.д.)`
- фича `(profile - раздел сайта, страница или новый функционал, одним словом)`
- какую проблему решали `(Added avatar for user)`
-
-### Как добавить проверку текста коммита?
-
-#### Используя файл `commit-msg`
-
+
+### 👮 Как добавить проверку текста коммита?
+
+#### Используя файл `commit-msg`
1. Создайте файл `commit-msg` в папке `.git/hooks/`
2. Добавьте в файл следующий текст:
```
#!/usr/bin/env bash
-
if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
exit 1
fi
```
-#### Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit)
-
+
+#### Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit)
1. Добавьте в файл `package.json` блок `commit-msg`:
```
...
@@ -163,31 +154,28 @@ fi
...
```
2. Выполните команду `npm install pre-commit`
-
-### Как автоматизировать сбор данных?
-
-#### С бекендом
-
+
+### 📚 Как автоматизировать сбор данных?
+
+#### С бекендом
- используйте модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
-
-#### Без бекенда
+
+#### Без бекенда
- создайте клон нужного вам репозитория;
- скопируйте в корень папку `build`;
- откройте `build/index.html` в браузере и добавьте в закладки;
- добавьте ярлык на `build/assets/ci-cd.sh` в папку автозагрузки (Windows);
-
Каждый раз, при перезагрузке компьютера, скрипт будет обновлять статистику по всем данным, которые автоматически влились в основную ветку.
-
-### DevOps (CI/CD)
-
-#### Публичный сервер
-
+
+### 🛠️ DevOps (CI/CD)
+
+#### Публичный сервер
Вы можете выкладывать файл с данными для построения отчёта на публичный URL. А для его визуализации использовать веб-интерфейс сайта [assayo](https://assayo.online/). Просто укажите адресс, где лежат данные, в URL-параметре ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### Приватный сервер
+
+#### Приватный сервер
- скачайте [docker образ](https://hub.docker.com/r/bakhirev/assayo);
- поднимите его в локальной сети;
- для просмотра отчётов используйте веб-интерфейс указывая ему адресс, где лежат данные, в URL-параметре ```dump```:
@@ -196,33 +184,38 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - URL адресс контейнера assayo, он слушает 80 порт;
you_url - URL адресс вашего контейнера с логами git;
```
-
По умолчанию образ запустится по адресу ```http://127.0.0.1:80/```. Если не получилось проверьте свободен ли у вас 80 порт.
-#### Обновление Docker-образа
-
+
+#### Обновление Docker-образа
- удилить метрику, аллерты, старые билды;
- собрать билд ```npm run build```
- собрать образ ```docker build -t assayo .```
- визуально проверить образ ```docker run --name assayo -p 80:80 -d assayo```;
-- поставить тег ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- запушить образ в Docker Hub
-
-### Релизы, примерно, раз в полгода. Что дальше:
+- поставить тег ```docker tag assayo bakhirev/assayo:latest```;
+- запушить образ в Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### 🛠️ ️ О приложении
+
+#### 📐 Архитектура
+
+1. [Reports showcase UI](###) отображение списка отчётов. Каждый отчёт имеет название, описание и список репозиториев.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) сборка, склейка, обработка логов из репозиториев для отчётов.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(вы тут)** отображение отчётов. Для работы ему нужен log файл с данными.
+
+#### 🈯 Релизы, примерно, раз в полгода. Что дальше:
- больше советов и достижений;
- итоги года / месяца, печать отчётов;
- локализация и интернационализация;
- анализ файлов;
- разные роли для статистики (скрытие финансов);
- разработка бекенда, интеграции с другими системами;
-
-### Как добавить или отредактировать перевод?
-
+
+#### 🗺️ Как добавить или отредактировать перевод?
Вы можете добавить новый перевод или поправить текущий в разделе ```ts/translations/```.
[Инструкция](https://github.com/firstcontributions/first-contributions)
-
-### Пожелания, предложения, замечания
+
+#### 📧 Пожелания, предложения, замечания
- telegramm [@bakhirev](https://t.me/bakhirev) (приоритетный способ связи)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- сайт [https://assayo.online/](https://assayo.online/?ref=github&lang=ru)
-
+- сайт [https://assayo.online/](https://assayo.online/?ref=github&lang=ru)
\ No newline at end of file
diff --git a/documents/ZH.md b/documents/ZH.md
index bf97577..459a353 100644
--- a/documents/ZH.md
+++ b/documents/ZH.md
@@ -1,46 +1,68 @@
+> [English](https://github.com/bakhirev/assayo) | [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md) | __[中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)__ | [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md) | [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md) | [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md) | [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md) | [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
> [主要文件是俄文。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) 这是一个翻译。 它可能包含错误。 如果您是母语人士,您可以帮助改进此翻译。 谢谢!
-> - [Русский](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-> - [English](https://github.com/bakhirev/assayo)
-> - [中文](https://github.com/bakhirev/assayo/blob/main/documents/ZH.md)
-> - [Español](https://github.com/bakhirev/assayo/blob/main/documents/ES.md)
-> - [Français](https://github.com/bakhirev/assayo/blob/main/documents/FR.md)
-> - [Português](https://github.com/bakhirev/assayo/blob/main/documents/PT.md)
-> - [Deutsch](https://github.com/bakhirev/assayo/blob/main/documents/DE.md)
-> - [日本語](https://github.com/bakhirev/assayo/blob/main/documents/JA.md)
-
# [Assayo](https://assayo.online/?ref=github&lang=zh)
+
-对您的git仓库的数据进行可视化和分析 ([示范表现](https://assayo.online/demo/?dump=./test.txt&lang=ru)).
-
-##### 工作人员可以评估新工作场所
+对您的git仓库的数据进行可视化和分析 ([示范表现](https://assayo.online/demo/?ref=github&lang=zh&dump=./test.txt)).
+
+##### 👨💻 工作人员可以评估新工作场所
- 工作节奏;
- 加班数量;
- 责任范围;
- 新功能和错误量;
- 同事工作方式。;
-
-##### 管理者可以评估员工
+
+##### 👨💼 管理者可以评估员工
- 发现闲置工作者;
- 估算代码量;
- 了解工作速度;
- 注意行为异常;
- 查看工作周期动态。;
-
-##### 投资者可以评估产品
+
+##### 👑 投资者可以评估产品
- 产品的成本;
- 新功能的成本;
- 开发时间;
- 修改时间预测;
- 成本预测;
-
-### 如何 quickly 查阅 commit 的 次数?
-
+
+### Table of contents
+- [如何 quickly 查阅 commit 的 次数?](#link-4)
+- [如何 combine 作者?](#link-5)
+- [如何从 git 导出数据?](#link-6)
+ - [供网上浏览](#link-7)
+ - [在没有互联网的情况下观看](#link-8)
+- [如何在线查看报告?](#link-9)
+- [如何在没有网络环境下查看报告?](#link-10)
+- [如何重打包报告文件?](#link-11)
+- [如何查看微服务组的报告?](#link-12)
+- [如何将界面重新配色为公司专有颜色?](#link-13)
+- [如何签署提交?](#link-14)
+- [How to add checking for commit message?](#link-15)
+ - [ Use file commit-msg](#link-16)
+ - [ Use package pre-commit](#link-17)
+- [如何自动化数据采集?](#link-18)
+ - [With backend](#link-19)
+ - [没有后端](#link-20)
+- [DevOps ](#link-21)
+ - [公共服务器](#link-22)
+ - [专用服务器](#link-23)
+ - [Docker 图像更新](#link-24)
+- [️ About application](#link-25)
+ - [Architecture](#link-26)
+ - [释出版本大约每半年一次。接下来发生什么情况:](#link-27)
+ - [如何添加或编辑翻译?](#link-28)
+ - [愿望,建议,意见](#link-29)
+
+### 🚀 如何 quickly 查阅 commit 的 次数?
在项目的根目录中执行以下命令:
```
git shortlog -s -n -e
```
-### 如何 combine 作者?
+
+### 🎭 如何 combine 作者?
在项目的 根目录 创建一个文件 `.mailmap`.
文件内容示例:
```
@@ -48,59 +70,55 @@ Alex B
Alex B
Alex B
Alex B
-```
+```
关于这个文件格式的 详情 可以 参考 [这里](https://git-scm.com/docs/gitmailmap).
-
-### 如何从 git 导出数据?
-
-#### 供网上浏览
+
+### 📤 如何从 git 导出数据?
+
+#### 供网上浏览
在项目的根目录执行:
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
```
-#### 在没有互联网的情况下观看
-
+
+#### 在没有互联网的情况下观看
```
git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
```
Git会创建一个文件 `log.txt`.
这个文件包含了构建报告的数据。
-
字符串格式的区别在于它们具有的包装。无网络格式将会像您只是简单地打开了js文件一样被加载。 `/build/index.html`
-
-### 如何在线查看报告?
-
+
+### 📈 如何在线查看报告?
- 切换到 [网站](https://assayo.online/)
- 按下按钮 “[示范](https://assayo.online/demo?lang=ru)”
- 拖放文件 `log.txt` 在浏览器窗口中
-
-### 如何在没有网络环境下查看报告?
+
+### 如何在没有网络环境下查看报告?
- 下载这个存储库
- 拖放文件 `log.txt` 到文件夹 `/build`
- 要运行 `/build/index.html`
- 或是拖放文件夹 `/build` 到我的仓库 (它所在的地方 `log.txt`). 可以改变名称。比如,从名称 `/build` 到名称 `/report`
-
重要的事情是,必须让log.txt这个文件是通过命令创建出来的,这样它就可以在没有网的时候查看了。
-
-### 如何重打包报告文件?
+
+### 如何重打包报告文件?
- 下载这个储存库
- 要执行 `npm install`
- 要执行 `npm run build`
- 最新的构建将在文件夹 `/build`
-
-### 如何查看微服务组的报告?
+
+### 🏭 如何查看微服务组的报告?
- 为每个微服务生成文件 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等)
- 参见“如何在有网络环境下查看报告”。在最后一步,将所有文件同时拖入浏览器窗口。
- 参见“如何在没有网络环境下查看报告”。第二步将所有微服务文件拖动到 (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等) 到报表文件夹 (`/build`).
-
-### 如何将界面重新配色为公司专有颜色?
+
+### 🗃️ 如何将界面重新配色为公司专有颜色?
您可以为界面创建自己的主题。可以修改:
- **标题**. 你可以在网址参数中指定它 ```title```. 例如: ```?title=You Company```
- **CSS样式**. 为了做到这一点,你需要准备一个CSS文件并在网址参数中指明其地址 ```theme```. 例如: ```?theme=//company.com/some.css```. 你可以使用类名作为选择器。大多数情况下,他们在新版本发布时不会发生变化。
- **语言**. 你可以把它放在网址的参数中。 ```lang```. 例如: ```?lang=es```
-
-### 如何签署提交?
-
+
+### 🎨 如何签署提交?
遵循实践 [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例如:
```
JIRA-1234 feat(profile): Added avatar for user
@@ -109,27 +127,53 @@ JIRA-1234 feat(profile): Added avatar for user
- 工作类别 `(feat, fix, style, refactor, test, doc 等等)`
- 工作领域 `(profile - 地盘组, 网页 或新功能, 一句话)`
- 职位描述 `(Added avatar for user)`
-
-### 如何自动化数据采集?
-
-#### 没有后端
-- 克隆您的仓库;;
+
+### 📝 How to add checking for commit message?
+
+#### 👮 Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 如何自动化数据采集?
+
+#### 📚 With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### 没有后端
+- 克隆您的仓库;
- 复制文件夹 `build` 从当前仓库;
- 打开 `build/index.html` 在浏览器中添加书签;
- 添加一个快捷方式 `build/assets/ci-cd.sh` 自动启动文件夹 (Windows);
-
每次重启计算机,该脚本将更新统计数据,这些数据自动添加到主分支中。
-
-### DevOps (CI/CD)
-
-#### 公共服务器
-
+
+### DevOps (CI/CD)
+
+#### 🛠️ 公共服务器
您可以将数据构建报告文件发布到公共URL,可以使用网站来显示它。 [assayo](https://assayo.online/). 指定数据所在的地址作为URL参数 ```dump```:
```
https://assayo.online/demo/?dump=//you_site.com/some/log.txt
```
-
-#### 专用服务器
+
+#### 专用服务器
- 下载 [docker镜像](https://hub.docker.com/r/bakhirev/assayo);
- 在本地网络中运行它;
- 使用web界面查看报告,并指定数据所在地址作为URL参数 ```dump```:
@@ -138,27 +182,32 @@ http://assayo_url/?dump=//you_url/some/log.txt
assayo_url - assayo容器的URL地址,它监听80端口;
you_url - git日志的容器的URL地址;
```
-
默认情况下,镜像会被启动在地址 ```http://127.0.0.1:80/```. 如果没有成功,请检查你的80端口是否可用.
-#### Docker 图像更新
-
+
+#### Docker 图像更新
- 运行命令 ```npm run build```
- 运行命令 ```docker build -t assayo .```
- 检查结果 ```docker run --name assayo -p 80:80 -d assayo```;
-- 运行命令 ```docker tag IMAGE_ID bakhirev/assayo:latest```;
-- 提交容器映像到 Docker Hub
-
-### 释出版本大约每半年一次。接下来发生什么情况:
+- 运行命令 ```docker tag assayo bakhirev/assayo:latest```;
+- 提交容器映像到 Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### 🛠️ Architecture
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 📐 释出版本大约每半年一次。接下来发生什么情况:
看 [主要文件](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
-
-### 如何添加或编辑翻译?
-
+
+#### 🈯 如何添加或编辑翻译?
您可以在“翻译”部分添加新翻译或更正当前翻译。 ```ts/translations/```.
[指示手册](https://github.com/firstcontributions/first-contributions)
-
-### 愿望,建议,意见
+
+#### 🗺️ 愿望,建议,意见
- telegramm [@bakhirev](https://t.me/bakhirev) (优先通信方法)
- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
-- 网站 [https://assayo.online/](https://assayo.online/?ref=github&lang=zh)
-
+- 网站 [https://assayo.online/](https://assayo.online/?ref=github&lang=zh)
\ No newline at end of file
diff --git a/documents/src/index.js b/documents/src/index.js
new file mode 100644
index 0000000..ed1dd8b
--- /dev/null
+++ b/documents/src/index.js
@@ -0,0 +1,32 @@
+const fs = require('node:fs');
+const getJsonFromMarkdown = require('./lib/MdToJson/getJsonFromMarkdown');
+const getMarkdownFromJson = require('./lib/JsonToMd/getMarkdownFromJson');
+
+const languages = [
+ 'en',
+ 'es',
+ 'zh',
+ 'fr',
+ 'de',
+ 'pt',
+ 'ja',
+ 'ru',
+];
+
+function MdToJson(lang) {
+ const text = fs.readFileSync(`./md/${lang.toUpperCase()}.md`, 'utf8');
+ const json = getJsonFromMarkdown(text);
+ const content = JSON.stringify(json, null, 4);
+ fs.writeFileSync(`./json/${lang}.json`, content);
+}
+
+function JsonToMd(lang) {
+ const text = fs.readFileSync(`./json/${lang}.json`, 'utf8');
+ const json = JSON.parse(text);
+ const content = getMarkdownFromJson(json, languages, lang);
+ fs.writeFileSync(`../${lang.toUpperCase()}.md`, content);
+}
+
+languages.forEach(MdToJson);
+languages.forEach(JsonToMd);
+
diff --git a/documents/src/json/de.json b/documents/src/json/de.json
new file mode 100644
index 0000000..e3235fd
--- /dev/null
+++ b/documents/src/json/de.json
@@ -0,0 +1,340 @@
+[
+ {
+ "p": "Visualisierung und analyse ihrer Git-datenbank ([demo](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "Mitarbeiter können den neuen arbeitsplatz bewerten"
+ },
+ {
+ "li": [
+ "arbeitsgeschwindigkeit;",
+ "anzahl der überstunden;",
+ "verantwortungsbereiche;",
+ "umfang des neuen funktionsweise und fehlerbestandes;",
+ "arbeitsstil der kollegen;"
+ ]
+ },
+ {
+ "h5": "Der vorgesetzte kann die mitarbeiter bewerten"
+ },
+ {
+ "li": [
+ "ermitteln sie die untätigen;",
+ "schätzen sie den codeumfang ab;",
+ "erfahren sie die arbeitsgeschwindigkeit;",
+ "merken sie verhaltensanomalien;",
+ "beobachten sie das arbeitsgeschehen nach wochen;"
+ ]
+ },
+ {
+ "h5": "Der Investor kann das produkt bewerten"
+ },
+ {
+ "li": [
+ "produktpreis;",
+ "preis des neuen funktionsumfanges;",
+ "entwicklungszeit;",
+ "vorhersage der zeit für überarbeitungen;",
+ "preiskostenprognose;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "Wie kann ich die anzahl der commits schnell sehen?"
+ },
+ {
+ "p": "In der wurzelverzeichnis ihres projektes muss der befehl ausgeführt werden:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "Wie kann ich autoren zusammenbringen?"
+ },
+ {
+ "p": "Sie müssen eine datei im stammverzeichnis ihres projekts erstellen `.mailmap`."
+ },
+ {
+ "p": "Beispiel für den Inhalt einer Datei:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Sie können mehr über das format dieser datei lesen[hier](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Wie kann ich daten aus git?"
+ },
+ {
+ "h4": "Für die onlineansicht"
+ },
+ {
+ "p": "In der wurzelverzeichnis ihres projektes ausführen:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "Zum surfen ohne internet"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git erstellt eine datei `log.txt`."
+ },
+ {
+ "p": "Diese datei enthält die daten zum erstellen des berichts. "
+ },
+ {
+ "p": "Der unterschied zwischen den formaten liegt im vorhandensein einer wrapper für zeilen. Das format ohne internet wird wie eine js-datei geladen, wenn sie es einfach öffnen. `/build/index.html`"
+ },
+ {
+ "h3": "Wie kann ich den bericht sehen?"
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "gehe zu [Webseite](https://assayo.online/)",
+ "den knopf drücken “[Demonstration](https://assayo.online/demo?lang=ru)”",
+ "datei ziehen `log.txt` in das Browserfenster"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "laden sie dieses repository herunter",
+ "datei ziehen `log.txt` in den ordner`/build`",
+ "starten `/build/index.html`",
+ "oder ziehen sie einen ordner `/build` zu sich ins repository (der ort, an dem es liegt `log.txt`). Sie können den namen ändern. zum beispiel mit dem namen `/build` auf den namen `/report`"
+ ]
+ },
+ {
+ "p": "Es ist wichtig, dass die log.txt datei vom befehl für die offlineansicht erstellt wird."
+ },
+ {
+ "h3": "Wie kann ich die berichtsdatei neu erstellen?"
+ },
+ {
+ "li": [
+ "Laden sie dieses repository herunter",
+ "Erfüllen `npm install`",
+ "Erfüllen `npm run build`",
+ "Der neue build wird im ordner sein `/build`"
+ ]
+ },
+ {
+ "h3": "Wie kann ich den bericht zur microservices-gruppe anzeigen?"
+ },
+ {
+ "li": [
+ "Datei für jeden microservice generieren `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.)",
+ "Siehe “Wie kann ich den bericht mit internet ansehen?”. Im letzten schritt ziehen sie alle dateien gleichzeitig in das browserfenster.",
+ "Siehe “Wie kann man den bericht ohne internet ansehen?” Im zweiten schritt ziehen sie die microservice-dateien alle (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.) in den berichtsordner (`/build`)."
+ ]
+ },
+ {
+ "h3": "Wie kann ich die benutzeroberfläche in ihren markenfarben neu streichen?"
+ },
+ {
+ "p": "Sie können ihr skin für die schnittstelle schreiben. Kann geändert werden:"
+ },
+ {
+ "li": [
+ "**Überschrift**. Sie können es im URL-parameter angeben ```title```. Zum beispiel: ```?title=you company```",
+ "**CSS stile**. Um dies zu tun, müssen sie die CSS-datei vorbereiten und ihre adresse im URL-parameter angeben ```theme```. Zum beispiel: ```?theme=//company.com/some.css```. Sie können klassennamen als selektoren verwenden. Die meisten von ihnen ändern sich nicht, wenn eine neue version veröffentlicht wird.",
+ "**Sprache**. Sie können es im URL-parameter angeben ```lang```. Zum Beispiel: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "Wie signiere ich commits?"
+ },
+ {
+ "p": "Folge der praxis [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Zum beispiel:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "aufgabennummer `(JIRA-1234)`",
+ "art der arbeit `(feat, fix, style, refactor, test, doc usw.)`",
+ "arbeitsbereich `(profile - ein abschnitt der website, eine seite oder eine neue funktionalität, mit einem wort)`",
+ "beschreibung der arbeit `(added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "Wie kann ich die datenerfassung automatisieren?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Kein bekend"
+ },
+ {
+ "li": [
+ "erstellen sie einen klon ihres repositorys;",
+ "kopieren sie den ordner `build` aus dem aktuellen repository;",
+ "öffnen `build/index.html` im browser und zu lesezeichen hinzufügen;",
+ "fügen sie eine verknüpfung hinzu `build/assets/ci-cd.sh` in den startordner (windows);"
+ ]
+ },
+ {
+ "p": "Jedes mal, wenn der computer neu gestartet wird, aktualisiert das skript die statistiken für alle daten, die automatisch in den hauptzweig aufgenommen wurden."
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Öffentlicher server"
+ },
+ {
+ "p": "Sie können eine datendatei zum erstellen eines berichts auf eine öffentliche URL hochladen. Sie können die Website verwenden, um sie zu visualisieren [assayo](https://assayo.online/). Geben sie im URL-parameter die adresse an, an der die daten liegen ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Privater server"
+ },
+ {
+ "li": [
+ "herunterladen [docker das bild](https://hub.docker.com/r/bakhirev/assayo);",
+ "führen Sie es im lokalen netzwerk aus;",
+ "um berichte anzuzeigen, verwenden sie die webschnittstelle, um die adresse anzugeben, an der sich die daten befinden, im URL-parameter ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - die adresse des assayo-containers, er hört auf port 80;",
+ "you_url - URL die adresse ihres containers mit git-logs;"
+ ]
+ },
+ {
+ "p": "Standardmäßig wird das abbild an der folgenden adresse ausgeführt ```http://127.0.0.1:80/```. Wenn es nicht funktioniert, überprüfen sie, ob der port 80 frei ist."
+ },
+ {
+ "h4": "Aktualisieren eines Docker-Images"
+ },
+ {
+ "li": [
+ "befehl ausführen ```npm run build```",
+ "befehl ausführen ```docker build -t assayo .```",
+ "ergebnis überprüfen ```docker run --name assayo -p 80:80 -d assayo```;",
+ "befehl ausführen ```docker tag assayo bakhirev/assayo:latest```;",
+ "senden sie ein containerimage an Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "Veröffentlichungen, ungefähr alle sechs monate. Was weiter:"
+ },
+ {
+ "p": "Schau [haupt dokumentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)"
+ },
+ {
+ "h4": "Wie kann ich eine übersetzung hinzufügen oder bearbeiten?"
+ },
+ {
+ "p": "Sie können eine neue übersetzung hinzufügen oder die aktuelle im abschnitt korrigieren ```ts/translations/```."
+ },
+ {
+ "p": "[Anleitung](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "Wünsche, Anregungen, Kommentare"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (vorrangiger kommunikationsweg)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "web site [https://assayo.online/](https://assayo.online/?ref=github&lang=de)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/en.json b/documents/src/json/en.json
new file mode 100644
index 0000000..e98c1df
--- /dev/null
+++ b/documents/src/json/en.json
@@ -0,0 +1,354 @@
+[
+ {
+ "warning": "The [main documentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) is in russian. This is a translation. It may contain errors. If you a native speaker, you can help improve this translation. Thanks!"
+ },
+ {
+ "p": "Visualization and analysis of your git repository data ([demo](https://assayo.online/demo/?ref=github&lang=en&dump=./test.txt))."
+ },
+ {
+ "h5": "Employee can evaluate new workplace"
+ },
+ {
+ "li": [
+ "work speed;",
+ "number of extra hours worked;",
+ "areas of competence;",
+ "volume of features and bugs;",
+ "working style of colleagues;"
+ ]
+ },
+ {
+ "h5": "Team lead can evaluate employees"
+ },
+ {
+ "li": [
+ "identify slackers;",
+ "estimate the amount of code;",
+ "learn the work speed;",
+ "notice behavioral anomalies;",
+ "see the dynamics of work by week;"
+ ]
+ },
+ {
+ "h5": "Founder can evaluate product"
+ },
+ {
+ "li": [
+ "product cost;",
+ "cost of features;",
+ "development time;",
+ "forecast of rework time;",
+ "forecast cost;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "How to quickly view the number of commits?"
+ },
+ {
+ "p": "In the root directory of your project, run:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "How to concat authors?"
+ },
+ {
+ "p": "In the root directory of your project, you need to create a `.mailmap` file."
+ },
+ {
+ "p": "Example of the contents of the file:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Read more about the format of this file you can [here](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "How to export data from git?"
+ },
+ {
+ "h4": "For online viewing"
+ },
+ {
+ "p": "In the root directory of your project run:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "For offline viewing"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git will create a file `log.txt`."
+ },
+ {
+ "p": "This file contains data for show a report."
+ },
+ {
+ "p": "The difference between the online and offline format is the presence of a wrapper for strings. The offline format will be pulled up like a `js` file if you just opened `/build/index.html `"
+ },
+ {
+ "h3": "How to view the report?"
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "go to the [website](https://assayo.online/);",
+ "click the “[Demo](https://assayo.online/demo)” button;",
+ "drag the `log.txt` file into the browser window;"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "download this repository;",
+ "drag the `log.txt` file to the `/build` folder;",
+ "run `/build/index.html`;",
+ "or drag the `/build` folder to your repository (where the `log.txt` is located). You can change the name. For example, from `/build` to `/report`."
+ ]
+ },
+ {
+ "p": " In this case, it is important that the `log.txt` file is generated by the command for offline viewing."
+ },
+ {
+ "h3": "How to rebuild the report build?"
+ },
+ {
+ "li": [
+ "download this repository",
+ "run `npm install`",
+ "run `npm run build`",
+ "the new build will be in the `/build` folder"
+ ]
+ },
+ {
+ "h3": "How to view a report on a group of microservices?"
+ },
+ {
+ "li": [
+ "generate for each microservice file `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) You can do this manually, or use the [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) module for automatic log collection;",
+ "see “How to view an online report?”. At the last step, drag all the files at once into the browser window.",
+ "see “How to see a report offline?”. At the second step, drag all microservice files (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) to the report folder (`/build`)."
+ ]
+ },
+ {
+ "h3": "How to brand the interface?"
+ },
+ {
+ "p": "You can create your own interface theme. Options:"
+ },
+ {
+ "li": [
+ "**Title**. You can set default document title in the URL parameter ```title```. Example: ```?title=You Company```",
+ "**Visual theme**. To do this, you need to prepare a CSS file with new styles and specify its URL in the ```theme``` parameter. Example: ```?theme=//company.com/some.css```. You can use class names as selectors. Most of them do not change in new versions.",
+ "**Language**. You can set language in the URL parameter ```lang```. Example: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "How to sign commits?"
+ },
+ {
+ "p": "Follow the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Example:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "task number in the task tracker `(JIRA-1234)`",
+ "type of work `(feat, fix, style, refactor, test, doc и т.д.)`",
+ "feature `(profile - new page on site or new function, use one (two) short wordor an abbreviation)`",
+ "what problem were solved `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": "Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": "Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "How to automate data collection?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Without backend"
+ },
+ {
+ "li": [
+ "create a clone of the repository you need;",
+ "copy the `build` folder to the root;",
+ "open `build/index.html` in the browser and add it to bookmarks;",
+ "add a shortcut to `build/assets/ci-cd.sh` to the startup folder (Windows);"
+ ]
+ },
+ {
+ "p": " Every time you restart the computer, the script will update statistics on all the data that automatically merged into the main branch."
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Public server"
+ },
+ {
+ "p": "You can upload the data file for report construction to a public URL. And use the website’s [assayo](https://assayo.online/?ref=github&lang=en) to visualize it."
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Private server"
+ },
+ {
+ "li": [
+ "download the [docker image](https://hub.docker.com/r/bakhirev/assayo);",
+ "run it on your local network;",
+ "use the web interface to view the reports, set the URL of the data in the URL parameter ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - URL of the assayo container, it listens on port 80;",
+ "you_url - URL of your container with git logs;"
+ ]
+ },
+ {
+ "p": "By default, the image will run at ```http://127.0.0.1:80/```. If it doesn't work, check if port 80 is free."
+ },
+ {
+ "h4": "How to update the Docker image?"
+ },
+ {
+ "li": [
+ "remove metrics, alerts, old builds;",
+ "run ```npm run build```",
+ "run ```docker build -t assayo .```",
+ "visually check the image ```docker run --name assayo -p 80:80 -d assayo```;",
+ "add tag ```docker tag assayo bakhirev/assayo:latest```;",
+ "push image to [Docker Hub](https://hub.docker.com/r/bakhirev/assayo) ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "How to add or edit a translation?"
+ },
+ {
+ "p": "You can add a new translation or correct an existing one in the ```ts/translations/``` folder."
+ },
+ {
+ "p": "[Instruction](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "RoadMap:"
+ },
+ {
+ "p": "Releases are planned approximately once every six months. What’s next:"
+ },
+ {
+ "li": [
+ "more recommendations and achievements;",
+ "annual/monthly summaries, report printing;",
+ "localization and internationalization;",
+ "file analysis;",
+ "different roles for statistics (hiding finances);",
+ "development of the backend, integration with other systems;"
+ ]
+ },
+ {
+ "h4": "Feedback, comments"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (priority method of communication)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "website [https://assayo.online/](https://assayo.online/?ref=github&lang=en)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/es.json b/documents/src/json/es.json
new file mode 100644
index 0000000..d209de6
--- /dev/null
+++ b/documents/src/json/es.json
@@ -0,0 +1,354 @@
+[
+ {
+ "warning": "[Documentación básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) en ruso. Es una traducción. Puede contener errores. Si usted es un hablante nativo, puede ayudar a mejorar esta traducción. ¡Gracias!"
+ },
+ {
+ "p": "Visualización y análisis de los datos de su repositorio git. ([демо](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "El empleado puede evaluar el nuevo lugar de trabajo"
+ },
+ {
+ "li": [
+ "El ritmo de trabajo;",
+ "El número de horas extras;",
+ "Las áreas de responsabilidad;",
+ "El volumen de características y errores;",
+ "El estilo de trabajo de los colegas;"
+ ]
+ },
+ {
+ "h5": "El jefe puede evaluar a los empleados"
+ },
+ {
+ "li": [
+ "Identificar a los ociosos;",
+ "Calcular el volumen de código;",
+ "Conocer la velocidad de trabajo;",
+ "Se han notado anomalías de comportamiento;",
+ "Ver el ritmo de trabajo por semanas;"
+ ]
+ },
+ {
+ "h5": "El inversor puede evaluar el producto"
+ },
+ {
+ "li": [
+ "El costo del producto;",
+ "El coste de las peculiaridades;",
+ "El tiempo de desarrollo;",
+ "La predicción del tiempo de mejoras;",
+ "La predicción del costo;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "Cómo puedo rápidamente ver el número de commits?"
+ },
+ {
+ "p": "En la carpeta raíz de su proyecto, ejecute:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "Cómo combinar a los autores?"
+ },
+ {
+ "p": "En la carpeta raíz de su proyecto debe crear un archivo `.mailmap`."
+ },
+ {
+ "p": "Un ejemplo del contenido del archivo:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Más información sobre el formato de este archivo se puede leer en [aquí](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Cómo descargar los datos desde git?"
+ },
+ {
+ "h4": "Para la visualización en línea"
+ },
+ {
+ "p": "En el directorio raíz de su proyecto ejecutar:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "Para ver sin conexión"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git creará un archivo `log.txt`."
+ },
+ {
+ "p": "contiene los datos para construir el informe. "
+ },
+ {
+ "p": "La diferencia entre los formatos en línea y fuera de línea está en la existencia de una envoltura para las cadenas. El formato fuera de línea se cargará como un archivo`js` si usted simplemente lo abrió. `/build/index.html`"
+ },
+ {
+ "h3": "¿Cómo ver el informe?"
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "Ir a [sitio web](https://assayo.online/)",
+ "Pulse el botón [Demo](https://assayo.online/demo)»",
+ "Arrastrar y soltar archivo `log.txt` en la ventana del navegador"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "Descargar este repositorio",
+ "Arrastrar y soltar archivo `log.txt` en la carpeta `/build`",
+ "Lanzar `/build/index.html`",
+ "O arrastrar una carpeta `/build` a su repositorio (donde se encuentra ' log.txt`). Puede cambiar el nombre. Por ejemplo `/build` contra `/report`"
+ ]
+ },
+ {
+ "p": "En este caso, es importante que el archivo ' log.txt ' fue generado por el equipo para ver sin conexión."
+ },
+ {
+ "h3": "Como recompilar el build de un informe?"
+ },
+ {
+ "li": [
+ "Descargar este repositorio",
+ "Ejecutar `npm install`",
+ "Ejecutar `npm run build`",
+ "La nueva compilación estará en el directorio `/build`"
+ ]
+ },
+ {
+ "h3": "Como mirar el reporte de un grupo de microservicios?"
+ },
+ {
+ "li": [
+ "Generar para cada microservicio el archivo `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)",
+ "Ver “Cómo ver el informe en línea?”. En el último paso, arrastrar todos los archivos al navegador.",
+ "Ver “Cómo ver informe fuera de línea?”. En el segundo paso, arrastrar los archivos de todos los microservicios al navegador (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) la carpeta informe (`/build`)."
+ ]
+ },
+ {
+ "h3": "¿Cómo puedo personalizar la interfaz de usuario?"
+ },
+ {
+ "p": "Puedes crear tu propio tema para la interfaz. Puedes cambiar:"
+ },
+ {
+ "li": [
+ "**El título**. Puedes especificarlo en el parámetro de la URL ```title```. Por ejemplo: ```?title=You Company```",
+ "**El tema visual**. Para esto, debes preparar un archivo CSS con los nuevos estilos y especificar su dirección en el parámetro de URL ```theme```. Por ejemplo: ```?theme=//company.com/some.css```. Puedes usar los nombres de clases como selectores. La mayoría de ellos no cambia con el lanzamiento de nuevas versiones.",
+ "**La lengua**. Puedes especificarla en el parámetro de la URL ```lang```. Por ejemplo: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "¿Cómo firmar los commits?"
+ },
+ {
+ "p": "Siga la práctica [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por ejemplo:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "El número de la tarea en el gestor de tareas es `(JIRA-1234)`",
+ "tipo de trabajo `(feat, fix, style, refactor, test, doc etc.)`",
+ "ficha `(profile - La sección del sitio, la página o la nueva funcionalidad, en una palabra)`",
+ "¿qué problema resolvieron? `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "¿Cómo automatizar el recolección de datos?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Sin backend"
+ },
+ {
+ "li": [
+ "clone del repositorio que desea;",
+ "copiar a la carpeta raíz `build`;",
+ "abridlo `build/index.html` añadir a favoritos;",
+ "agregue un icono de `build/assets/ci-cd.sh` a su carpeta de inicio automático"
+ ]
+ },
+ {
+ "p": " (Windows);"
+ },
+ {
+ "p": "Cada vez que reinicie su computadora, el script actualizará la estadística de todos los datos que se hayan incorporado automáticamente a la rama principal."
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Servidor público"
+ },
+ {
+ "p": "Puede publicar el archivo con los datos para generar el informe en una URL pública. Para visualizarlo, puede usar la interfaz web del sitio [assayo](https://assayo.online/). Simplemente indique la dirección donde están los datos en el parámetro URL ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Servidor privado"
+ },
+ {
+ "li": [
+ "descargar [docker образ](https://hub.docker.com/r/bakhirev/assayo);",
+ "recogerlo en la red local;",
+ "Para ver los informes, use la interfaz web indicándole la dirección de los datos en el parámetro URL ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - URL dirección del contenedor assayo, Él está escuchando el puerto 80;",
+ "you_url - URL la dirección de su contenedor con registros git;"
+ ]
+ },
+ {
+ "p": "Por defecto, la imagen se ejecutará en la siguiente dirección ```http://127.0.0.1:80/```. Si no funciona, compruebe si tiene el puerto 80 disponible"
+ },
+ {
+ "h4": "Actualización de la imagen Docker"
+ },
+ {
+ "li": [
+ "eliminar métricas, alertas, compilaciones antiguas;",
+ "construir ```npm run build```",
+ "montar la imagen ```docker build -t assayo .```",
+ "comprobar visualmente la imagen ```docker run --name assayo -p 80:80 -d assayo```;",
+ "poner la etiqueta ```docker tag assayo bakhirev/assayo:latest```;",
+ "poner la imagen en Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "Los lanzamientos son aproximadamente una vez cada seis meses. Lo siguiente será:"
+ },
+ {
+ "li": [
+ "más consejos y logros;",
+ "resultados del año / mes, impresión de informes;",
+ "localización e internacionalización;",
+ "análisis de archivos;",
+ "diferentes roles para estadísticas (ocultación de finanzas);",
+ "desarrollo de la parte de atrás, integraciones con otros sistemas;"
+ ]
+ },
+ {
+ "h4": "¿Cómo añadir o editar una traducción?"
+ },
+ {
+ "p": "Puede agregar una nueva traducción o corregir la actual en la sección ```ts/translations/```."
+ },
+ {
+ "p": "[Instrucciones](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "Deseos, comentarios"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (La forma preferencial de contacto)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "sitio web [https://assayo.online/](https://assayo.online/?ref=github&lang=es)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/fr.json b/documents/src/json/fr.json
new file mode 100644
index 0000000..411d160
--- /dev/null
+++ b/documents/src/json/fr.json
@@ -0,0 +1,345 @@
+[
+ {
+ "warning": "La [documentation principale](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) est en russe. C'est une traduction. Il peut contenir des erreurs. Si vous êtes un locuteur natif, vous pouvez aider à améliorer cette traduction. Merci!"
+ },
+ {
+ "p": "Visualisation et analyse des données de votre dépôt Git ([демо](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "Un employé peut évaluer un nouveau lieu de travail"
+ },
+ {
+ "li": [
+ "le rythme du travail;",
+ "le nombre de heures supplémentaires;",
+ "les zones de responsabilité;",
+ "la taille des fonctionnalités et bogues;",
+ "le style de travail des collègues;"
+ ]
+ },
+ {
+ "h5": "Un chef peut évaluer les employés"
+ },
+ {
+ "li": [
+ "détecter les fainéants;",
+ "estimer la taille du code;",
+ "connaître la vitesse de travail;",
+ "remarquer les anomalies du comportement;",
+ "remarquer les anomalies du comportement;"
+ ]
+ },
+ {
+ "h5": "L’investisseur peut évaluer le produit"
+ },
+ {
+ "li": [
+ "le coût du produit;",
+ "le coût des fonctionnalités;",
+ "la durée de développement;",
+ "la projection de la durée des mises à niveau;",
+ "la projection du coût;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "De combien de commits avez-vous besoin?"
+ },
+ {
+ "p": "Dans le répertoire racine de votre projet, exécutez les commandes suivantes:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "Comment pouvez-vous combiner les auteurs ?"
+ },
+ {
+ "p": "Dans le répertoire racine de votre projet, créez le fichier suivant: `.mailmap`."
+ },
+ {
+ "p": "L’exemple de la ligne de fichier est le suivant:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Vous pouvez en savoir plus sur le format de ce fichier en lisant la documentation officielle. [ici](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Comment télécharger des données depuis git ?"
+ },
+ {
+ "h4": "Pour une visualisation en ligne"
+ },
+ {
+ "p": "Dans le répertoire racine de votre projet, exécutez:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "Pour la navigation hors ligne"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git va créer le fichier `log.txt`."
+ },
+ {
+ "p": "Son contenu est destiné à la création de rapports. "
+ },
+ {
+ "p": "La différence entre le format en ligne et le format hors ligne réside dans l’enveloppe des lignes. Le format hors ligne sera chargé comme un fichier js si vous avez simplement ouvert `/build/index.html`"
+ },
+ {
+ "h3": "Comment voir le rapport en ligne?"
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "Aller à [сайт](https://assayo.online/)",
+ "Appuyer sur le bouton “[Démo](https://assayo.online/demo)”",
+ "Faites glisser le fichier `log.txt` dans la fenêtre du navigateur"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "Télécharger ce dépôt",
+ "Glisser le fichier `log.txt` dans le dossier `/build`",
+ "Démarrer `/build/index.html`",
+ "Ou coller le dossier `/build` Sur votre dépôt (là où se trouve `log.txt`). Vous pouvez changer le nom. Par exemple avec `/build` sur `/report`. Dans cette cas, il est important que le fichier log.txt ait été généré par le commande pour la visualisation hors ligne."
+ ]
+ },
+ {
+ "h3": "Comment recompiler la build du rapport?"
+ },
+ {
+ "li": [
+ "Télécharger ce dépôt",
+ "Exécuter `npm install`",
+ "Exécuter `npm run build`",
+ "La dernière build sera dans le dossier `/build`"
+ ]
+ },
+ {
+ "h3": "Comment voir le compte rendu pour un groupe de microservices?"
+ },
+ {
+ "li": [
+ "générer un fichier pour chaque microservice `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)",
+ "Voir “Comment voir le rapport en ligne?”. Au dernier pas, glisser tous les fichiers dans la fenêtre du navigateur.",
+ "Voir “Comment regarder le rapport hors-ligne?”. Au deuxième pas, coller tous les fichier de microservices (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) dans le dossier du rapport (`/build`)."
+ ]
+ },
+ {
+ "h3": "Comment apposer une marque sur l’interface?"
+ },
+ {
+ "p": "Vous pouvez écrire votre propre thème pour l’interface. Vous pouvez changer :"
+ },
+ {
+ "li": [
+ "**En-tête**. Vous pouvez le spécifier dans le paramètre de l’URL ```title```. Par exemple: ```?title=You Company```",
+ "**Thème visuel**.Pour cela, vous devez préparer un fichier CSS avec de nouveaux styles et indiquer son adresse dans le paramètre de l’URL ```theme```. Par exemple: ```?theme=//company.com/some.css```. Vous pouvez utiliser les noms de classes comme sélecteurs. La plupart d’entre elles ne changent pas lors de la sortie de nouvelles versions.",
+ "**Langue**. Vous pouvez l’indiquer dans le paramètre d’URL ```lang```. Par exemple: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "Comment signer les commits ?"
+ },
+ {
+ "p": "Suivez la pratique [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Par exemple:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "numéro de tâche dans task Tracker `(JIRA-1234)`",
+ "type de travail `(feat, fix, style, refactor, test, doc etc.)`",
+ "ficha `(profile - la section du site, la page ou la nouvelle fonctionnalité, en un mot)`",
+ "quel problème ont-ils résolu `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "Comment automatiser la collecte de données?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Sans back-end"
+ },
+ {
+ "li": [
+ "clonez le dépôt que vous voulez ;",
+ "copiez le dossier `build`;",
+ "Ouvrez `build/index.html` dans le navigateur et ajoutez-le aux favoris;",
+ "ajoutez un raccourci sur `build/assets/ci-cd.sh` dans le dossier de démarrage automatique (Windows); Chaque fois que votre ordinateur se recharge, le script mettra à jour les statistiques sur toutes les données qui se sont automatiquement insérées dans la branche principale."
+ ]
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Serveur public"
+ },
+ {
+ "p": "Vous pouvez mettre à disposition le fichier avec les données pour construire le rapport sur l’URL publique. Et pour sa visualisation, utiliser l’interface web du site. [assayo](https://assayo.online/). Tout simplement, indiquez l’adresse où se trouvent les données dans le paramètre de l’URL ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Serveur privé"
+ },
+ {
+ "li": [
+ "télécharger [docker образ](https://hub.docker.com/r/bakhirev/assayo);",
+ "Soulevez-le sur le réseau local;",
+ "Pour consulter les rapports, utilisez l’interface web en lui indiquant l’adresse où les données se trouvent, sous forme de paramètre dans l’URL ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - URL Conteneur assayo, écoute le port 80;",
+ "you_url - URL адресс Adresse de votre conteneur de logs git;"
+ ]
+ },
+ {
+ "p": "Par défaut, l'image s'exécute à ```http://127.0.0.1:80/```. Si cela ne fonctionne pas, vérifiez si le port 80 est disponible."
+ },
+ {
+ "h4": "Mise à jour de l’image-Docker"
+ },
+ {
+ "li": [
+ "supprimer la métrique, les alertes, les vieilles builds;",
+ "constuire la build ```npm run build```",
+ "assembler l'image ```docker build -t assayo .```",
+ "vérifier visuellement l'image ```docker run --name assayo -p 80:80 -d assayo```;",
+ "mettre la balise ```docker tag assayo bakhirev/assayo:latest```;",
+ "Envoyer le code au référentiel d'images dans Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "Les versions sont publiées environ tous les six mois. Quoi de neuf:"
+ },
+ {
+ "li": [
+ "plus de conseils et de succès;",
+ "résultats de l’année / du mois, impression des rapports;",
+ "localisation et internationalisation;",
+ "analyse des fichiers;",
+ "différents rôles pour la statistique (cacher la finance);",
+ "développement du backend, intégrations avec d’autres systèmes;"
+ ]
+ },
+ {
+ "h4": "Comment ajouter ou modifier une traduction?"
+ },
+ {
+ "p": "Vous pouvez ajouter une nouvelle traduction ou corriger la traduction existante dans le section ```ts/translations/```."
+ },
+ {
+ "p": "[Instruction](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "Souhaits, suggestions, commentaires"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (voie de communication prioritaire)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "site [https://assayo.online/](https://assayo.online/?ref=github&lang=fr)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/ja.json b/documents/src/json/ja.json
new file mode 100644
index 0000000..32d2886
--- /dev/null
+++ b/documents/src/json/ja.json
@@ -0,0 +1,343 @@
+[
+ {
+ "warning": "[主な文書はロシア語です。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) これは翻訳です。 エラーが含まれている可能性があります。 あなたがネイティブスピーカーであれば、この翻訳を改善するのに役立ちます。 ありがとう!"
+ },
+ {
+ "p": "データの可視化とGitレポジトリの分析 ([デモ](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "従業員は新しい職場を評価することができます"
+ },
+ {
+ "li": [
+ "働きのペース;",
+ "過労;",
+ "職務範囲;",
+ "新機能とバグの量;",
+ "同僚の仕事スタイル;"
+ ]
+ },
+ {
+ "h5": "管理者は従業員を評価できます"
+ },
+ {
+ "li": [
+ "無職人の特定;",
+ "コードの量を推定する;",
+ "作業速度を確認する;",
+ "行動の異常を発見する;",
+ "週次で作業状況を確認する;"
+ ]
+ },
+ {
+ "h5": "アイベンターは製品を評価できます"
+ },
+ {
+ "li": [
+ "製品の価格;",
+ "新機能の価格;",
+ "開発時間;",
+ "改善時間の予測;",
+ "予測価格;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "コミット数を素早く確認するにはどうすればよいでしょうか。"
+ },
+ {
+ "p": "プロジェクトのルートディレクトリで以下のコマンドを実行します:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "作者をまとめるにはどうすればいいですか?"
+ },
+ {
+ "p": "プロジェクトのルートディレクトリ内に.mailmapファイルを作成する必要があります。"
+ },
+ {
+ "p": "ファイルの内容の例:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "このファイルの形式について詳しく読むことができます [ここに](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Gitからデータをダウンロードするにはどうすればよろしいでしょうか。"
+ },
+ {
+ "h4": "Дオンラインで見るため"
+ },
+ {
+ "p": "プロジェクトのルートディレクトリに次のコマンドを入力します:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "インターネットなしで見るために"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Gitはファイルを作成します `log.txt`."
+ },
+ {
+ "p": "このファイルには、レポートを構築するためのデータが含まれています。 "
+ },
+ {
+ "p": "インターネットのない形式とインターネットのある形式は、文字列が埋め込まれているという点で異なります。インターネットを持たない形式でファイルを開くと、単に「js」ファイルとして読み込まれます。 `/build/index.html`"
+ },
+ {
+ "h3": "レポートを表示するにはどうすればよいですか? "
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "に切り替える [ウェブサイト](https://assayo.online/)",
+ "ボタンを押す “[デモ](https://assayo.online/demo?lang=ru)”",
+ "ファイルをドラッグ&ドロップする `log.txt` ブラウザウィンドウで"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "このリポジトリをダウンロードする",
+ "ファイルをドラッグ&ドロップする `log.txt` フォルダへ `/build`",
+ "実行するには `/build/index.html`",
+ "フォルダをドラッグして下さい `/build` 自分のリポジトリーにフォルダを置いてください (それがある場所 `log.txt`). 名前を変更することができます。例えば名前 `/build` を `/report`"
+ ]
+ },
+ {
+ "p": "重要なのは、ファイル `log.txt` インターネットが利用できない環境で、レポートを表示するために作成されたコマンドである必要があります。"
+ },
+ {
+ "h3": "レポートファイルを再構成する方法は?"
+ },
+ {
+ "li": [
+ "このリポジトリをダウンロードしてください",
+ "実行するには `npm install`",
+ "実行するには `npm run build`",
+ "最新のビルドは、フォルダに含まれるでしょう `/build`"
+ ]
+ },
+ {
+ "h3": "マイクロサービス群のレポートを表示するにはどうすればよいでしょうか。"
+ },
+ {
+ "li": [
+ "マイクロサービスごとにファイルを作成します。 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` など。)",
+ "\"インターネット上でレポートを見る方法\"を参照してください。最後の手順では、すべてのファイルをブラウザのウィンドウに一度にドラッグ&ドロップします。",
+ "“インターネットなしでレポートを見る方法” を参照してください。第二段階では、マイクロサービスのすべてのファイルをドラッグしてドロップする必要があります。(`log-1.txt`, `log-2.txt`, `log-3.txt` など。) レポートフォルダへ (`/build`)."
+ ]
+ },
+ {
+ "h3": "自社のブランドカラーでインターフェースをリニュアルカラーに変えるにはどうすればよろしいでしょうか。"
+ },
+ {
+ "p": "インターフェースのテーマを独自に作成することができます。下記の項目は変更できます。"
+ },
+ {
+ "li": [
+ "**見出し**. それはURLパラメータで指定することができます ```title```. 例えば: ```?title=You Company```",
+ "**CSS スタイル**. そのためにはCSSファイルを用意し、そのアドレスをURLパラメーターに指定する必要があります ```theme```. 例えば: ```?theme=//company.com/some.css```. クラス名をセレクターとして使用することができます。ほとんどの場合、新しいバージョンがリリースされると変更されません",
+ "**言語**. URLパラメータに指定することができます ```lang```. 例えば: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "commit文の署名方法は?"
+ },
+ {
+ "p": "練習に従ってください [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例えば:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "発行番号 `(JIRA-1234)`",
+ "仕事の種類 `(feat, fix, style, refactor, test, doc など。)`",
+ "仕事の分野 `(profile - サイトのセクション、ページ、新機能、簡単に)`",
+ "ジョブの説明 `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "データの自動収集方法は?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "バックエンドなし"
+ },
+ {
+ "li": [
+ "リポジトリのクローンを作成します。;",
+ "フォルダをコピーする `build` 現在のリポジトリから;",
+ "オープン `build/index.html` ブラウザでブックマークに追加します。;",
+ "にショートカットを追加する `build/assets/ci-cd.sh` 自動起動フォルダーに (Windows);"
+ ]
+ },
+ {
+ "p": "コンピューターを再起動するとき、スクリプトはメインブランチに自動的に挿入されたすべてのデータについての統計を更新します。"
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "公開サーバ"
+ },
+ {
+ "p": "データをレポートビルド用に公開するファイルをURLで公開することができます。その視覚化は、サイト上で利用可能なツールを使用することで行うことができます。 [assayo](https://assayo.online/). データがある場所のアドレスを、URLパラメータに入力してください。 ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "プライベートサーバー"
+ },
+ {
+ "li": [
+ "ダウンロード [dockerイメージ](https://hub.docker.com/r/bakhirev/assayo);",
+ "ローカルネットワーク内で実行します。;",
+ "レポートの表示には、データが置かれている場所のアドレスがURLパラメータに入っていることを指定したウェブインターフェイスを使用します。 ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - ポート80でリッスンしているassayoコンテナのURL;",
+ "you_url - gitのログのコンテナーのURLアドレス;"
+ ]
+ },
+ {
+ "p": "デフォルトではイメージは以下のアドレスで起動します ```http://127.0.0.1:80/```. 問題が解決しない場合は、ポート80が開いているか確認してみてください。"
+ },
+ {
+ "h4": "Dockerイメージの更新"
+ },
+ {
+ "li": [
+ "次のコマンドを実行します ```npm run build```",
+ "次のコマンドを実行します ```docker build -t assayo .```",
+ "結果を確認する ```docker run --name assayo -p 80:80 -d assayo```;",
+ "次のコマンドを実行します ```docker tag assayo bakhirev/assayo:latest```;",
+ "コンテナイメージをDocker Hubにアップロードする ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "半年ごとにリリースを行います。次は何でしょうか。"
+ },
+ {
+ "p": "見て! [主なドキュメント](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)"
+ },
+ {
+ "h4": "翻訳を追加または編集するにはどうすればいいでしょうか。"
+ },
+ {
+ "p": "新しい翻訳を追加するか、現在の翻訳を修正するために、以下のセクションでそれを行うことができます: ```ts/translations/```."
+ },
+ {
+ "p": "[取扱説明書](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "願い、提案、コメント"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (優先通信方式)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "ウェブサイト [https://assayo.online/](https://assayo.online/?ref=github&lang=ja)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/pt.json b/documents/src/json/pt.json
new file mode 100644
index 0000000..44c2a39
--- /dev/null
+++ b/documents/src/json/pt.json
@@ -0,0 +1,343 @@
+[
+ {
+ "warning": "[Documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) em russo. É uma tradução. Pode conter erros. Se você é um falante nativo, você pode ajudar a melhorar esta tradução. Obrigado!"
+ },
+ {
+ "p": "Visualização e análise de dados do seu repositório git ([demonstração](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "Funcionario de avaliar o novo local de trabalho"
+ },
+ {
+ "li": [
+ "ritmo de trabalho;",
+ "número de horas extras;",
+ "áreas de responsabilidade;",
+ "volume de novo funcionalidade e bugs;",
+ "estilo de trabalho dos colegas;"
+ ]
+ },
+ {
+ "h5": "O chefe pode avaliar os funcionários"
+ },
+ {
+ "li": [
+ "identificar os ociosos;",
+ "estimar o volume do código;;",
+ "descobrir a velocidade de trabalho;",
+ "notar anomalias no comportamento;",
+ "ver a dinâmica do trabalho por semanas;"
+ ]
+ },
+ {
+ "h5": "O investidor pode avaliar o produto:"
+ },
+ {
+ "li": [
+ "o valor do produto;",
+ "o custo do novo funcionalismo;",
+ "tempo de desenvolvimento;",
+ "Forecasting the time for improvements;",
+ "previsão de custos;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "Como é rápido ver o número de commits?"
+ },
+ {
+ "p": "No diretório raiz do seu projeto, execute o comando:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "Como combinar os autores?"
+ },
+ {
+ "p": "É necessário criar um arquivo no diretório principal do seu projeto `.mailmap`."
+ },
+ {
+ "p": "Exemplo de conteúdo de arquivo:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Pode ler mais sobre o formato deste arquivo em [aqui](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Como exportar dados do git? "
+ },
+ {
+ "h4": "Para visualização online"
+ },
+ {
+ "p": "No diretório raiz do seu projeto executar:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "Para ver sem internet"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git criar um ficheiro `log.txt`."
+ },
+ {
+ "p": "Esse arquivo contém dados para construção de relatórios. "
+ },
+ {
+ "p": "A diferença entre os formatos está na existência de uma envoltória para as linhas. O formato sem internet será puxado como `js` o arquivo se você o abriu simplesmente `/build/index.html`"
+ },
+ {
+ "h3": "Como ver o relatório?"
+ },
+ {
+ "h4": "Online"
+ },
+ {
+ "li": [
+ "Ir para [site](https://assayo.online/)",
+ "Pressione o botão “[Demonstração](https://assayo.online/demo?lang=ru)”",
+ "Arrastar e largar `log.txt` na janela do navegador"
+ ]
+ },
+ {
+ "h4": "Offline"
+ },
+ {
+ "li": [
+ "Baixar este repositório",
+ "Arraste o arquivo `log.txt` para a pasta `/build`",
+ "Lançar `/build/index.html`",
+ "Ou arraste a pasta `/build` ir para o repositório (o lugar onde se encontra `log.txt`). Você pode mudar o nome. Por exemplo, do nome `/build` no título `/report`"
+ ]
+ },
+ {
+ "p": "É importante que o arquivo `log.txt` foi criado por uma equipe para navegar sem internet."
+ },
+ {
+ "h3": "Como recompilar o arquivo do relatório?"
+ },
+ {
+ "li": [
+ "Baixar este repositório",
+ "Executar `npm install`",
+ "Executar `npm run build`",
+ "A compilação mais recente estará na pasta `/build`"
+ ]
+ },
+ {
+ "h3": "Como visualizar o relatório do grupo de microserviços?"
+ },
+ {
+ "li": [
+ "Gerar um arquivo para cada microserviço `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)",
+ "Veja “Como visualizar o relatório com a internet?”. No último passo, arraste todos os arquivos para a janela do navegador.",
+ "Veja “Como visualizar o relatório sem a internet?”. No segundo passo, arraste todos os microserviços (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) na pasta relatório (`/build`)."
+ ]
+ },
+ {
+ "h3": "Como alterar as cores da interface para as cores da sua marca?"
+ },
+ {
+ "p": "Você pode escrever seu próprio tema de interface. Pode mudar:"
+ },
+ {
+ "li": [
+ "**Cabeçalho**. Você pode especificar em um parâmetro da URL ```title```. Por exemplo: ```?title=You Company```",
+ "**CSS стили**. Para fazer isso, você precisa preparar um arquivo CSS e especificar o seu endereço no parâmetro da URL ```theme```. Por exemplo: ```?theme=//company.com/some.css```. Você pode usar os nomes das classes como seletores. A maioria deles não muda na saída de uma nova versão.",
+ "**Idioma**. Você pode incluir em um parâmetro de URL. ```lang```. Por exemplo: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "Como faço para assinar commits?"
+ },
+ {
+ "p": "Siga a prática [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por exemplo:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "número da tarefa `(JIRA-1234)`",
+ "tipo de trabalho `(feat, fix, style, refactor, test, doc etc.)`",
+ "área de trabalho `(profile - Página)`",
+ "descrição do trabalho `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "Como automatizar a coleta de dados?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Sem backend"
+ },
+ {
+ "li": [
+ "criar um clone do seu repositório;",
+ "copie a pasta `build` do repositório atual;",
+ "abrir `build/index.html` no navegador e adicionar aos favoritos;",
+ "adicionar um shortcut na `build/assets/ci-cd.sh` na pasta de inicialização (Windows);"
+ ]
+ },
+ {
+ "p": "A cada reinício do computador, o script atualiza a estatística com todos os dados que sejam automaticamente incorporados na branch principal."
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Servidor Público"
+ },
+ {
+ "p": "Você pode disponibilizar o arquivo com os dados para construção do relatório em um URL público. Para visualizá-lo, você pode usar um site [assayo](https://assayo.online/). Especifique o endereço onde os dados estão localizados no parâmetro de URL ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Servidor Privado"
+ },
+ {
+ "li": [
+ "baixar [docker imagem](https://hub.docker.com/r/bakhirev/assayo);",
+ "execute-o na rede local;",
+ "Para visualizar os relatórios, utilize a interface web, indicando-lhe o endereço em que os dados se encontram localizados através do parâmetro URL ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - O URL do endereço do container Assay, ele está escutando na porta 80;",
+ "you_url - O URL do seu container com os logs do git;"
+ ]
+ },
+ {
+ "p": "Por padrão, a imagem será iniciada no endereço ```http://127.0.0.1:80/```. Se você não conseguiu, verifique se a porta 80 está disponível no seu computador."
+ },
+ {
+ "h4": "Atualizar a imagem Docker"
+ },
+ {
+ "li": [
+ "executar um comando ```npm run build```",
+ "executar um comando ```docker build -t assayo .```",
+ "verificar o resultado ```docker run --name assayo -p 80:80 -d assayo```;",
+ "executar um comando ```docker tag assayo bakhirev/assayo:latest```;",
+ "enviar a imagem do container para o Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "Liberações, aproximadamente, uma vez por semestre. O que vem a seguir:"
+ },
+ {
+ "p": "Vide [documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)"
+ },
+ {
+ "h4": "Como adicionar ou editar uma tradução?"
+ },
+ {
+ "p": "Você pode adicionar uma nova tradução ou corrigir uma existente na seção ```ts/translations/```."
+ },
+ {
+ "p": "[Instrução](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "Sugestões, sugestões, comentários"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (método de comunicação prioritário)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "site [https://assayo.online/](https://assayo.online/?ref=github&lang=pt)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/ru.json b/documents/src/json/ru.json
new file mode 100644
index 0000000..b0d2559
--- /dev/null
+++ b/documents/src/json/ru.json
@@ -0,0 +1,348 @@
+[
+ {
+ "p": "Визуализация и анализ данных вашего git-репозитория ([демо](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "Сотрудник может оценить новое место работы"
+ },
+ {
+ "li": [
+ "темп работы;",
+ "количество переработок;",
+ "зоны ответственности;",
+ "объем фичей и багов;",
+ "стиль работы коллег;"
+ ]
+ },
+ {
+ "h5": "Руководитель может оценить сотрудников"
+ },
+ {
+ "li": [
+ "выявить бездельников;",
+ "прикинуть объём кода;",
+ "узнать скорость работы;",
+ "заметить аномалии поведения;",
+ "посмотреть динамику работы по неделям;"
+ ]
+ },
+ {
+ "h5": "Инвестор может оценить продукт"
+ },
+ {
+ "li": [
+ "стоимость продукта;",
+ "стоимость фичей;",
+ "время на разработку;",
+ "прогноз времени доработок;",
+ "прогноз стоимости;"
+ ]
+ },
+ {
+ "h3": "Содержание"
+ },
+ {
+ "h3": "Как быстро посмотреть количество коммитов?"
+ },
+ {
+ "p": "В корневой директории вашего проекта выполнить:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "Как объединить авторов?"
+ },
+ {
+ "p": "В корневой директории вашего проекта нужно создать файл `.mailmap`."
+ },
+ {
+ "p": "Пример содержания файла:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "Подробнее про формат этого файла можно прочитать [тут](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "Как выгрузить данные из git?"
+ },
+ {
+ "h4": "Для онлайн просмотра"
+ },
+ {
+ "p": "В корневой директории вашего проекта выполнить:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "Для офлайн просмотра"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git создаст файл `log.txt`."
+ },
+ {
+ "p": "Он содержит данные для построения отчёта. "
+ },
+ {
+ "p": "Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как `js` файл если вы просто открыли `/build/index.html`"
+ },
+ {
+ "h3": "Как посмотреть отчёт? "
+ },
+ {
+ "h4": "Онлайн"
+ },
+ {
+ "li": [
+ "Перейти на [сайт](https://assayo.online/)",
+ "Нажать кнопку «[Демо](https://assayo.online/demo)»",
+ "Перетащить файл `log.txt` в окно браузера"
+ ]
+ },
+ {
+ "h4": "Офлайн"
+ },
+ {
+ "li": [
+ "Скачать этот репозиторий",
+ "Перетащить файл `log.txt` в папку `/build`",
+ "Запустить `/build/index.html`",
+ "Или перетащить папку `/build` к себе в репозиторий (туда, где лежит `log.txt`). Можно сменить название. Например с `/build` на `/report`"
+ ]
+ },
+ {
+ "p": "В этом случае важно, чтобы файл `log.txt` был сгенерирован командой для офлайн просмотра."
+ },
+ {
+ "h3": "Как пересобрать билд отчёта?"
+ },
+ {
+ "li": [
+ "Скачать этот репозиторий",
+ "Выполнить `npm install`",
+ "Выполнить `npm run build`",
+ "Свежая сборка будет в папке `/build`"
+ ]
+ },
+ {
+ "h3": "Как посмотреть отчёт по группе микросервисов?"
+ },
+ {
+ "li": [
+ "Сгенерировать для каждого микросервиса файл `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.). Вы можете сделать это в ручную, или использовать модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) для автоматического сбора логов;",
+ "См. «Как посмотреть отчёт онлайн?». На последнем шаге перетащить сразу все файлы в окно браузера.",
+ "См. «Как посмотреть отчёт офлайн?». На втором шаге перетащить все файлы микросервисов (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.) в папку отчета (`/build`)."
+ ]
+ },
+ {
+ "h3": "Как брендировать интерфейс?"
+ },
+ {
+ "p": "Вы можете написать свою тему для интерфейса. Можно менять:"
+ },
+ {
+ "li": [
+ "**Заголовок**. Вы можете указать его в URL-параметре ```title```. Например: ```?title=You Company```",
+ "**Визуальную тему**. Для этого нужно подготовить CSS файл с новыми стилями и указать его адрес в URL-параметре ```theme```. Например: ```?theme=//company.com/some.css```. Вы можете использовать имена классов в качестве селекторов. Большинство из них не меняется в при выходе новой версий.",
+ "**Язык**. Вы можете указать его в URL-параметре ```lang```. Например: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "Как подписывать коммиты?"
+ },
+ {
+ "p": "Следуйте практике [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Например:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "номер задачи в таск трекере `(JIRA-1234)`",
+ "тип работы `(feat, fix, style, refactor, test, doc и т.д.)`",
+ "фича `(profile - раздел сайта, страница или новый функционал, одним словом)`",
+ "какую проблему решали `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "Как добавить проверку текста коммита?"
+ },
+ {
+ "h4": "Используя файл `commit-msg`"
+ },
+ {
+ "p": "1. Создайте файл `commit-msg` в папке `.git/hooks/`"
+ },
+ {
+ "p": "2. Добавьте в файл следующий текст:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": "Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Добавьте в файл `package.json` блок `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Выполните команду `npm install pre-commit`"
+ },
+ {
+ "h3": "Как автоматизировать сбор данных?"
+ },
+ {
+ "h4": "С бекендом"
+ },
+ {
+ "li": [
+ "используйте модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "Без бекенда"
+ },
+ {
+ "li": [
+ "создайте клон нужного вам репозитория;",
+ "скопируйте в корень папку `build`;",
+ "откройте `build/index.html` в браузере и добавьте в закладки;",
+ "добавьте ярлык на `build/assets/ci-cd.sh` в папку автозагрузки (Windows);"
+ ]
+ },
+ {
+ "p": "Каждый раз, при перезагрузке компьютера, скрипт будет обновлять статистику по всем данным, которые автоматически влились в основную ветку."
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "Публичный сервер"
+ },
+ {
+ "p": "Вы можете выкладывать файл с данными для построения отчёта на публичный URL. А для его визуализации использовать веб-интерфейс сайта [assayo](https://assayo.online/). Просто укажите адресс, где лежат данные, в URL-параметре ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "Приватный сервер"
+ },
+ {
+ "li": [
+ "скачайте [docker образ](https://hub.docker.com/r/bakhirev/assayo);",
+ "поднимите его в локальной сети;",
+ "для просмотра отчётов используйте веб-интерфейс указывая ему адресс, где лежат данные, в URL-параметре ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - URL адресс контейнера assayo, он слушает 80 порт;",
+ "you_url - URL адресс вашего контейнера с логами git;"
+ ]
+ },
+ {
+ "p": "По умолчанию образ запустится по адресу ```http://127.0.0.1:80/```. Если не получилось проверьте свободен ли у вас 80 порт."
+ },
+ {
+ "h4": "Обновление Docker-образа"
+ },
+ {
+ "li": [
+ "удилить метрику, аллерты, старые билды;",
+ "собрать билд ```npm run build```",
+ "собрать образ ```docker build -t assayo .```",
+ "визуально проверить образ ```docker run --name assayo -p 80:80 -d assayo```;",
+ "поставить тег ```docker tag assayo bakhirev/assayo:latest```;",
+ "запушить образ в Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ О приложении"
+ },
+ {
+ "h4": "Архитектура"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) отображение списка отчётов. Каждый отчёт имеет название, описание и список репозиториев."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) сборка, склейка, обработка логов из репозиториев для отчётов."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(вы тут)** отображение отчётов. Для работы ему нужен log файл с данными."
+ },
+ {
+ "h4": "Релизы, примерно, раз в полгода. Что дальше:"
+ },
+ {
+ "li": [
+ "больше советов и достижений;",
+ "итоги года / месяца, печать отчётов;",
+ "локализация и интернационализация;",
+ "анализ файлов;",
+ "разные роли для статистики (скрытие финансов);",
+ "разработка бекенда, интеграции с другими системами;"
+ ]
+ },
+ {
+ "h4": "Как добавить или отредактировать перевод?"
+ },
+ {
+ "p": "Вы можете добавить новый перевод или поправить текущий в разделе ```ts/translations/```."
+ },
+ {
+ "p": "[Инструкция](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "Пожелания, предложения, замечания"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (приоритетный способ связи)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "сайт [https://assayo.online/](https://assayo.online/?ref=github&lang=ru)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/json/zh.json b/documents/src/json/zh.json
new file mode 100644
index 0000000..d596991
--- /dev/null
+++ b/documents/src/json/zh.json
@@ -0,0 +1,340 @@
+[
+ {
+ "warning": "[主要文件是俄文。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) 这是一个翻译。 它可能包含错误。 如果您是母语人士,您可以帮助改进此翻译。 谢谢!"
+ },
+ {
+ "p": "对您的git仓库的数据进行可视化和分析 ([示范表现](https://assayo.online/demo/?dump=./test.txt))."
+ },
+ {
+ "h5": "工作人员可以评估新工作场所"
+ },
+ {
+ "li": [
+ "工作节奏;",
+ "加班数量;",
+ "责任范围;",
+ "新功能和错误量;",
+ "同事工作方式。;"
+ ]
+ },
+ {
+ "h5": "管理者可以评估员工"
+ },
+ {
+ "li": [
+ "发现闲置工作者;",
+ "估算代码量;",
+ "了解工作速度;",
+ "注意行为异常;",
+ "查看工作周期动态。;"
+ ]
+ },
+ {
+ "h5": "投资者可以评估产品"
+ },
+ {
+ "li": [
+ "产品的成本;",
+ "新功能的成本;",
+ "开发时间;",
+ "修改时间预测;",
+ "成本预测;"
+ ]
+ },
+ {
+ "h3": "Table of contents"
+ },
+ {
+ "h3": "如何 quickly 查阅 commit 的 次数?"
+ },
+ {
+ "p": "在项目的根目录中执行以下命令:"
+ },
+ {
+ "pre": [
+ "git shortlog -s -n -e"
+ ]
+ },
+ {
+ "h3": "如何 combine 作者?"
+ },
+ {
+ "p": "在项目的 根目录 创建一个文件 `.mailmap`."
+ },
+ {
+ "p": "文件内容示例:"
+ },
+ {
+ "pre": [
+ "Alex B ",
+ "Alex B ",
+ "Alex B ",
+ "Alex B "
+ ]
+ },
+ {
+ "p": "关于这个文件格式的 详情 可以 参考 [这里](https://git-scm.com/docs/gitmailmap)."
+ },
+ {
+ "h3": "如何从 git 导出数据?"
+ },
+ {
+ "h4": "供网上浏览"
+ },
+ {
+ "p": "在项目的根目录执行:"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" > log.txt"
+ ]
+ },
+ {
+ "h4": "在没有互联网的情况下观看"
+ },
+ {
+ "pre": [
+ "git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:\"%ad>%cN>%cE>%s\" | sed -e 's/\\\\/\\\\\\\\/g' | sed -e 's/`/\"/g' | sed -e 's/^/report.push(\\`/g' | sed 's/$/\\`\\);/g' | sed 's/\\$/_/g' > log.txt"
+ ]
+ },
+ {
+ "p": "Git会创建一个文件 `log.txt`."
+ },
+ {
+ "p": "这个文件包含了构建报告的数据。 "
+ },
+ {
+ "p": "字符串格式的区别在于它们具有的包装。无网络格式将会像您只是简单地打开了js文件一样被加载。 `/build/index.html`"
+ },
+ {
+ "h3": "如何在线查看报告?"
+ },
+ {
+ "li": [
+ "切换到 [网站](https://assayo.online/)",
+ "按下按钮 “[示范](https://assayo.online/demo?lang=ru)”",
+ "拖放文件 `log.txt` 在浏览器窗口中"
+ ]
+ },
+ {
+ "h3": "如何在没有网络环境下查看报告?"
+ },
+ {
+ "li": [
+ "下载这个存储库",
+ "拖放文件 `log.txt` 到文件夹 `/build`",
+ "要运行 `/build/index.html`",
+ "或是拖放文件夹 `/build` 到我的仓库 (它所在的地方 `log.txt`). 可以改变名称。比如,从名称 `/build` 到名称 `/report`"
+ ]
+ },
+ {
+ "p": "重要的事情是,必须让log.txt这个文件是通过命令创建出来的,这样它就可以在没有网的时候查看了。"
+ },
+ {
+ "h3": "如何重打包报告文件?"
+ },
+ {
+ "li": [
+ "下载这个储存库",
+ "要执行 `npm install`",
+ "要执行 `npm run build`",
+ "最新的构建将在文件夹 `/build`"
+ ]
+ },
+ {
+ "h3": "如何查看微服务组的报告?"
+ },
+ {
+ "li": [
+ "为每个微服务生成文件 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等)",
+ "参见“如何在有网络环境下查看报告”。在最后一步,将所有文件同时拖入浏览器窗口。",
+ "参见“如何在没有网络环境下查看报告”。第二步将所有微服务文件拖动到 (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等) 到报表文件夹 (`/build`)."
+ ]
+ },
+ {
+ "h3": "如何将界面重新配色为公司专有颜色?"
+ },
+ {
+ "p": "您可以为界面创建自己的主题。可以修改:"
+ },
+ {
+ "li": [
+ "**标题**. 你可以在网址参数中指定它 ```title```. 例如: ```?title=You Company```",
+ "**CSS样式**. 为了做到这一点,你需要准备一个CSS文件并在网址参数中指明其地址 ```theme```. 例如: ```?theme=//company.com/some.css```. 你可以使用类名作为选择器。大多数情况下,他们在新版本发布时不会发生变化。",
+ "**语言**. 你可以把它放在网址的参数中。 ```lang```. 例如: ```?lang=es```"
+ ]
+ },
+ {
+ "h3": "如何签署提交?"
+ },
+ {
+ "p": "遵循实践 [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例如:"
+ },
+ {
+ "pre": [
+ "JIRA-1234 feat(profile): Added avatar for user "
+ ]
+ },
+ {
+ "li": [
+ "任务号 `(JIRA-1234)`",
+ "工作类别 `(feat, fix, style, refactor, test, doc 等等)`",
+ "工作领域 `(profile - 地盘组, 网页 或新功能, 一句话)`",
+ "职位描述 `(Added avatar for user)`"
+ ]
+ },
+ {
+ "h3": "How to add checking for commit message?"
+ },
+ {
+ "h4": " Use file `commit-msg`"
+ },
+ {
+ "p": "1. Create file `commit-msg` in folder `.git/hooks/`"
+ },
+ {
+ "p": "2. Add this text in file:"
+ },
+ {
+ "pre": [
+ "#!/usr/bin/env bash",
+ "if ! grep -iqE \"(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})\" \"$1\"; then",
+ " echo \"Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages\" >&2",
+ " exit 1",
+ "fi"
+ ]
+ },
+ {
+ "h4": " Use package [pre-commit](https://www.npmjs.com/package/pre-commit)"
+ },
+ {
+ "p": "1. Add in file `package.json` property `commit-msg`:"
+ },
+ {
+ "pre": [
+ " ...",
+ " \"commit-msg\": {",
+ " \"regex\": \"(JIRA-[0-9]{1,5})(\\\\s)(feat|fix|docs|style|refactor|test|chore)((\\\\([a-z0-9_-]{1,}\\\\)){0,})(:\\\\s)([a-z]{1,})\",",
+ " \"error-message\": \"Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages\"",
+ " },",
+ " ..."
+ ]
+ },
+ {
+ "p": "2. Run command `npm install pre-commit`"
+ },
+ {
+ "h3": "如何自动化数据采集?"
+ },
+ {
+ "h4": "With backend"
+ },
+ {
+ "li": [
+ "use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);"
+ ]
+ },
+ {
+ "h4": "没有后端"
+ },
+ {
+ "li": [
+ "克隆您的仓库;",
+ "复制文件夹 `build` 从当前仓库;",
+ "打开 `build/index.html` 在浏览器中添加书签;",
+ "添加一个快捷方式 `build/assets/ci-cd.sh` 自动启动文件夹 (Windows);"
+ ]
+ },
+ {
+ "p": "每次重启计算机,该脚本将更新统计数据,这些数据自动添加到主分支中。"
+ },
+ {
+ "h3": "DevOps (CI/CD)"
+ },
+ {
+ "h4": "公共服务器"
+ },
+ {
+ "p": "您可以将数据构建报告文件发布到公共URL,可以使用网站来显示它。 [assayo](https://assayo.online/). 指定数据所在的地址作为URL参数 ```dump```:"
+ },
+ {
+ "pre": [
+ "https://assayo.online/demo/?dump=//you_site.com/some/log.txt"
+ ]
+ },
+ {
+ "h4": "专用服务器"
+ },
+ {
+ "li": [
+ "下载 [docker镜像](https://hub.docker.com/r/bakhirev/assayo);",
+ "在本地网络中运行它;",
+ "使用web界面查看报告,并指定数据所在地址作为URL参数 ```dump```:"
+ ]
+ },
+ {
+ "pre": [
+ "http://assayo_url/?dump=//you_url/some/log.txt",
+ "assayo_url - assayo容器的URL地址,它监听80端口;",
+ "you_url - git日志的容器的URL地址;"
+ ]
+ },
+ {
+ "p": "默认情况下,镜像会被启动在地址 ```http://127.0.0.1:80/```. 如果没有成功,请检查你的80端口是否可用."
+ },
+ {
+ "h4": "Docker 图像更新"
+ },
+ {
+ "li": [
+ "运行命令 ```npm run build```",
+ "运行命令 ```docker build -t assayo .```",
+ "检查结果 ```docker run --name assayo -p 80:80 -d assayo```;",
+ "运行命令 ```docker tag assayo bakhirev/assayo:latest```;",
+ "提交容器映像到 Docker Hub ```docker push bakhirev/assayo:latest```;"
+ ]
+ },
+ {
+ "h3": "️ About application"
+ },
+ {
+ "h4": "Architecture"
+ },
+ {
+ "img": ""
+ },
+ {
+ "p": "1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories."
+ },
+ {
+ "p": "2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report."
+ },
+ {
+ "p": "3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work."
+ },
+ {
+ "h4": "释出版本大约每半年一次。接下来发生什么情况:"
+ },
+ {
+ "p": "看 [主要文件](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)"
+ },
+ {
+ "h4": "如何添加或编辑翻译?"
+ },
+ {
+ "p": "您可以在“翻译”部分添加新翻译或更正当前翻译。 ```ts/translations/```."
+ },
+ {
+ "p": "[指示手册](https://github.com/firstcontributions/first-contributions)"
+ },
+ {
+ "h4": "愿望,建议,意见"
+ },
+ {
+ "li": [
+ "telegramm [@bakhirev](https://t.me/bakhirev) (优先通信方法)",
+ "[alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)",
+ "网站 [https://assayo.online/](https://assayo.online/?ref=github&lang=zh)"
+ ]
+ }
+]
\ No newline at end of file
diff --git a/documents/src/lib/JsonToMd/TableOfContent.js b/documents/src/lib/JsonToMd/TableOfContent.js
new file mode 100644
index 0000000..ddb00f8
--- /dev/null
+++ b/documents/src/lib/JsonToMd/TableOfContent.js
@@ -0,0 +1,75 @@
+const SMILES = [
+ '👨💻', // 1
+ '👨💼', // 2
+ '👑', // 3
+ null, // 4
+ '🚀', // 5
+ '🎭', // 6
+ '📤', // 7
+ null, // 8
+ null, // 9
+ '📈', // 10
+ null, // 11
+ null, // 12
+ '🏭', // 13
+ '🗃️', // 14
+ '🎨', // 15
+ '📝', // 16
+ '👮', // 17
+ null, // 18
+ null, // 19
+ '📚', // 20
+ null, // 21
+ null, // 22
+ '🛠️', // 23
+ null, // 24
+ null, // 25
+ null, // 26
+ '🛠️', // 27
+ '📐', // 28
+ '🈯', // 29
+ '🗺️', // 30
+ '📧', // 31
+];
+
+class TableOfContent {
+ constructor() {
+ this.prefixes = (new Array(6)).fill(1).map((a, i) => (new Array(i)).fill('#').join(''));
+ this.smiles = SMILES;
+ this.titles = [];
+ this.indexOfList = 0;
+ }
+
+ addTitle(level, text, markdownText) {
+ this.titles.push({ level, text });
+ const index = this.titles.length - 1;
+ markdownText.push(``);
+ const prefix = this.prefixes[level] || '';
+ const smile = this.smiles[index] || '';
+ markdownText.push(`${prefix} ${smile} ${text}`);
+
+ // маркер, где будет Содержание
+ if (!this.indexOfList && level === 3) {
+ this.indexOfList = markdownText.length;
+ }
+ }
+
+ getMarkdownWithTable(markdownText) {
+ const content = this.titles
+ .map(({ level, text }, i) => {
+ if (!(level === 3 || level === 4) || i === 3) return;
+ const prefix = level === 4 ? ' ' : '';
+ const title = text.replace(/(\([^)]*\))|([\[\]`]*)/gim, '');
+ return `${prefix}- [${title}](#link-${i})`;
+ })
+ .filter(v => v);
+
+ return [
+ ...markdownText.slice(0, this.indexOfList),
+ ...content,
+ ...markdownText.slice(this.indexOfList),
+ ];
+ }
+}
+
+module.exports = TableOfContent;
diff --git a/documents/src/lib/JsonToMd/custom.js b/documents/src/lib/JsonToMd/custom.js
new file mode 100644
index 0000000..fcc03db
--- /dev/null
+++ b/documents/src/lib/JsonToMd/custom.js
@@ -0,0 +1,41 @@
+const SITE = 'https://assayo.online/';
+const GITHUB_LINK = 'https://github.com/bakhirev/assayo';
+
+function getLanguageLinks(languages, language) {
+ const text = languages.map((lang) => {
+ const title = {
+ en: 'English',
+ zh: '中文',
+ es: 'Español',
+ fr: 'Français',
+ pt: 'Português',
+ de: 'Deutsch',
+ ja: '日本語',
+ ru: 'Русский',
+ }[lang] || '____';
+
+ const link = lang === 'en'
+ ? GITHUB_LINK
+ : `${GITHUB_LINK}/blob/main/documents/${lang.toUpperCase()}.md`;
+
+ return lang === language
+ ? `__[${title}](${link})__`
+ : `[${title}](${link})`;
+ }).join(' | ');
+
+ return `> ${text}\n`;
+}
+
+function getSocialLinks() {
+ return '\n';
+}
+
+function getTitle(language) {
+ return `# [Assayo](${SITE}?ref=github&lang=${language})`;
+}
+
+module.exports = {
+ getLanguageLinks,
+ getSocialLinks,
+ getTitle,
+};
diff --git a/documents/src/lib/JsonToMd/getMarkdownFromJson.js b/documents/src/lib/JsonToMd/getMarkdownFromJson.js
new file mode 100644
index 0000000..e877c47
--- /dev/null
+++ b/documents/src/lib/JsonToMd/getMarkdownFromJson.js
@@ -0,0 +1,54 @@
+const custom = require('./custom');
+const TableOfContent = require('./TableOfContent');
+
+function addListWithPrefix(list, markdown, prefix = '') {
+ (list || []).forEach((text) => text ? markdown.push(`${prefix}${text}`) : '');
+}
+
+function addList(list, markdown) {
+ addListWithPrefix(list, markdown, '- ');
+}
+
+function addBlockCode(list, markdown) {
+ markdown.push('```');
+ addListWithPrefix(list, markdown);
+ markdown.push('```');
+}
+
+function getMarkdownFromJson(json, languages, language) {
+ const tableOfContent = new TableOfContent();
+ const firstTag = (json || [])?.[0]?.warning ? json.shift() : null;
+ let markdown = [
+ custom.getLanguageLinks(languages, language),
+ firstTag ? `> ${firstTag.warning}\n` : '',
+ custom.getTitle(language),
+ custom.getSocialLinks(),
+ ];
+
+ (json || []).forEach((tag) => {
+ if (!tag) return;
+
+ if (tag.p) markdown.push(tag.p);
+ else if (tag.warning) markdown.push(`> ${tag.warning}\n`);
+ else if (tag.tableOfContent) markdown.push('tableOfContent');
+ else if (tag.li) addList(tag.li, markdown);
+ else if (tag.pre) addBlockCode(tag.pre, markdown);
+ else if (tag.img) markdown.push(`${tag.img}\n`);
+ else if (tag.h1) tableOfContent.addTitle(1, tag.h1, markdown);
+ else if (tag.h2) tableOfContent.addTitle(2, tag.h2, markdown);
+ else if (tag.h3) tableOfContent.addTitle(3, tag.h3, markdown);
+ else if (tag.h4) tableOfContent.addTitle(4, tag.h4, markdown);
+ else if (tag.h5) tableOfContent.addTitle(5, tag.h5, markdown);
+ else if (tag.li) tableOfContent.addTitle(5, tag.h5, markdown);
+ });
+
+ markdown = tableOfContent.getMarkdownWithTable(markdown);
+ markdownText = markdown
+ .join('\n')
+ .replace('demo/?dump=./test.txt', `demo/?ref=github&lang=${language}&dump=./test.txt`)
+ .replace('online/demo)', `online/demo?ref=github&lang=${language})`);
+
+ return markdownText;
+}
+
+module.exports = getMarkdownFromJson;
diff --git a/documents/src/lib/MdToJson/getJsonFromMarkdown.js b/documents/src/lib/MdToJson/getJsonFromMarkdown.js
new file mode 100644
index 0000000..7172c98
--- /dev/null
+++ b/documents/src/lib/MdToJson/getJsonFromMarkdown.js
@@ -0,0 +1,82 @@
+class BlockLikeList {
+ constructor(code = '-') {
+ this.code = code;
+ this.content = [];
+ }
+
+ update(code, text, json) {
+ if (code === this.code) {
+ this.content.push(text);
+ return true;
+ } else if (this.content.length) {
+ json.push({ li: this.content });
+ this.content = [];
+ return false;
+ }
+ }
+
+ close(json) {
+ if (!this.content.length) return;
+ json.push({ li: this.content });
+ this.content = [];
+ }
+}
+
+class BlockLikeCode {
+ constructor(code = '```') {
+ this.code = code;
+ this.isOpen = false;
+ this.content = [];
+ }
+
+ update(code, line, json) {
+ if (code === this.code) {
+ if (this.isOpen) {
+ json.push({ pre: this.content });
+ this.content = [];
+ }
+ this.isOpen = !this.isOpen;
+ return true;
+ }
+
+ if (this.isOpen) {
+ this.content.push(line);
+ return true;
+ }
+
+ return false;
+ }
+}
+
+function getJsonFromMarkdown(markdownText) {
+ const json = [];
+ const li = new BlockLikeList();
+ const pre = new BlockLikeCode();
+
+ (markdownText || '').split('\n').forEach((line) => {
+ if (!line[0]) return;
+
+ const parts = (line || '').split(' ');
+ const code = parts.shift();
+ const text = parts.join(' ');
+
+ if (code === '') json.push({ warning: text });
+ else if (code === '#####') json.push({ h5: text });
+ else if (code === '####') json.push({ h4: text });
+ else if (code === '###') json.push({ h3: text });
+ else if (code === '##') json.push({ h2: text });
+ else if (code === '#') json.push({ h1: text });
+ else if (code === '
+Alex B
+Alex B
+Alex B
+```
+Sie können mehr über das format dieser datei lesen[hier](https://git-scm.com/docs/gitmailmap).
+
+### Wie kann ich daten aus git?
+
+#### Für die onlineansicht
+In der wurzelverzeichnis ihres projektes ausführen:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### Zum surfen ohne internet
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git erstellt eine datei `log.txt`.
+Diese datei enthält die daten zum erstellen des berichts.
+
+Der unterschied zwischen den formaten liegt im vorhandensein einer wrapper für zeilen. Das format ohne internet wird wie eine js-datei geladen, wenn sie es einfach öffnen. `/build/index.html`
+
+### Wie kann ich den bericht sehen?
+#### Online
+- gehe zu [Webseite](https://assayo.online/)
+- den knopf drücken “[Demonstration](https://assayo.online/demo?lang=ru)”
+- datei ziehen `log.txt` in das Browserfenster
+#### Offline
+- laden sie dieses repository herunter
+- datei ziehen `log.txt` in den ordner`/build`
+- starten `/build/index.html`
+- oder ziehen sie einen ordner `/build` zu sich ins repository (der ort, an dem es liegt `log.txt`). Sie können den namen ändern. zum beispiel mit dem namen `/build` auf den namen `/report`
+
+Es ist wichtig, dass die log.txt datei vom befehl für die offlineansicht erstellt wird.
+
+### Wie kann ich die berichtsdatei neu erstellen?
+- Laden sie dieses repository herunter
+- Erfüllen `npm install`
+- Erfüllen `npm run build`
+- Der neue build wird im ordner sein `/build`
+
+### Wie kann ich den bericht zur microservices-gruppe anzeigen?
+- Datei für jeden microservice generieren `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.)
+- Siehe “Wie kann ich den bericht mit internet ansehen?”. Im letzten schritt ziehen sie alle dateien gleichzeitig in das browserfenster.
+- Siehe “Wie kann man den bericht ohne internet ansehen?” Im zweiten schritt ziehen sie die microservice-dateien alle (`log-1.txt`, `log-2.txt`, `log-3.txt` usw.) in den berichtsordner (`/build`).
+
+### Wie kann ich die benutzeroberfläche in ihren markenfarben neu streichen?
+Sie können ihr skin für die schnittstelle schreiben. Kann geändert werden:
+- **Überschrift**. Sie können es im URL-parameter angeben ```title```. Zum beispiel: ```?title=you company```
+- **CSS stile**. Um dies zu tun, müssen sie die CSS-datei vorbereiten und ihre adresse im URL-parameter angeben ```theme```. Zum beispiel: ```?theme=//company.com/some.css```. Sie können klassennamen als selektoren verwenden. Die meisten von ihnen ändern sich nicht, wenn eine neue version veröffentlicht wird.
+- **Sprache**. Sie können es im URL-parameter angeben ```lang```. Zum Beispiel: ```?lang=es```
+
+### Wie signiere ich commits?
+
+Folge der praxis [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Zum beispiel:
+```
+JIRA-1234 feat(profile): added avatar for user
+```
+- aufgabennummer `(JIRA-1234)`
+- art der arbeit `(feat, fix, style, refactor, test, doc usw.)`
+- arbeitsbereich `(profile - ein abschnitt der website, eine seite oder eine neue funktionalität, mit einem wort)`
+- beschreibung der arbeit `(added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### Wie kann ich die datenerfassung automatisieren?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Kein bekend
+- erstellen sie einen klon ihres repositorys;
+- kopieren sie den ordner `build` aus dem aktuellen repository;
+- öffnen `build/index.html` im browser und zu lesezeichen hinzufügen;
+- fügen sie eine verknüpfung hinzu `build/assets/ci-cd.sh` in den startordner (windows);
+
+Jedes mal, wenn der computer neu gestartet wird, aktualisiert das skript die statistiken für alle daten, die automatisch in den hauptzweig aufgenommen wurden.
+
+### DevOps (CI/CD)
+
+#### Öffentlicher server
+
+Sie können eine datendatei zum erstellen eines berichts auf eine öffentliche URL hochladen. Sie können die Website verwenden, um sie zu visualisieren [assayo](https://assayo.online/). Geben sie im URL-parameter die adresse an, an der die daten liegen ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Privater server
+- herunterladen [docker das bild](https://hub.docker.com/r/bakhirev/assayo);
+- führen Sie es im lokalen netzwerk aus;
+- um berichte anzuzeigen, verwenden sie die webschnittstelle, um die adresse anzugeben, an der sich die daten befinden, im URL-parameter ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - die adresse des assayo-containers, er hört auf port 80;
+you_url - URL die adresse ihres containers mit git-logs;
+```
+
+Standardmäßig wird das abbild an der folgenden adresse ausgeführt ```http://127.0.0.1:80/```. Wenn es nicht funktioniert, überprüfen sie, ob der port 80 frei ist.
+#### Aktualisieren eines Docker-Images
+
+- befehl ausführen ```npm run build```
+- befehl ausführen ```docker build -t assayo .```
+- ergebnis überprüfen ```docker run --name assayo -p 80:80 -d assayo```;
+- befehl ausführen ```docker tag assayo bakhirev/assayo:latest```;
+- senden sie ein containerimage an Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### Veröffentlichungen, ungefähr alle sechs monate. Was weiter:
+
+Schau [haupt dokumentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
+#### Wie kann ich eine übersetzung hinzufügen oder bearbeiten?
+
+Sie können eine neue übersetzung hinzufügen oder die aktuelle im abschnitt korrigieren ```ts/translations/```.
+[Anleitung](https://github.com/firstcontributions/first-contributions)
+
+#### Wünsche, Anregungen, Kommentare
+- telegramm [@bakhirev](https://t.me/bakhirev) (vorrangiger kommunikationsweg)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- web site [https://assayo.online/](https://assayo.online/?ref=github&lang=de)
+
diff --git a/documents/src/md/EN.md b/documents/src/md/EN.md
new file mode 100644
index 0000000..7942c7a
--- /dev/null
+++ b/documents/src/md/EN.md
@@ -0,0 +1,207 @@
+> The [main documentation](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) is in russian. This is a translation. It may contain errors. If you a native speaker, you can help improve this translation. Thanks!
+
+Visualization and analysis of your git repository data ([demo](https://assayo.online/demo/?ref=github&lang=en&dump=./test.txt)).
+
+##### Employee can evaluate new workplace
+- work speed;
+- number of extra hours worked;
+- areas of competence;
+- volume of features and bugs;
+- working style of colleagues;
+
+##### Team lead can evaluate employees
+- identify slackers;
+- estimate the amount of code;
+- learn the work speed;
+- notice behavioral anomalies;
+- see the dynamics of work by week;
+
+##### Founder can evaluate product
+- product cost;
+- cost of features;
+- development time;
+- forecast of rework time;
+- forecast cost;
+
+### Table of contents
+
+
+### How to quickly view the number of commits?
+In the root directory of your project, run:
+```
+git shortlog -s -n -e
+```
+
+
+### How to concat authors?
+In the root directory of your project, you need to create a `.mailmap` file.
+Example of the contents of the file:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Read more about the format of this file you can [here](https://git-scm.com/docs/gitmailmap).
+
+
+### How to export data from git?
+
+
+#### For online viewing
+In the root directory of your project run:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+
+#### For offline viewing
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git will create a file `log.txt`.
+This file contains data for show a report.
+The difference between the online and offline format is the presence of a wrapper for strings. The offline format will be pulled up like a `js` file if you just opened `/build/index.html `
+
+### How to view the report?
+#### Online
+- go to the [website](https://assayo.online/);
+- click the “[Demo](https://assayo.online/demo)” button;
+- drag the `log.txt` file into the browser window;
+#### Offline
+- download this repository;
+- drag the `log.txt` file to the `/build` folder;
+- run `/build/index.html`;
+- or drag the `/build` folder to your repository (where the `log.txt` is located). You can change the name. For example, from `/build` to `/report`.
+ In this case, it is important that the `log.txt` file is generated by the command for offline viewing.
+### How to rebuild the report build?
+- download this repository
+- run `npm install`
+- run `npm run build`
+- the new build will be in the `/build` folder
+### How to view a report on a group of microservices?
+- generate for each microservice file `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) You can do this manually, or use the [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) module for automatic log collection;
+- see “How to view an online report?”. At the last step, drag all the files at once into the browser window.
+- see “How to see a report offline?”. At the second step, drag all microservice files (`log-1.txt`, `log-2.txt`, `log-3.txt` and etc.) to the report folder (`/build`).
+
+
+### How to brand the interface?
+You can create your own interface theme. Options:
+- **Title**. You can set default document title in the URL parameter ```title```. Example: ```?title=You Company```
+- **Visual theme**. To do this, you need to prepare a CSS file with new styles and specify its URL in the ```theme``` parameter. Example: ```?theme=//company.com/some.css```. You can use class names as selectors. Most of them do not change in new versions.
+- **Language**. You can set language in the URL parameter ```lang```. Example: ```?lang=es```
+
+
+### How to sign commits?
+Follow the [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Example:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- task number in the task tracker `(JIRA-1234)`
+- type of work `(feat, fix, style, refactor, test, doc и т.д.)`
+- feature `(profile - new page on site or new function, use one (two) short wordor an abbreviation)`
+- what problem were solved `(Added avatar for user)`
+
+
+### How to add checking for commit message?
+
+
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+
+### How to automate data collection?
+
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+
+#### Without backend
+- create a clone of the repository you need;
+- copy the `build` folder to the root;
+- open `build/index.html` in the browser and add it to bookmarks;
+- add a shortcut to `build/assets/ci-cd.sh` to the startup folder (Windows);
+ Every time you restart the computer, the script will update statistics on all the data that automatically merged into the main branch.
+
+
+### DevOps (CI/CD)
+
+
+#### Public server
+You can upload the data file for report construction to a public URL. And use the website’s [assayo](https://assayo.online/?ref=github&lang=en) to visualize it.
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+
+#### Private server
+- download the [docker image](https://hub.docker.com/r/bakhirev/assayo);
+- run it on your local network;
+- use the web interface to view the reports, set the URL of the data in the URL parameter ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - URL of the assayo container, it listens on port 80;
+you_url - URL of your container with git logs;
+```
+By default, the image will run at ```http://127.0.0.1:80/```. If it doesn't work, check if port 80 is free.
+
+
+#### How to update the Docker image?
+- remove metrics, alerts, old builds;
+- run ```npm run build```
+- run ```docker build -t assayo .```
+- visually check the image ```docker run --name assayo -p 80:80 -d assayo```;
+- add tag ```docker tag assayo bakhirev/assayo:latest```;
+- push image to [Docker Hub](https://hub.docker.com/r/bakhirev/assayo) ```docker push bakhirev/assayo:latest```;
+
+
+### ️ About application
+
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+
+#### How to add or edit a translation?
+You can add a new translation or correct an existing one in the ```ts/translations/``` folder.
+[Instruction](https://github.com/firstcontributions/first-contributions)
+
+
+#### RoadMap:
+Releases are planned approximately once every six months. What’s next:
+- more recommendations and achievements;
+- annual/monthly summaries, report printing;
+- localization and internationalization;
+- file analysis;
+- different roles for statistics (hiding finances);
+- development of the backend, integration with other systems;
+
+
+#### Feedback, comments
+- telegramm [@bakhirev](https://t.me/bakhirev) (priority method of communication)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- website [https://assayo.online/](https://assayo.online/?ref=github&lang=en)
diff --git a/documents/src/md/ES.md b/documents/src/md/ES.md
new file mode 100644
index 0000000..8514401
--- /dev/null
+++ b/documents/src/md/ES.md
@@ -0,0 +1,195 @@
+> [Documentación básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) en ruso. Es una traducción. Puede contener errores. Si usted es un hablante nativo, puede ayudar a mejorar esta traducción. ¡Gracias!
+
+Visualización y análisis de los datos de su repositorio git. ([демо](https://assayo.online/demo/?dump=./test.txt)).
+
+##### El empleado puede evaluar el nuevo lugar de trabajo
+- El ritmo de trabajo;
+- El número de horas extras;
+- Las áreas de responsabilidad;
+- El volumen de características y errores;
+- El estilo de trabajo de los colegas;
+
+##### El jefe puede evaluar a los empleados
+- Identificar a los ociosos;
+- Calcular el volumen de código;
+- Conocer la velocidad de trabajo;
+- Se han notado anomalías de comportamiento;
+- Ver el ritmo de trabajo por semanas;
+
+##### El inversor puede evaluar el producto
+- El costo del producto;
+- El coste de las peculiaridades;
+- El tiempo de desarrollo;
+- La predicción del tiempo de mejoras;
+- La predicción del costo;
+
+### Table of contents
+
+### Cómo puedo rápidamente ver el número de commits?
+
+En la carpeta raíz de su proyecto, ejecute:
+```
+git shortlog -s -n -e
+```
+### Cómo combinar a los autores?
+En la carpeta raíz de su proyecto debe crear un archivo `.mailmap`.
+Un ejemplo del contenido del archivo:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Más información sobre el formato de este archivo se puede leer en [aquí](https://git-scm.com/docs/gitmailmap).
+
+### Cómo descargar los datos desde git?
+
+#### Para la visualización en línea
+En el directorio raíz de su proyecto ejecutar:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### Para ver sin conexión
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git creará un archivo `log.txt`.
+contiene los datos para construir el informe.
+
+La diferencia entre los formatos en línea y fuera de línea está en la existencia de una envoltura para las cadenas. El formato fuera de línea se cargará como un archivo`js` si usted simplemente lo abrió. `/build/index.html`
+
+### ¿Cómo ver el informe?
+#### Online
+- Ir a [sitio web](https://assayo.online/)
+- Pulse el botón [Demo](https://assayo.online/demo)»
+- Arrastrar y soltar archivo `log.txt` en la ventana del navegador
+#### Offline
+- Descargar este repositorio
+- Arrastrar y soltar archivo `log.txt` en la carpeta `/build`
+- Lanzar `/build/index.html`
+- O arrastrar una carpeta `/build` a su repositorio (donde se encuentra ' log.txt`). Puede cambiar el nombre. Por ejemplo `/build` contra `/report`
+
+En este caso, es importante que el archivo ' log.txt ' fue generado por el equipo para ver sin conexión.
+
+### Como recompilar el build de un informe?
+- Descargar este repositorio
+- Ejecutar `npm install`
+- Ejecutar `npm run build`
+- La nueva compilación estará en el directorio `/build`
+
+### Como mirar el reporte de un grupo de microservicios?
+- Generar para cada microservicio el archivo `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
+- Ver “Cómo ver el informe en línea?”. En el último paso, arrastrar todos los archivos al navegador.
+- Ver “Cómo ver informe fuera de línea?”. En el segundo paso, arrastrar los archivos de todos los microservicios al navegador (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) la carpeta informe (`/build`).
+
+### ¿Cómo puedo personalizar la interfaz de usuario?
+Puedes crear tu propio tema para la interfaz. Puedes cambiar:
+- **El título**. Puedes especificarlo en el parámetro de la URL ```title```. Por ejemplo: ```?title=You Company```
+- **El tema visual**. Para esto, debes preparar un archivo CSS con los nuevos estilos y especificar su dirección en el parámetro de URL ```theme```. Por ejemplo: ```?theme=//company.com/some.css```. Puedes usar los nombres de clases como selectores. La mayoría de ellos no cambia con el lanzamiento de nuevas versiones.
+- **La lengua**. Puedes especificarla en el parámetro de la URL ```lang```. Por ejemplo: ```?lang=es```
+
+### ¿Cómo firmar los commits?
+
+Siga la práctica [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por ejemplo:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- El número de la tarea en el gestor de tareas es `(JIRA-1234)`
+- tipo de trabajo `(feat, fix, style, refactor, test, doc etc.)`
+- ficha `(profile - La sección del sitio, la página o la nueva funcionalidad, en una palabra)`
+- ¿qué problema resolvieron? `(Added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### ¿Cómo automatizar el recolección de datos?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sin backend
+- clone del repositorio que desea;
+- copiar a la carpeta raíz `build`;
+- abridlo `build/index.html` añadir a favoritos;
+- agregue un icono de `build/assets/ci-cd.sh` a su carpeta de inicio automático
+ (Windows);
+
+Cada vez que reinicie su computadora, el script actualizará la estadística de todos los datos que se hayan incorporado automáticamente a la rama principal.
+
+### DevOps (CI/CD)
+
+#### Servidor público
+
+Puede publicar el archivo con los datos para generar el informe en una URL pública. Para visualizarlo, puede usar la interfaz web del sitio [assayo](https://assayo.online/). Simplemente indique la dirección donde están los datos en el parámetro URL ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Servidor privado
+- descargar [docker образ](https://hub.docker.com/r/bakhirev/assayo);
+- recogerlo en la red local;
+- Para ver los informes, use la interfaz web indicándole la dirección de los datos en el parámetro URL ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - URL dirección del contenedor assayo, Él está escuchando el puerto 80;
+you_url - URL la dirección de su contenedor con registros git;
+```
+
+Por defecto, la imagen se ejecutará en la siguiente dirección ```http://127.0.0.1:80/```. Si no funciona, compruebe si tiene el puerto 80 disponible
+#### Actualización de la imagen Docker
+
+- eliminar métricas, alertas, compilaciones antiguas;
+- construir ```npm run build```
+- montar la imagen ```docker build -t assayo .```
+- comprobar visualmente la imagen ```docker run --name assayo -p 80:80 -d assayo```;
+- poner la etiqueta ```docker tag assayo bakhirev/assayo:latest```;
+- poner la imagen en Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### Los lanzamientos son aproximadamente una vez cada seis meses. Lo siguiente será:
+
+- más consejos y logros;
+- resultados del año / mes, impresión de informes;
+- localización e internacionalización;
+- análisis de archivos;
+- diferentes roles para estadísticas (ocultación de finanzas);
+- desarrollo de la parte de atrás, integraciones con otros sistemas;
+
+#### ¿Cómo añadir o editar una traducción?
+
+Puede agregar una nueva traducción o corregir la actual en la sección ```ts/translations/```.
+[Instrucciones](https://github.com/firstcontributions/first-contributions)
+
+#### Deseos, comentarios
+- telegramm [@bakhirev](https://t.me/bakhirev) (La forma preferencial de contacto)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- sitio web [https://assayo.online/](https://assayo.online/?ref=github&lang=es)
+
diff --git a/documents/src/md/FR.md b/documents/src/md/FR.md
new file mode 100644
index 0000000..3c722bf
--- /dev/null
+++ b/documents/src/md/FR.md
@@ -0,0 +1,190 @@
+> La [documentation principale](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) est en russe. C'est une traduction. Il peut contenir des erreurs. Si vous êtes un locuteur natif, vous pouvez aider à améliorer cette traduction. Merci!
+
+Visualisation et analyse des données de votre dépôt Git ([демо](https://assayo.online/demo/?dump=./test.txt)).
+
+##### Un employé peut évaluer un nouveau lieu de travail
+- le rythme du travail;
+- le nombre de heures supplémentaires;
+- les zones de responsabilité;
+- la taille des fonctionnalités et bogues;
+- le style de travail des collègues;
+
+##### Un chef peut évaluer les employés
+- détecter les fainéants;
+- estimer la taille du code;
+- connaître la vitesse de travail;
+- remarquer les anomalies du comportement;
+- remarquer les anomalies du comportement;
+
+##### L’investisseur peut évaluer le produit
+- le coût du produit;
+- le coût des fonctionnalités;
+- la durée de développement;
+- la projection de la durée des mises à niveau;
+- la projection du coût;
+
+### Table of contents
+
+### De combien de commits avez-vous besoin?
+
+Dans le répertoire racine de votre projet, exécutez les commandes suivantes:
+```
+git shortlog -s -n -e
+```
+### Comment pouvez-vous combiner les auteurs ?
+Dans le répertoire racine de votre projet, créez le fichier suivant: `.mailmap`.
+L’exemple de la ligne de fichier est le suivant:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Vous pouvez en savoir plus sur le format de ce fichier en lisant la documentation officielle. [ici](https://git-scm.com/docs/gitmailmap).
+
+### Comment télécharger des données depuis git ?
+
+#### Pour une visualisation en ligne
+Dans le répertoire racine de votre projet, exécutez:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### Pour la navigation hors ligne
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git va créer le fichier `log.txt`.
+Son contenu est destiné à la création de rapports.
+
+La différence entre le format en ligne et le format hors ligne réside dans l’enveloppe des lignes. Le format hors ligne sera chargé comme un fichier js si vous avez simplement ouvert `/build/index.html`
+
+### Comment voir le rapport en ligne?
+#### Online
+- Aller à [сайт](https://assayo.online/)
+- Appuyer sur le bouton “[Démo](https://assayo.online/demo)”
+- Faites glisser le fichier `log.txt` dans la fenêtre du navigateur
+#### Offline
+- Télécharger ce dépôt
+- Glisser le fichier `log.txt` dans le dossier `/build`
+- Démarrer `/build/index.html`
+- Ou coller le dossier `/build` Sur votre dépôt (là où se trouve `log.txt`). Vous pouvez changer le nom. Par exemple avec `/build` sur `/report`. Dans cette cas, il est important que le fichier log.txt ait été généré par le commande pour la visualisation hors ligne.
+
+### Comment recompiler la build du rapport?
+- Télécharger ce dépôt
+- Exécuter `npm install`
+- Exécuter `npm run build`
+- La dernière build sera dans le dossier `/build`
+
+### Comment voir le compte rendu pour un groupe de microservices?
+- générer un fichier pour chaque microservice `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
+- Voir “Comment voir le rapport en ligne?”. Au dernier pas, glisser tous les fichiers dans la fenêtre du navigateur.
+- Voir “Comment regarder le rapport hors-ligne?”. Au deuxième pas, coller tous les fichier de microservices (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) dans le dossier du rapport (`/build`).
+
+### Comment apposer une marque sur l’interface?
+Vous pouvez écrire votre propre thème pour l’interface. Vous pouvez changer :
+- **En-tête**. Vous pouvez le spécifier dans le paramètre de l’URL ```title```. Par exemple: ```?title=You Company```
+- **Thème visuel**.Pour cela, vous devez préparer un fichier CSS avec de nouveaux styles et indiquer son adresse dans le paramètre de l’URL ```theme```. Par exemple: ```?theme=//company.com/some.css```. Vous pouvez utiliser les noms de classes comme sélecteurs. La plupart d’entre elles ne changent pas lors de la sortie de nouvelles versions.
+- **Langue**. Vous pouvez l’indiquer dans le paramètre d’URL ```lang```. Par exemple: ```?lang=es```
+
+### Comment signer les commits ?
+
+Suivez la pratique [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Par exemple:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- numéro de tâche dans task Tracker `(JIRA-1234)`
+- type de travail `(feat, fix, style, refactor, test, doc etc.)`
+- ficha `(profile - la section du site, la page ou la nouvelle fonctionnalité, en un mot)`
+- quel problème ont-ils résolu `(Added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### Comment automatiser la collecte de données?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sans back-end
+- clonez le dépôt que vous voulez ;
+- copiez le dossier `build`;
+- Ouvrez `build/index.html` dans le navigateur et ajoutez-le aux favoris;
+- ajoutez un raccourci sur `build/assets/ci-cd.sh` dans le dossier de démarrage automatique (Windows); Chaque fois que votre ordinateur se recharge, le script mettra à jour les statistiques sur toutes les données qui se sont automatiquement insérées dans la branche principale.
+
+### DevOps (CI/CD)
+
+#### Serveur public
+
+Vous pouvez mettre à disposition le fichier avec les données pour construire le rapport sur l’URL publique. Et pour sa visualisation, utiliser l’interface web du site. [assayo](https://assayo.online/). Tout simplement, indiquez l’adresse où se trouvent les données dans le paramètre de l’URL ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Serveur privé
+- télécharger [docker образ](https://hub.docker.com/r/bakhirev/assayo);
+- Soulevez-le sur le réseau local;
+- Pour consulter les rapports, utilisez l’interface web en lui indiquant l’adresse où les données se trouvent, sous forme de paramètre dans l’URL ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - URL Conteneur assayo, écoute le port 80;
+you_url - URL адресс Adresse de votre conteneur de logs git;
+```
+
+Par défaut, l'image s'exécute à ```http://127.0.0.1:80/```. Si cela ne fonctionne pas, vérifiez si le port 80 est disponible.
+#### Mise à jour de l’image-Docker
+
+- supprimer la métrique, les alertes, les vieilles builds;
+- constuire la build ```npm run build```
+- assembler l'image ```docker build -t assayo .```
+- vérifier visuellement l'image ```docker run --name assayo -p 80:80 -d assayo```;
+- mettre la balise ```docker tag assayo bakhirev/assayo:latest```;
+- Envoyer le code au référentiel d'images dans Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### Les versions sont publiées environ tous les six mois. Quoi de neuf:
+
+- plus de conseils et de succès;
+- résultats de l’année / du mois, impression des rapports;
+- localisation et internationalisation;
+- analyse des fichiers;
+- différents rôles pour la statistique (cacher la finance);
+- développement du backend, intégrations avec d’autres systèmes;
+
+#### Comment ajouter ou modifier une traduction?
+
+Vous pouvez ajouter une nouvelle traduction ou corriger la traduction existante dans le section ```ts/translations/```.
+[Instruction](https://github.com/firstcontributions/first-contributions)
+
+#### Souhaits, suggestions, commentaires
+- telegramm [@bakhirev](https://t.me/bakhirev) (voie de communication prioritaire)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- site [https://assayo.online/](https://assayo.online/?ref=github&lang=fr)
+
diff --git a/documents/src/md/JA.md b/documents/src/md/JA.md
new file mode 100644
index 0000000..838208a
--- /dev/null
+++ b/documents/src/md/JA.md
@@ -0,0 +1,188 @@
+> [主な文書はロシア語です。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) これは翻訳です。 エラーが含まれている可能性があります。 あなたがネイティブスピーカーであれば、この翻訳を改善するのに役立ちます。 ありがとう!
+
+データの可視化とGitレポジトリの分析 ([デモ](https://assayo.online/demo/?dump=./test.txt)).
+
+##### 従業員は新しい職場を評価することができます
+- 働きのペース;
+- 過労;
+- 職務範囲;
+- 新機能とバグの量;
+- 同僚の仕事スタイル;
+
+##### 管理者は従業員を評価できます
+- 無職人の特定;
+- コードの量を推定する;
+- 作業速度を確認する;
+- 行動の異常を発見する;
+- 週次で作業状況を確認する;
+
+##### アイベンターは製品を評価できます
+- 製品の価格;
+- 新機能の価格;
+- 開発時間;
+- 改善時間の予測;
+- 予測価格;
+
+### Table of contents
+
+### コミット数を素早く確認するにはどうすればよいでしょうか。
+
+プロジェクトのルートディレクトリで以下のコマンドを実行します:
+```
+git shortlog -s -n -e
+```
+### 作者をまとめるにはどうすればいいですか?
+プロジェクトのルートディレクトリ内に.mailmapファイルを作成する必要があります。
+ファイルの内容の例:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+このファイルの形式について詳しく読むことができます [ここに](https://git-scm.com/docs/gitmailmap).
+
+### Gitからデータをダウンロードするにはどうすればよろしいでしょうか。
+
+#### Дオンラインで見るため
+プロジェクトのルートディレクトリに次のコマンドを入力します:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### インターネットなしで見るために
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Gitはファイルを作成します `log.txt`.
+このファイルには、レポートを構築するためのデータが含まれています。
+
+インターネットのない形式とインターネットのある形式は、文字列が埋め込まれているという点で異なります。インターネットを持たない形式でファイルを開くと、単に「js」ファイルとして読み込まれます。 `/build/index.html`
+
+### レポートを表示するにはどうすればよいですか?
+#### Online
+- に切り替える [ウェブサイト](https://assayo.online/)
+- ボタンを押す “[デモ](https://assayo.online/demo?lang=ru)”
+- ファイルをドラッグ&ドロップする `log.txt` ブラウザウィンドウで
+#### Offline
+- このリポジトリをダウンロードする
+- ファイルをドラッグ&ドロップする `log.txt` フォルダへ `/build`
+- 実行するには `/build/index.html`
+- フォルダをドラッグして下さい `/build` 自分のリポジトリーにフォルダを置いてください (それがある場所 `log.txt`). 名前を変更することができます。例えば名前 `/build` を `/report`
+
+重要なのは、ファイル `log.txt` インターネットが利用できない環境で、レポートを表示するために作成されたコマンドである必要があります。
+
+### レポートファイルを再構成する方法は?
+- このリポジトリをダウンロードしてください
+- 実行するには `npm install`
+- 実行するには `npm run build`
+- 最新のビルドは、フォルダに含まれるでしょう `/build`
+
+### マイクロサービス群のレポートを表示するにはどうすればよいでしょうか。
+- マイクロサービスごとにファイルを作成します。 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` など。)
+- "インターネット上でレポートを見る方法"を参照してください。最後の手順では、すべてのファイルをブラウザのウィンドウに一度にドラッグ&ドロップします。
+- “インターネットなしでレポートを見る方法” を参照してください。第二段階では、マイクロサービスのすべてのファイルをドラッグしてドロップする必要があります。(`log-1.txt`, `log-2.txt`, `log-3.txt` など。) レポートフォルダへ (`/build`).
+
+### 自社のブランドカラーでインターフェースをリニュアルカラーに変えるにはどうすればよろしいでしょうか。
+インターフェースのテーマを独自に作成することができます。下記の項目は変更できます。
+- **見出し**. それはURLパラメータで指定することができます ```title```. 例えば: ```?title=You Company```
+- **CSS スタイル**. そのためにはCSSファイルを用意し、そのアドレスをURLパラメーターに指定する必要があります ```theme```. 例えば: ```?theme=//company.com/some.css```. クラス名をセレクターとして使用することができます。ほとんどの場合、新しいバージョンがリリースされると変更されません
+- **言語**. URLパラメータに指定することができます ```lang```. 例えば: ```?lang=es```
+
+### commit文の署名方法は?
+
+練習に従ってください [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例えば:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- 発行番号 `(JIRA-1234)`
+- 仕事の種類 `(feat, fix, style, refactor, test, doc など。)`
+- 仕事の分野 `(profile - サイトのセクション、ページ、新機能、簡単に)`
+- ジョブの説明 `(Added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### データの自動収集方法は?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### バックエンドなし
+- リポジトリのクローンを作成します。;
+- フォルダをコピーする `build` 現在のリポジトリから;
+- オープン `build/index.html` ブラウザでブックマークに追加します。;
+- にショートカットを追加する `build/assets/ci-cd.sh` 自動起動フォルダーに (Windows);
+
+コンピューターを再起動するとき、スクリプトはメインブランチに自動的に挿入されたすべてのデータについての統計を更新します。
+
+### DevOps (CI/CD)
+
+#### 公開サーバ
+
+データをレポートビルド用に公開するファイルをURLで公開することができます。その視覚化は、サイト上で利用可能なツールを使用することで行うことができます。 [assayo](https://assayo.online/). データがある場所のアドレスを、URLパラメータに入力してください。 ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### プライベートサーバー
+- ダウンロード [dockerイメージ](https://hub.docker.com/r/bakhirev/assayo);
+- ローカルネットワーク内で実行します。;
+- レポートの表示には、データが置かれている場所のアドレスがURLパラメータに入っていることを指定したウェブインターフェイスを使用します。 ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - ポート80でリッスンしているassayoコンテナのURL;
+you_url - gitのログのコンテナーのURLアドレス;
+```
+
+デフォルトではイメージは以下のアドレスで起動します ```http://127.0.0.1:80/```. 問題が解決しない場合は、ポート80が開いているか確認してみてください。
+#### Dockerイメージの更新
+
+- 次のコマンドを実行します ```npm run build```
+- 次のコマンドを実行します ```docker build -t assayo .```
+- 結果を確認する ```docker run --name assayo -p 80:80 -d assayo```;
+- 次のコマンドを実行します ```docker tag assayo bakhirev/assayo:latest```;
+- コンテナイメージをDocker Hubにアップロードする ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 半年ごとにリリースを行います。次は何でしょうか。
+
+見て! [主なドキュメント](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
+#### 翻訳を追加または編集するにはどうすればいいでしょうか。
+
+新しい翻訳を追加するか、現在の翻訳を修正するために、以下のセクションでそれを行うことができます: ```ts/translations/```.
+[取扱説明書](https://github.com/firstcontributions/first-contributions)
+
+#### 願い、提案、コメント
+- telegramm [@bakhirev](https://t.me/bakhirev) (優先通信方式)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- ウェブサイト [https://assayo.online/](https://assayo.online/?ref=github&lang=ja)
+
diff --git a/documents/src/md/PT.md b/documents/src/md/PT.md
new file mode 100644
index 0000000..88753d3
--- /dev/null
+++ b/documents/src/md/PT.md
@@ -0,0 +1,188 @@
+> [Documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) em russo. É uma tradução. Pode conter erros. Se você é um falante nativo, você pode ajudar a melhorar esta tradução. Obrigado!
+
+Visualização e análise de dados do seu repositório git ([demonstração](https://assayo.online/demo/?dump=./test.txt)).
+
+##### Funcionario de avaliar o novo local de trabalho
+- ritmo de trabalho;
+- número de horas extras;
+- áreas de responsabilidade;
+- volume de novo funcionalidade e bugs;
+- estilo de trabalho dos colegas;
+
+##### O chefe pode avaliar os funcionários
+- identificar os ociosos;
+- estimar o volume do código;;
+- descobrir a velocidade de trabalho;
+- notar anomalias no comportamento;
+- ver a dinâmica do trabalho por semanas;
+
+##### O investidor pode avaliar o produto:
+- o valor do produto;
+- o custo do novo funcionalismo;
+- tempo de desenvolvimento;
+- Forecasting the time for improvements;
+- previsão de custos;
+
+### Table of contents
+
+### Como é rápido ver o número de commits?
+
+No diretório raiz do seu projeto, execute o comando:
+```
+git shortlog -s -n -e
+```
+### Como combinar os autores?
+É necessário criar um arquivo no diretório principal do seu projeto `.mailmap`.
+Exemplo de conteúdo de arquivo:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Pode ler mais sobre o formato deste arquivo em [aqui](https://git-scm.com/docs/gitmailmap).
+
+### Como exportar dados do git?
+
+#### Para visualização online
+No diretório raiz do seu projeto executar:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### Para ver sem internet
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git criar um ficheiro `log.txt`.
+Esse arquivo contém dados para construção de relatórios.
+
+A diferença entre os formatos está na existência de uma envoltória para as linhas. O formato sem internet será puxado como `js` o arquivo se você o abriu simplesmente `/build/index.html`
+
+### Como ver o relatório?
+#### Online
+- Ir para [site](https://assayo.online/)
+- Pressione o botão “[Demonstração](https://assayo.online/demo?lang=ru)”
+- Arrastar e largar `log.txt` na janela do navegador
+#### Offline
+- Baixar este repositório
+- Arraste o arquivo `log.txt` para a pasta `/build`
+- Lançar `/build/index.html`
+- Ou arraste a pasta `/build` ir para o repositório (o lugar onde se encontra `log.txt`). Você pode mudar o nome. Por exemplo, do nome `/build` no título `/report`
+
+É importante que o arquivo `log.txt` foi criado por uma equipe para navegar sem internet.
+
+### Como recompilar o arquivo do relatório?
+- Baixar este repositório
+- Executar `npm install`
+- Executar `npm run build`
+- A compilação mais recente estará na pasta `/build`
+
+### Como visualizar o relatório do grupo de microserviços?
+- Gerar um arquivo para cada microserviço `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.)
+- Veja “Como visualizar o relatório com a internet?”. No último passo, arraste todos os arquivos para a janela do navegador.
+- Veja “Como visualizar o relatório sem a internet?”. No segundo passo, arraste todos os microserviços (`log-1.txt`, `log-2.txt`, `log-3.txt` etc.) na pasta relatório (`/build`).
+
+### Como alterar as cores da interface para as cores da sua marca?
+Você pode escrever seu próprio tema de interface. Pode mudar:
+- **Cabeçalho**. Você pode especificar em um parâmetro da URL ```title```. Por exemplo: ```?title=You Company```
+- **CSS стили**. Para fazer isso, você precisa preparar um arquivo CSS e especificar o seu endereço no parâmetro da URL ```theme```. Por exemplo: ```?theme=//company.com/some.css```. Você pode usar os nomes das classes como seletores. A maioria deles não muda na saída de uma nova versão.
+- **Idioma**. Você pode incluir em um parâmetro de URL. ```lang```. Por exemplo: ```?lang=es```
+
+### Como faço para assinar commits?
+
+Siga a prática [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Por exemplo:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- número da tarefa `(JIRA-1234)`
+- tipo de trabalho `(feat, fix, style, refactor, test, doc etc.)`
+- área de trabalho `(profile - Página)`
+- descrição do trabalho `(Added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### Como automatizar a coleta de dados?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Sem backend
+- criar um clone do seu repositório;
+- copie a pasta `build` do repositório atual;
+- abrir `build/index.html` no navegador e adicionar aos favoritos;
+- adicionar um shortcut na `build/assets/ci-cd.sh` na pasta de inicialização (Windows);
+
+A cada reinício do computador, o script atualiza a estatística com todos os dados que sejam automaticamente incorporados na branch principal.
+
+### DevOps (CI/CD)
+
+#### Servidor Público
+
+Você pode disponibilizar o arquivo com os dados para construção do relatório em um URL público. Para visualizá-lo, você pode usar um site [assayo](https://assayo.online/). Especifique o endereço onde os dados estão localizados no parâmetro de URL ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Servidor Privado
+- baixar [docker imagem](https://hub.docker.com/r/bakhirev/assayo);
+- execute-o na rede local;
+- Para visualizar os relatórios, utilize a interface web, indicando-lhe o endereço em que os dados se encontram localizados através do parâmetro URL ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - O URL do endereço do container Assay, ele está escutando na porta 80;
+you_url - O URL do seu container com os logs do git;
+```
+
+Por padrão, a imagem será iniciada no endereço ```http://127.0.0.1:80/```. Se você não conseguiu, verifique se a porta 80 está disponível no seu computador.
+#### Atualizar a imagem Docker
+
+- executar um comando ```npm run build```
+- executar um comando ```docker build -t assayo .```
+- verificar o resultado ```docker run --name assayo -p 80:80 -d assayo```;
+- executar um comando ```docker tag assayo bakhirev/assayo:latest```;
+- enviar a imagem do container para o Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### Liberações, aproximadamente, uma vez por semestre. O que vem a seguir:
+
+Vide [documentação básica](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
+#### Como adicionar ou editar uma tradução?
+
+Você pode adicionar uma nova tradução ou corrigir uma existente na seção ```ts/translations/```.
+[Instrução](https://github.com/firstcontributions/first-contributions)
+
+#### Sugestões, sugestões, comentários
+- telegramm [@bakhirev](https://t.me/bakhirev) (método de comunicação prioritário)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- site [https://assayo.online/](https://assayo.online/?ref=github&lang=pt)
+
diff --git a/documents/src/md/RU.md b/documents/src/md/RU.md
new file mode 100644
index 0000000..5293c33
--- /dev/null
+++ b/documents/src/md/RU.md
@@ -0,0 +1,205 @@
+Визуализация и анализ данных вашего git-репозитория ([демо](https://assayo.online/demo/?dump=./test.txt)).
+
+##### Сотрудник может оценить новое место работы
+- темп работы;
+- количество переработок;
+- зоны ответственности;
+- объем фичей и багов;
+- стиль работы коллег;
+
+##### Руководитель может оценить сотрудников
+- выявить бездельников;
+- прикинуть объём кода;
+- узнать скорость работы;
+- заметить аномалии поведения;
+- посмотреть динамику работы по неделям;
+
+##### Инвестор может оценить продукт
+- стоимость продукта;
+- стоимость фичей;
+- время на разработку;
+- прогноз времени доработок;
+- прогноз стоимости;
+
+### Содержание
+
+
+### Как быстро посмотреть количество коммитов?
+
+В корневой директории вашего проекта выполнить:
+```
+git shortlog -s -n -e
+```
+
+### Как объединить авторов?
+В корневой директории вашего проекта нужно создать файл `.mailmap`.
+Пример содержания файла:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+Подробнее про формат этого файла можно прочитать [тут](https://git-scm.com/docs/gitmailmap).
+
+
+### Как выгрузить данные из git?
+
+
+#### Для онлайн просмотра
+В корневой директории вашего проекта выполнить:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+
+#### Для офлайн просмотра
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git создаст файл `log.txt`.
+Он содержит данные для построения отчёта.
+
+Разница между онлайн и офлайн форматом в наличие обёртки для строк. Оффлайн формат будет подтягиваться, как `js` файл если вы просто открыли `/build/index.html`
+
+### Как посмотреть отчёт?
+#### Онлайн
+
+- Перейти на [сайт](https://assayo.online/)
+- Нажать кнопку «[Демо](https://assayo.online/demo)»
+- Перетащить файл `log.txt` в окно браузера
+
+#### Офлайн
+- Скачать этот репозиторий
+- Перетащить файл `log.txt` в папку `/build`
+- Запустить `/build/index.html`
+- Или перетащить папку `/build` к себе в репозиторий (туда, где лежит `log.txt`). Можно сменить название. Например с `/build` на `/report`
+
+В этом случае важно, чтобы файл `log.txt` был сгенерирован командой для офлайн просмотра.
+
+### Как пересобрать билд отчёта?
+- Скачать этот репозиторий
+- Выполнить `npm install`
+- Выполнить `npm run build`
+- Свежая сборка будет в папке `/build`
+
+### Как посмотреть отчёт по группе микросервисов?
+- Сгенерировать для каждого микросервиса файл `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.). Вы можете сделать это в ручную, или использовать модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler) для автоматического сбора логов;
+- См. «Как посмотреть отчёт онлайн?». На последнем шаге перетащить сразу все файлы в окно браузера.
+- См. «Как посмотреть отчёт офлайн?». На втором шаге перетащить все файлы микросервисов (`log-1.txt`, `log-2.txt`, `log-3.txt` и т.д.) в папку отчета (`/build`).
+
+### Как брендировать интерфейс?
+Вы можете написать свою тему для интерфейса. Можно менять:
+- **Заголовок**. Вы можете указать его в URL-параметре ```title```. Например: ```?title=You Company```
+- **Визуальную тему**. Для этого нужно подготовить CSS файл с новыми стилями и указать его адрес в URL-параметре ```theme```. Например: ```?theme=//company.com/some.css```. Вы можете использовать имена классов в качестве селекторов. Большинство из них не меняется в при выходе новой версий.
+- **Язык**. Вы можете указать его в URL-параметре ```lang```. Например: ```?lang=es```
+
+### Как подписывать коммиты?
+
+Следуйте практике [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). Например:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- номер задачи в таск трекере `(JIRA-1234)`
+- тип работы `(feat, fix, style, refactor, test, doc и т.д.)`
+- фича `(profile - раздел сайта, страница или новый функционал, одним словом)`
+- какую проблему решали `(Added avatar for user)`
+
+### Как добавить проверку текста коммита?
+
+#### Используя файл `commit-msg`
+
+1. Создайте файл `commit-msg` в папке `.git/hooks/`
+2. Добавьте в файл следующий текст:
+```
+#!/usr/bin/env bash
+
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Используя пакет [pre-commit](https://www.npmjs.com/package/pre-commit)
+
+1. Добавьте в файл `package.json` блок `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Выполните команду `npm install pre-commit`
+
+### Как автоматизировать сбор данных?
+
+#### С бекендом
+
+- используйте модуль [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### Без бекенда
+- создайте клон нужного вам репозитория;
+- скопируйте в корень папку `build`;
+- откройте `build/index.html` в браузере и добавьте в закладки;
+- добавьте ярлык на `build/assets/ci-cd.sh` в папку автозагрузки (Windows);
+
+Каждый раз, при перезагрузке компьютера, скрипт будет обновлять статистику по всем данным, которые автоматически влились в основную ветку.
+
+### DevOps (CI/CD)
+
+#### Публичный сервер
+
+Вы можете выкладывать файл с данными для построения отчёта на публичный URL. А для его визуализации использовать веб-интерфейс сайта [assayo](https://assayo.online/). Просто укажите адресс, где лежат данные, в URL-параметре ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### Приватный сервер
+- скачайте [docker образ](https://hub.docker.com/r/bakhirev/assayo);
+- поднимите его в локальной сети;
+- для просмотра отчётов используйте веб-интерфейс указывая ему адресс, где лежат данные, в URL-параметре ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - URL адресс контейнера assayo, он слушает 80 порт;
+you_url - URL адресс вашего контейнера с логами git;
+```
+
+По умолчанию образ запустится по адресу ```http://127.0.0.1:80/```. Если не получилось проверьте свободен ли у вас 80 порт.
+#### Обновление Docker-образа
+
+- удилить метрику, аллерты, старые билды;
+- собрать билд ```npm run build```
+- собрать образ ```docker build -t assayo .```
+- визуально проверить образ ```docker run --name assayo -p 80:80 -d assayo```;
+- поставить тег ```docker tag assayo bakhirev/assayo:latest```;
+- запушить образ в Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ О приложении
+
+#### Архитектура
+
+
+1. [Reports showcase UI](###) отображение списка отчётов. Каждый отчёт имеет название, описание и список репозиториев.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) сборка, склейка, обработка логов из репозиториев для отчётов.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(вы тут)** отображение отчётов. Для работы ему нужен log файл с данными.
+
+#### Релизы, примерно, раз в полгода. Что дальше:
+
+- больше советов и достижений;
+- итоги года / месяца, печать отчётов;
+- локализация и интернационализация;
+- анализ файлов;
+- разные роли для статистики (скрытие финансов);
+- разработка бекенда, интеграции с другими системами;
+
+#### Как добавить или отредактировать перевод?
+
+Вы можете добавить новый перевод или поправить текущий в разделе ```ts/translations/```.
+[Инструкция](https://github.com/firstcontributions/first-contributions)
+
+#### Пожелания, предложения, замечания
+- telegramm [@bakhirev](https://t.me/bakhirev) (приоритетный способ связи)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- сайт [https://assayo.online/](https://assayo.online/?ref=github&lang=ru)
+
diff --git a/documents/SIMPLE_RU.md b/documents/src/md/SIMPLE_RU.md
similarity index 98%
rename from documents/SIMPLE_RU.md
rename to documents/src/md/SIMPLE_RU.md
index 0514684..54d2be4 100644
--- a/documents/SIMPLE_RU.md
+++ b/documents/src/md/SIMPLE_RU.md
@@ -5,7 +5,7 @@
# [Assayo](https://assayo.online/?ref=github&lang=ru)
-Визуализация и анализ данных вашего git-репозитория ([демонстрация](https://assayo.online/demo/?dump=./test.txt&lang=ru)).
+Визуализация и анализ данных вашего git-репозитория ([демонстрация](https://assayo.online/demo/?dump=./test.txt)).
##### Сотрудник может оценить новое место работы
- темп работы;
@@ -139,7 +139,7 @@ you_url - URL адресс вашего контейнера с логами
- выполнить команду ```npm run build```
- выполнить команду ```docker build -t assayo .```
- проверить результат ```docker run --name assayo -p 80:80 -d assayo```;
-- выполнить команду ```docker tag IMAGE_ID bakhirev/assayo:latest```;
+- выполнить команду ```docker tag assayo bakhirev/assayo:latest```;
- отправить образ контейнера в Docker Hub
### Релизы, примерно, раз в полгода. Что дальше:
diff --git a/documents/src/md/ZH.md b/documents/src/md/ZH.md
new file mode 100644
index 0000000..7b23a4c
--- /dev/null
+++ b/documents/src/md/ZH.md
@@ -0,0 +1,189 @@
+> [主要文件是俄文。](https://github.com/bakhirev/assayo/blob/main/documents/RU.md) 这是一个翻译。 它可能包含错误。 如果您是母语人士,您可以帮助改进此翻译。 谢谢!
+
+对您的git仓库的数据进行可视化和分析 ([示范表现](https://assayo.online/demo/?dump=./test.txt)).
+
+##### 工作人员可以评估新工作场所
+- 工作节奏;
+- 加班数量;
+- 责任范围;
+- 新功能和错误量;
+- 同事工作方式。;
+
+##### 管理者可以评估员工
+- 发现闲置工作者;
+- 估算代码量;
+- 了解工作速度;
+- 注意行为异常;
+- 查看工作周期动态。;
+
+##### 投资者可以评估产品
+- 产品的成本;
+- 新功能的成本;
+- 开发时间;
+- 修改时间预测;
+- 成本预测;
+
+### Table of contents
+
+### 如何 quickly 查阅 commit 的 次数?
+
+在项目的根目录中执行以下命令:
+```
+git shortlog -s -n -e
+```
+### 如何 combine 作者?
+在项目的 根目录 创建一个文件 `.mailmap`.
+文件内容示例:
+```
+Alex B
+Alex B
+Alex B
+Alex B
+```
+关于这个文件格式的 详情 可以 参考 [这里](https://git-scm.com/docs/gitmailmap).
+
+### 如何从 git 导出数据?
+
+#### 供网上浏览
+在项目的根目录执行:
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" > log.txt
+```
+#### 在没有互联网的情况下观看
+
+```
+git --no-pager log --numstat --oneline --all --reverse --date=iso-strict --pretty=format:"%ad>%cN>%cE>%s" | sed -e 's/\\/\\\\/g' | sed -e 's/`/"/g' | sed -e 's/^/report.push(\`/g' | sed 's/$/\`\);/g' | sed 's/\$/_/g' > log.txt
+```
+Git会创建一个文件 `log.txt`.
+这个文件包含了构建报告的数据。
+
+字符串格式的区别在于它们具有的包装。无网络格式将会像您只是简单地打开了js文件一样被加载。 `/build/index.html`
+
+### 如何在线查看报告?
+
+- 切换到 [网站](https://assayo.online/)
+- 按下按钮 “[示范](https://assayo.online/demo?lang=ru)”
+- 拖放文件 `log.txt` 在浏览器窗口中
+
+### 如何在没有网络环境下查看报告?
+- 下载这个存储库
+- 拖放文件 `log.txt` 到文件夹 `/build`
+- 要运行 `/build/index.html`
+- 或是拖放文件夹 `/build` 到我的仓库 (它所在的地方 `log.txt`). 可以改变名称。比如,从名称 `/build` 到名称 `/report`
+
+重要的事情是,必须让log.txt这个文件是通过命令创建出来的,这样它就可以在没有网的时候查看了。
+
+### 如何重打包报告文件?
+- 下载这个储存库
+- 要执行 `npm install`
+- 要执行 `npm run build`
+- 最新的构建将在文件夹 `/build`
+
+### 如何查看微服务组的报告?
+- 为每个微服务生成文件 `log.txt` (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等)
+- 参见“如何在有网络环境下查看报告”。在最后一步,将所有文件同时拖入浏览器窗口。
+- 参见“如何在没有网络环境下查看报告”。第二步将所有微服务文件拖动到 (`log-1.txt`, `log-2.txt`, `log-3.txt` 等等) 到报表文件夹 (`/build`).
+
+### 如何将界面重新配色为公司专有颜色?
+您可以为界面创建自己的主题。可以修改:
+- **标题**. 你可以在网址参数中指定它 ```title```. 例如: ```?title=You Company```
+- **CSS样式**. 为了做到这一点,你需要准备一个CSS文件并在网址参数中指明其地址 ```theme```. 例如: ```?theme=//company.com/some.css```. 你可以使用类名作为选择器。大多数情况下,他们在新版本发布时不会发生变化。
+- **语言**. 你可以把它放在网址的参数中。 ```lang```. 例如: ```?lang=es```
+
+### 如何签署提交?
+
+遵循实践 [Conventional Commits 1.0.0](https://www.conventionalcommits.org/en/v1.0.0/). 例如:
+```
+JIRA-1234 feat(profile): Added avatar for user
+```
+- 任务号 `(JIRA-1234)`
+- 工作类别 `(feat, fix, style, refactor, test, doc 等等)`
+- 工作领域 `(profile - 地盘组, 网页 或新功能, 一句话)`
+- 职位描述 `(Added avatar for user)`
+### How to add checking for commit message?
+#### Use file `commit-msg`
+1. Create file `commit-msg` in folder `.git/hooks/`
+2. Add this text in file:
+```
+#!/usr/bin/env bash
+if ! grep -iqE "(JIRA-[0-9]{1,5})(\s)(feat|fix|docs|style|refactor|test|chore)((\([a-z0-9_-]{1,}\)){0,})(:\s)([a-z]{1,})" "$1"; then
+ echo "Need commit message like: JIRA-12 fix(profile): some text. Read Semantic Commit Messages" >&2
+ exit 1
+fi
+```
+#### Use package [pre-commit](https://www.npmjs.com/package/pre-commit)
+1. Add in file `package.json` property `commit-msg`:
+```
+ ...
+ "commit-msg": {
+ "regex": "(JIRA-[0-9]{1,5})(\\s)(feat|fix|docs|style|refactor|test|chore)((\\([a-z0-9_-]{1,}\\)){0,})(:\\s)([a-z]{1,})",
+ "error-message": "Need commit message like: JIRA-12 fix(profile): some text Read Semantic Commit Messages"
+ },
+ ...
+```
+2. Run command `npm install pre-commit`
+
+### 如何自动化数据采集?
+
+#### With backend
+- use module [Assayo Crawler](https://github.com/bakhirev/assayo-crawler);
+
+#### 没有后端
+- 克隆您的仓库;
+- 复制文件夹 `build` 从当前仓库;
+- 打开 `build/index.html` 在浏览器中添加书签;
+- 添加一个快捷方式 `build/assets/ci-cd.sh` 自动启动文件夹 (Windows);
+
+每次重启计算机,该脚本将更新统计数据,这些数据自动添加到主分支中。
+
+### DevOps (CI/CD)
+
+#### 公共服务器
+
+您可以将数据构建报告文件发布到公共URL,可以使用网站来显示它。 [assayo](https://assayo.online/). 指定数据所在的地址作为URL参数 ```dump```:
+```
+https://assayo.online/demo/?dump=//you_site.com/some/log.txt
+```
+
+#### 专用服务器
+- 下载 [docker镜像](https://hub.docker.com/r/bakhirev/assayo);
+- 在本地网络中运行它;
+- 使用web界面查看报告,并指定数据所在地址作为URL参数 ```dump```:
+```
+http://assayo_url/?dump=//you_url/some/log.txt
+assayo_url - assayo容器的URL地址,它监听80端口;
+you_url - git日志的容器的URL地址;
+```
+
+默认情况下,镜像会被启动在地址 ```http://127.0.0.1:80/```. 如果没有成功,请检查你的80端口是否可用.
+#### Docker 图像更新
+
+- 运行命令 ```npm run build```
+- 运行命令 ```docker build -t assayo .```
+- 检查结果 ```docker run --name assayo -p 80:80 -d assayo```;
+- 运行命令 ```docker tag assayo bakhirev/assayo:latest```;
+- 提交容器映像到 Docker Hub ```docker push bakhirev/assayo:latest```;
+
+### ️ About application
+
+#### Architecture
+
+
+1. [Reports showcase UI](###) displays a list of available reports. Each report consists of a title, description, and a list of repositories.
+2. [Crawler service](https://github.com/bakhirev/assayo-crawler) collects repository logs for the report.
+3. [Log visualization UI](https://github.com/bakhirev/assayo) **(you here)** displays report. Needs a log file for work.
+
+#### 释出版本大约每半年一次。接下来发生什么情况:
+
+看 [主要文件](https://github.com/bakhirev/assayo/blob/main/documents/RU.md)
+
+#### 如何添加或编辑翻译?
+
+您可以在“翻译”部分添加新翻译或更正当前翻译。 ```ts/translations/```.
+[指示手册](https://github.com/firstcontributions/first-contributions)
+
+#### 愿望,建议,意见
+- telegramm [@bakhirev](https://t.me/bakhirev) (优先通信方法)
+- [alexey-bakhirev@yandex.ru](mailto:alexey-bakhirev@yandex.ru)
+- 网站 [https://assayo.online/](https://assayo.online/?ref=github&lang=zh)
+
diff --git a/package-lock.json b/package-lock.json
index 435f9cc..b0b147f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -11,7 +11,6 @@
"@testing-library/jest-dom": "^5.16.5",
"@testing-library/react": "^13.4.0",
"@testing-library/user-event": "^13.5.0",
- "dotenv": "^16.4.5",
"http-proxy-middleware": "^2.0.6",
"i18next": "^23.9.0",
"mobx": "^6.7.0",
@@ -44,7 +43,7 @@
"stylelint": "^14.16.1",
"stylelint-group-selectors": "^1.0.9",
"stylelint-order": "^6.0.1",
- "typescript": "^4.9.4"
+ "typescript": "^4.9.5"
}
},
"node_modules/@adobe/css-tools": {
@@ -7019,17 +7018,6 @@
"tslib": "^2.0.3"
}
},
- "node_modules/dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==",
- "engines": {
- "node": ">=12"
- },
- "funding": {
- "url": "https://dotenvx.com"
- }
- },
"node_modules/dotenv-expand": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
@@ -17230,9 +17218,9 @@
}
},
"node_modules/typescript": {
- "version": "4.9.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
- "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg==",
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==",
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -23423,11 +23411,6 @@
"tslib": "^2.0.3"
}
},
- "dotenv": {
- "version": "16.4.5",
- "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz",
- "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg=="
- },
"dotenv-expand": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/dotenv-expand/-/dotenv-expand-5.1.0.tgz",
@@ -30676,9 +30659,9 @@
}
},
"typescript": {
- "version": "4.9.4",
- "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.4.tgz",
- "integrity": "sha512-Uz+dTXYzxXXbsFpM86Wh3dKCxrQqUcVMxwU54orwlJjOpO3ao8L7j5lH+dWfTwgCwIuM9GQ2kvVotzYJMXTBZg=="
+ "version": "4.9.5",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz",
+ "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g=="
},
"unbox-primitive": {
"version": "1.0.2",
diff --git a/package.json b/package.json
index 5552c9d..f78732b 100644
--- a/package.json
+++ b/package.json
@@ -25,9 +25,10 @@
"build-rename": "npm run build-rename-js && npm run build-rename-css",
"build-rename-js": "mv build/static/js/main.*.js build/static/index.js && rm -rf build/static/js",
"build-rename-css": "mv build/static/css/main.*.css build/static/index.css && rm -rf build/static/css",
+ "build-rename-html": "rm build/index.html && mv build/local.html build/index.html",
"dev": "set PORT=3006 && react-app-rewired start",
"build": "react-scripts build && npm run build-rename",
- "build-local": "set REACT_APP_TYPE=local && react-scripts build && npm run build-rename",
+ "build-local": "set REACT_APP_TYPE=local && react-scripts build && npm run build-rename && npm run build-rename-html",
"test": "react-scripts test",
"eject": "react-scripts eject",
"js:check": "npx eslint \"src/**/*.{ts,tsx,js}\"",
@@ -71,6 +72,6 @@
"stylelint": "^14.16.1",
"stylelint-group-selectors": "^1.0.9",
"stylelint-order": "^6.0.1",
- "typescript": "^4.9.4"
+ "typescript": "^4.9.5"
}
}
diff --git a/public/index.html b/public/index.html
index c6baaca..bf54176 100644
--- a/public/index.html
+++ b/public/index.html
@@ -47,19 +47,19 @@
-
+
-
+
-
+
-
+
diff --git a/public/local.html b/public/local.html
new file mode 100644
index 0000000..7abc9b3
--- /dev/null
+++ b/public/local.html
@@ -0,0 +1,54 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Git Statistics
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/index.tsx b/src/index.tsx
index 9efbe5e..b639e1f 100644
--- a/src/index.tsx
+++ b/src/index.tsx
@@ -40,8 +40,6 @@ localization.parse('ru', ru);
localization.parse('zh', zh);
function renderReactApplication() {
- // @ts-ignore
- console.log(window?.report?.length);
window.onafterprint = () => {
printStore.endPrint();
};
@@ -57,9 +55,9 @@ function renderReactApplication() {
);
}
-userSettings.loadUserSettings().then(() => {
- applyUrlCommands((parameters: any) => {
- initializationI18n(parameters.lang || parameters.language);
+applyUrlCommands((parameters: any) => {
+ initializationI18n(parameters.lang || parameters.language);
+ userSettings.loadUserSettings().then(() => {
renderReactApplication();
});
});
diff --git a/src/ts/helpers/formatter.ts b/src/ts/helpers/formatter.ts
index 6ba578b..5962a2d 100644
--- a/src/ts/helpers/formatter.ts
+++ b/src/ts/helpers/formatter.ts
@@ -1,5 +1,4 @@
-import settingsStore from 'ts/store/Settings';
-
+import userSettings from 'ts/store/UserSettings';
export function getLangPrefix() {
// @ts-ignore
@@ -76,7 +75,7 @@ export function getShortTime(timestamp: string) {
export function getMoney(value: number, options?: any) {
return (value || 0).toLocaleString(getLangPrefix(), {
style: 'currency',
- currency: settingsStore?.currency || 'USD',
+ currency: userSettings?.settings?.defaultSalary?.currency || 'USD',
currencyDisplay: 'symbol',
maximumFractionDigits: 0,
...(options || {}),
diff --git a/src/ts/helpers/i18n.ts b/src/ts/helpers/i18n.ts
index 4aaf299..1b2cffd 100644
--- a/src/ts/helpers/i18n.ts
+++ b/src/ts/helpers/i18n.ts
@@ -9,6 +9,7 @@ import ja from '../translations/ja';
import pt from '../translations/pt';
import ru from '../translations/ru';
import zh from '../translations/zh';
+import localization from './Localization';
function getJsonFromString(text: string) {
return text
@@ -44,13 +45,20 @@ const translations = {
zh: getTranslationWrapper(zh),
};
-const defaultLanguage = navigator.languages
+export const BROWSER_LANGUAGE = navigator.languages
.filter((language) => language.length === 2 && translations[language])
.shift() || 'en';
export default function initializationI18n(userLanguage?: string) {
+ const language = userLanguage
+ || localStorage.getItem('language')
+ || BROWSER_LANGUAGE
+ || 'en';
+
+ localization.language = language;
+
i18next.use(initReactI18next).init({
- lng: userLanguage || defaultLanguage || 'ru', // if you're using a language detector, do not define the lng option
+ lng: language, // if you're using a language detector, do not define the lng option
debug: false,
resources: translations,
// if you see an error like: "Argument of type 'DefaultTFuncReturn' is not assignable to parameter of type xyz"
diff --git a/src/ts/pages/PageWrapper/components/header/index.tsx b/src/ts/pages/PageWrapper/components/header/index.tsx
index 8f40122..3c58402 100644
--- a/src/ts/pages/PageWrapper/components/header/index.tsx
+++ b/src/ts/pages/PageWrapper/components/header/index.tsx
@@ -7,6 +7,7 @@ import Select from 'ts/components/UiKit/components/Select';
import Buttons from 'ts/pages/Settings/components/Buttons';
import settingsForm from 'ts/pages/Settings/store/Form';
import localization from 'ts/helpers/Localization';
+import { BROWSER_LANGUAGE } from 'ts/helpers/i18n';
import Title from './Title';
import Filters from './Filters';
@@ -42,6 +43,11 @@ const Header = observer((): React.ReactElement | null => {
onChange={(item: any, id: string) => {
localization.language = id;
i18n.changeLanguage(id);
+ if (id === BROWSER_LANGUAGE) {
+ localStorage.removeItem('language');
+ } else {
+ localStorage.setItem('language', id);
+ }
}}
/>