{"id":19808549,"url":"https://github.com/wodenwang820118/tag-check","last_synced_at":"2026-04-11T21:41:15.470Z","repository":{"id":190338257,"uuid":"682403331","full_name":"WodenWang820118/tag-check","owner":"WodenWang820118","description":"A Google Tag Manager tag audit/preview automation tool","archived":false,"fork":false,"pushed_at":"2026-02-05T07:32:16.000Z","size":197388,"stargazers_count":9,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-02-05T19:39:27.589Z","etag":null,"topics":["angular","audit","automation","electron","ga4","googletagmanager","nestjs","nx"],"latest_commit_sha":null,"homepage":"https://tag-build.vercel.app","language":"TypeScript","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/WodenWang820118.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","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,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2023-08-24T05:19:18.000Z","updated_at":"2026-02-05T07:32:22.000Z","dependencies_parsed_at":"2023-08-24T06:59:09.262Z","dependency_job_id":"3c14c71f-65fb-4850-abdb-937608345612","html_url":"https://github.com/WodenWang820118/tag-check","commit_stats":null,"previous_names":["wodenwang820118/datalayer-checker","wodenwang820118/tag-check"],"tags_count":52,"template":false,"template_full_name":null,"purl":"pkg:github/WodenWang820118/tag-check","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WodenWang820118%2Ftag-check","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WodenWang820118%2Ftag-check/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WodenWang820118%2Ftag-check/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WodenWang820118%2Ftag-check/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/WodenWang820118","download_url":"https://codeload.github.com/WodenWang820118/tag-check/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/WodenWang820118%2Ftag-check/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31696743,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-11T21:17:31.016Z","status":"ssl_error","status_checked_at":"2026-04-11T21:17:24.556Z","response_time":54,"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":["angular","audit","automation","electron","ga4","googletagmanager","nestjs","nx"],"created_at":"2024-11-12T09:14:09.667Z","updated_at":"2026-04-11T21:41:15.461Z","avatar_url":"https://github.com/WodenWang820118.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TagCheck (Preview)\n\n## Table of Contents\n\n- [Overview](#overview)\n- [Features](#features)\n- [Development](#development)\n  - [Current Status](#current-status)\n  - [Prerequisites](#prerequisites)\n  - [Frontend (Angular)](#frontend-angular)\n  - [Backend (NestJS)](#backend-nestjs)\n  - [Electron](#electron)\n  - [Storybook](#storybook)\n- [Build and Production](#build-and-production)\n  - [Build](#build)\n  - [Package](#package)\n  - [Make](#make)\n- [Feedback and Contribution](#feedback-and-contribution)\n\nOverall Project Health\n\n[![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=alert_status)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n[![Maintainability Rating](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=sqale_rating)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n[![Reliability Rating](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=reliability_rating)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n\nCode Quality Metrics\n\n[![Code Smells](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=code_smells)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n[![Technical Debt](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=sqale_index)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n[![Duplicated Lines (%)](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=duplicated_lines_density)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n\nProject Size and Test Coverage\n\n[![Lines of Code](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=ncloc)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n[![Coverage](https://sonarcloud.io/api/project_badges/measure?project=WodenWang820118_tag-check\u0026metric=coverage)](https://sonarcloud.io/summary/new_code?id=WodenWang820118_tag-check)\n\n## Overview\n\nThis desktop application automates the Google Tag Manager (GTM) container review process and production analytics deployment validation. It streamlines the quality assurance process by providing:\n\n1. **GTM Container Review**: Load GTM preview mode, run Chrome recorder, and generate dataLayer correctness reports. Users can review tag configurations through GTM preview mode.\n2. **Production Analytics Validation**: Validate analytics on the production website, ensuring dataLayer accuracy.\n\nDesigned for QA, development, and analytics teams, this free standalone tool leverages Angular, NestJS, and Electron.\n\n## Features\n\n- **Unified JSON Format**: Generate GTM-compatible JSON files and run different recorded tests using a consistent specification.\n- **Video Recording**: The entire process is recorded as a .webm video.\n- **GTM Accompanied Mode**: Observe unpublished tags within GTM using a shareable link and the website's landing page.\n- **Request Capture**: Efficiently capture and validate tags automatically. Captured requests are recomposed to data layer object for validation.\n- **XLSX Report**: Test results are encapsulated in an XLSX report, including:\n  - Data layer\n  - Raw captured requests\n  - Reconstructed data layer based on raw captured requests\n  - Screenshots of event triggers\n- **Project Transfer**: Archive projects as .zip files for import into other users' applications.\n\n  ![System](./libs/utils/src/lib/assets/i18n/en/tag_check_system_en.drawio.svg)\n\n## Development\n\nThis project uses LTS NodeJS v22.19.0 npm v10.9.3 for development. If cannot compile, please run `nx reset` and `rm -rf .nx` to reset the project. Please refer to the `package.json`'s `engines` field for the exact version.\n\n### Current Status\n\n- TagCheck in e2e testing phase and potential minor amendments are mandatory regarding user journey\n- TagBuild is already in [production stage](https://tag-build.vercel.app/) but subject to change by the Google Tag Manager team.\n- Documentation site is already in [production stage](https://tag-check-documentation.vercel.app/) but subject to change by users' feedback.\n\n```mermaid\n%%{init: {'theme': 'neutral'}}%%\ngraph TD\n    subgraph A [User Journey]\n        direction LR\n        B(Plan \u0026 Configure) --\u003e C(Verify \u0026 Debug) --\u003e D(Report \u0026 Collaborate)\n    end\n\n    subgraph Stories_Plan [Stories for Plan \u0026 Configure]\n        direction TB\n        B --\u003e P1(\"Generate GTM Container from Spec\")\n        B --\u003e P2(\"Import Tracking Plan as Spec\")\n        B --\u003e P3(\"Import Project File\")\n    end\n\n    subgraph Stories_Verify [Stories for Verify \u0026 Debug]\n        direction TB\n        C --\u003e V1(\"Verify Tags in GTM Preview Mode\")\n        C --\u003e V2(\"Validate Network Requests (GA4 Hits)\")\n        C --\u003e V3(\"Automate Verification via Journey Replay\")\n    end\n\n    subgraph Stories_Report [Stories for Report \u0026 Collaborate]\n        direction TB\n        D --\u003e R1(\"Generate Sharable Report\")\n        D --\u003e R2(\"Capture Verification Evidence\")\n        D --\u003e R3(\"Export Project \u0026 Results\")\n    end\n```\n\n### Prerequisites\n\nInstall dependencies:\n\n```bash\nnpm install -g pnpm\n```\n\n```bash\npnpm install\n```\n\nApprove the build for the listed packages warned by pnpm after installation:\n\n```bash\npnpm approve-builds\n```\n\n### Frontend (Angular)\n\nFor development:\n\n```bash\npnpm run dev-front\n```\n\n### Backend (NestJS)\n\nFor development:\n\n```bash\npnpm run dev-back\n```\n\n### Electron\n\nFor Electron development with a development server:\n\n```bash\npnpm run dev-electron\n```\n\n### Storybook\n\nFor Storybook development:\n\n```bash\npnpm run storybook-front\n```\n\n## Build and Production\n\n### Build\n\nCompile the application:\n\n```bash\npnpm run build-prod\n```\n\nOutput folders (in `dist/apps`):\n\n- `ng-frontend`\n- `nest-backend`\n\n### Package\n\nBuild the Electron app:\n\n```bash\npnpm run package\n```\n\nOutput will be in the `out` folder.\n\n### Make\n\nGenerate a OS-based zip file:\n\n```bash\npnpm run make\n```\n\nThe building efficiency depends on the machine performance. The first time running the app usually takes longer.\n\n### Debugging\n\nWhen debugging with unexpected crashes such as `electron-forge make`\n\n```bash\nDEBUG=electron-forge:\\* pnpm electron-forge make\n```\n\n### Actual project and end-to-end tests\n\nThe example project is located at the `tag_check_projects` folder generated the root directory after starting the backend server.\n\n## Feedback and Contribution\n\nWe welcome your feedback and contributions! If you have suggestions or encounter issues, please file them in the issues section.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwodenwang820118%2Ftag-check","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwodenwang820118%2Ftag-check","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwodenwang820118%2Ftag-check/lists"}