{"id":15286494,"url":"https://github.com/mycloudlab/escriba","last_synced_at":"2026-04-30T17:32:04.381Z","repository":{"id":64126115,"uuid":"573150088","full_name":"mycloudlab/escriba","owner":"mycloudlab","description":"Escriba is a complete solution for receiving and processing javascript logs with support for processing sourcemaps, integrated with Loki, Promtail, Grafana.","archived":false,"fork":false,"pushed_at":"2025-04-30T16:56:09.000Z","size":316,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-11T12:39:23.298Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mycloudlab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-12-01T20:06:05.000Z","updated_at":"2022-12-08T15:39:20.000Z","dependencies_parsed_at":"2025-06-01T12:42:25.721Z","dependency_job_id":"4c0c5b84-1c78-45b9-90b4-244659e0f2b8","html_url":"https://github.com/mycloudlab/escriba","commit_stats":null,"previous_names":[],"tags_count":17,"template":false,"template_full_name":null,"purl":"pkg:github/mycloudlab/escriba","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fescriba","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fescriba/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fescriba/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fescriba/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mycloudlab","download_url":"https://codeload.github.com/mycloudlab/escriba/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mycloudlab%2Fescriba/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":32472396,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-30T13:12:12.517Z","status":"ssl_error","status_checked_at":"2026-04-30T13:12:06.837Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-09-30T15:15:11.357Z","updated_at":"2026-04-30T17:32:04.365Z","avatar_url":"https://github.com/mycloudlab.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# \u003cimg src=\"docs/images/logo.svg\" style=\"width:50px\"\u003e Escriba\n\nEscriba is a complete solution for receiving and processing javascript logs with support for processing sourcemaps, integrated with Loki, Promtail, Grafana.\n\n[![Build](https://img.shields.io/github/workflow/status/mycloudlab/escriba/Continuous%20Delivery)](https://github.com/mycloudlab/escriba/actions/workflows/cd.yaml) \n[![Release](https://img.shields.io/github/v/release/mycloudlab/escriba)](https://github.com/mycloudlab/escriba/releases) \n[![License](https://img.shields.io/github/license/mycloudlab/escriba)](https://github.com/mycloudlab/escriba/blob/main/LICENSE) \n[![NPM escriba-browser bundle size](https://img.shields.io/bundlephobia/minzip/@mycloudlab/escriba-browser?label=escriba-browser%20gzip)](https://www.npmjs.com/package/@mycloudlab/escriba-browser) \n[![Docker escriba-server image size](https://img.shields.io/docker/image-size/mycloudlab/escriba-server?label=escriba-server\u0026sort=semver)](https://hub.docker.com/repository/docker/mycloudlab/escriba-server) \n\n\nProblems can occur, no one is immune to that. Log analysis is one of the development activities. However, javascript log processing is a pain point in many frontend architectures. Many front-end developers end up ignoring the front-end layer's error logs. Corrections take longer, as there is a delay in identifying errors, since there is no proper collection.\n\nEscriba Stack comes to remedy this point. The solution is grouped into:\n\n- **escriba-browser** - javascript library for processing logging in the browser and sending it to the server.\n- **escriba-angular** - library that adds logging functionality to angular applications.\n- **escriba-server** - application server that receives logs from the browser, processing the sourcemap properly.\n\nIn addition, the project uses Promtail to forward the logs to Loki for storage and a grafana dashboard for viewing errors.\n\nSee the archetecture:\n\n\u003cimg src=\"docs/images/flow.svg\" style=\"width:100%\"\u003e\n\n1. Add the npm library @mycloudlab/escriba-browser in your application, and configure accordingly according to the documentation\n2. Start the scribe-server, promtail, loki and grafana server, a docker-compose.yml is provided in the production example folder.\n3. Generate log events in the application\n4. Open the grafana dashboard and view the received logs.\n\n## Features\n\n- Multiple levels of frontend and server logs\n- Multiple transport formats fetch, xhr, websockets\n- Send logs with no blocking Main Thread\n- MDC (mapped diagnostic context) is supported\n- Proper processing of sourcemaps on the server side\n- Restriction on which domains are accepted for processing\n- Customization and transformation of the request to obtain the application's source-maps\n\n## Demonstration\n\nAn example docker-compose for running the application is provided:\n\n```bash\n# clone escriba project\ngit clone https://github.com/mycloudlab/escriba.git\n\n# enter docker-compose examples folder\ncd escriba/examples/compose\n\n# start demo\ndocker-compose up -d\n```\n\nThe following services will start:\n\n| Service          | Description                                                             | host binding ports                   |\n| ---------------- | ----------------------------------------------------------------------- | ------------------------------------ |\n| Loki             | system for storing logs from the frontend                               |                                      |\n| promtail         | system for receiving generated logs and sending them to loki            |                                      |\n| grafana          | dashboard for viewing frontend logs                                     | 3000 : 3000 - ui dashboard           |  \n| escriba-server   | server that receives frontend logs and processes sourcemaps accordingly | 8888 : 8888 - endpoint log receiver  |\n| escriba-demo     | demo application of the platform's logging features                     | 8080 : 8080 - frontend demo app      |\n \nAccess the demo at http://localhost:8080 and click on the log trigger buttons. then view the logs on the grafana dashboard at http://localhost:3000\n\nfor other available examples see the examples folder.\n\n\n## Usage\n\n\n\n## How to contribute\n\nThis project is based on docker-compose, we use podman and podman-compose as runtime.\n\nThere is a docker-compose at the root of the project, it is responsible for initializing the development environment of the solution.\n\n1. Install podman and podman-compose.\n\n2. Create an alias in ~/.bashrc with the following command:\n```bash\necho \"alias dc='PODMAN_USERNS=keep-id podman-compose'\"\u003e\u003e ~/.bashrc\n```\n3. Clone the project\n```bash\ngit clone https://github.com/mycloudlab/escriba.git\n```\n\n4. Build the environment:\n```bash\ncd escriba\ndc build .\n```\n\n5. start the environment:\n```bash\ndc up -d\n```\n\n6. access the component you want to evolve:\n\ndc exec [ browser | angular | server ] bash\n\nfor example, if you are going to contribute to the server use:\n```bash\ndc exec server bash\n``` \n\n7. send the pull request\n\n### Technical details of the projects:\n\n**escriba-browser** - library written in typescript, consult package.json to view available commands.\n\n**escriba-angular** - library written in typescript and angular to provide angular modules for handling logging, consult package.json to view the available commands.\n\n**escriba-server** - application written in java using quarkus.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fescriba","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmycloudlab%2Fescriba","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmycloudlab%2Fescriba/lists"}