? *Die MIT -Lizenz wird auf Plattformen angewendet, um die Netzwerkverteilung zu ermöglichen. Der Rest des Projekts bleibt unter AGPL V3.
Eine einfache und doch leistungsstarke Alternative von Google Tag Manager, die vollständig offen und privatschulisch ist. Unsere integrierte Google Analytics-Alternative verwendet keine Cookies und ist vollständig DSGVO, CCPA und PECR-konform. Wir haben es schnell und einfach gemacht, eine Demo zu probieren oder sie einfach selbst in der Produktion zu hosten. Wir werden in naher Zukunft auch eine von Cloud gehostete Version anbieten.
Der Data Manager bietet steckbare Backends, um Daten überall zu senden, und wir haben eine Pipeline, um sowohl Anschlüsse als auch Funktionen zu erhöhen. Entwerfen Sie in nur wenigen Klicks ein Schema, konfigurieren Sie ein Back-End und erstellen Sie einen Endpunkt, an den Daten gesendet werden können. Der Tag -Manager verwendet dieselbe zugrunde liegende Technologie, um Analysen bereitzustellen.
Unsere Mission war es, ein intuitives Tag -Management -Tool zu erstellen, das über benutzerdefinierte Plattformen (erstellt von unserer Community!) Ausgestattet werden kann. Wir sind ein kleines Team, das leidenschaftlich daran interessiert ist, großartige Open-Source-Software aufzubauen und hoffentlich den Marktanteil viel größerer Unternehmen zu verringern. Wir sind kein Fan einer zunehmenden Überwachung der Unternehmens- oder staatlichen Überwachung, und wir glauben grundsätzlich, dass die Nutzer Ihrer Website besser verdienen - dies muss jedoch mit der geschäftlichen Anforderung in Einklang gebracht werden, eine gemeinsame Immobilien- und personenbezogene Daten zu monetarisieren.
Hier ist ein einzeiliges Beispiel für den Einstieg, wenn Sie bereits Docker komponieren.
~ > curl -L https://github.com/scale8/scale8/raw/master/docker-compose.yml | docker-compose -f - up Sobald der obige Befehl die Dienste gestartet hat, zeigen Sie Ihren Browser unter http://127.0.0.1:8080 . Sie werden aufgefordert, einige grundlegende Details einzugeben, um das Projekt zu konfigurieren.
Oder wenn Sie das Projekt bereits überprüft und die Abhängigkeiten über ~> yarn install:all und möchten es lokal ausführen: -
~ > yarn run:allWir haben die gesamte Plattform archiviert, um Docker zu unterstützen und nach möglichen möglichen komplexen Build -Prozessen und der Montage von zusätzlichen Volumina begrenzt. Wir skripten schwer, um komplette Ein-Klick-Produktionsbereitschafts-Setups für AWS-, Google Cloud- und benutzerdefinierte Kubernetes-Setups bereitzustellen.
| Komponente | Beschreibung |
|---|---|
| API | Enthält die gesamte Geschäftslogik und bietet GraphQL / RESTful -Endpunkte, die die Benutzeroberfläche mit Strom versorgen |
| Gemeinsam | Eine kleine gemeinsame Bibliothek, die zwischen Projektkomponenten geteilt wird |
| Rand | Der Edge Server ist so konzipiert |
| Plattformen | Benutzerdefinierte Plattformen, die von der Community und Skala8 erstellt wurden, die die Funktionalität des Tag -Managers erweitern |
| Router | Ein einfacher Router, erstellt mit Nginx und entwickelt, um die selbst gehostete Version schnell zu erstellen |
| Ui | Bietet einen statischen Aufbau der Benutzeroberfläche mit Next.js & React |
~> yarn install:all~> yarn build:all Da nicht jeder die Anforderung hat, einen vollständigen Tag -Manager zu verwenden, haben wir auch eine Option zur Generierung einer extrem leichten Version bereitgestellt, die nur einige JavaScript -Zeilen erfordert.
Wir haben auch die vollständige Unterstützung für die Verfolgung von Single-Page-Anwendungen (SPAs) und Hash-Routing geliefert. Diese können aktiviert werden, wenn Sie Ihre Anwendung installieren.
Wir haben unser Bestes getan, um den Prozess der Organisation und Verwaltung von Tags in einer oder mehreren Webeigenschaften zu vereinfachen. Der Tag-Manager basiert auf einer ereignisgesteuerten , regelbasierten Engine, bei der eine Regel ausgelöst wird, wenn Ereignisse und Bedingungen und Ausnahmen alle erfüllt sind, was zu einer oder mehreren Aktionen führt.
Ein ausgelöstes Ereignis im Browser kann einfach von unserer einfachen Schnittstelle verwaltet werden. Ein geklickter Link, eine Seite, die in den Fokus kommt, oder ein eingereichtes Formular sind alle Beispiele für Ereignisse, die Sie möglicherweise anhören möchten.
Eine Bedingung ist ein Test, der an einem Datencontainer durchgeführt wurde, und zielt darauf ab, zu behaupten, dass ein Schlüssel zu einem Datencontainerobjekt mit dem erwarteten Wert ausgerichtet ist. Eine Ausnahme zielt darauf ab, den gleichen Test durchzuführen, aber stattdessen die Regel ausschließt, falls der Test bestehen sollte.
Nachdem die erforderlichen Ereignisse und Bedingungen der Regel erfüllt werden, wird eine Aktion abgefeuert. Erfahren Sie hier mehr über Aktionen.
Wir haben ursprünglich mit einem Front-End- und Scala-Driven-Back-End von Typenschrift begonnen. Um die von uns gewünschte Code-Transparenz bereitzustellen, in Verbindung mit der Entscheidung, das Projekt Open-Source zu verpflichtet, müssen wir mit nur dem Edge-Server in Java auf fast nur TypeScript umziehen. Wir glauben im Grunde genommen, dass die Zukunft dieses Projekts jetzt mit der Open-Source-Community zusammen ist und es mehr Typscript- und Java-Ingenieure als Scala-Ingenieure gibt.
Kurz vor der Veröffentlichung sind wir auch von CRA zu Next.js gezogen. Wir haben auch Inversion of Control (IOC) in unser Back-End der Typenkript eingeführt. Unser Ziel ist es, dass dieses Projekt so erweiterbar wie möglich ist. Ein Plug-and-Play-Modell bietet uns die Möglichkeit, mehrere Dienste bereitzustellen und Sperre zu verhindern.
container . bind < BaseStorage > ( TYPES . BackendStorage ) . to ( MongoDBStorage ) . inSingletonScope ( ) ;
container . bind < BaseDatabase > ( TYPES . BackendDatabase ) . to ( MongoDb ) . inSingletonScope ( ) ;
container . bind < BaseLogger > ( TYPES . BackendLogger ) . to ( ConsoleLogger ) . inSingletonScope ( ) ;
container . bind < BaseEmail > ( TYPES . BackendEmail ) . to ( Mailer ) . inSingletonScope ( ) ;
container . bind < BaseConfig > ( TYPES . BackendConfig ) . to ( EnvironmentConfig ) . inSingletonScope ( ) ;Wir haben auch einen ähnlichen Ansatz mit unserem Java -Code gewählt.
@ Replaces ( StorageInterface . class )
@ Singleton
@ Requires ( property = "backend-storage" , value = "google" )
public class GoogleStorage implements StorageInterface {
...
}Derzeit stellen wir nur MongoDB und Googles BigQuery for Analytics an. MongoDB ist nur für kleine Projekte und für Demo / Tests geeignet. Wir haben die vollständige Clickhouse-Unterstützung in unserer noch veröffentlichten Cloud-Version, und wir werden diese Unterstützung in der selbst gehosteten Version in Kürze zusammen mit Rotverschiebung und Postgres hinzufügen.
Wir haben auch unsere stündlichen Aggregationspipelines aus der selbst gehosteten Version entfernt. Dies fügte ein unnötiges Maß an Komplexität für die überwiegende Mehrheit der Anwendungsfälle hinzu. Es gibt einen Plan, dies später wieder einzuführen, und sollte es jemand benötigen, bitte lassen Sie es uns wissen.
Alle unsere Dokumentationen sind für die Cloud-Version des Produkts ausgelegt. Wir werden jedoch bald eine detailliertere Dokumentation für die selbst gehostete Version hinzufügen. Wir haben einige Funktionen wie Zahlungsverarbeitung und SSL-Kündigung für benutzerdefinierte Domänen versteckt, die für die selbst gehostete Version nicht relevant sind.
Die gesamte Benutzeroberfläche wird von GraphQL mithilfe von Apollo angetrieben und die API -Dokumentation wird automatisch generiert und einfach navigiert.
Wir fragen nur, dass Sie dies auf GitHub spielen oder sich ansehen, wenn Sie das Projekt mögen. Wir würden es lieben, Menschen zu teilen und darüber zu bloggen! Alle Probleme werden in Github schnell beantwortet, und wir freuen uns, zu sehen, wohin dies als nächstes geht.
| Autor | Github | |
|---|---|---|
| Christopher Beck | ||
| Alessandro Barzanti |