chore:little fixes and formating and linting and patches
This commit is contained in:
@@ -549,4 +549,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,7 @@
|
||||
"hero": {
|
||||
"heading": "Best Amplitude Alternatives",
|
||||
"subheading": "OpenPanel is an open-source, privacy-first alternative to Amplitude. Get powerful product analytics with web analytics built in, cookie-free tracking, and the freedom to self-host or use our cloud.",
|
||||
"badges": [
|
||||
"Open-source",
|
||||
"Cookie-free",
|
||||
"EU-only hosting",
|
||||
"Self-hostable"
|
||||
]
|
||||
"badges": ["Open-source", "Cookie-free", "EU-only hosting", "Self-hostable"]
|
||||
},
|
||||
"competitor": {
|
||||
"name": "Amplitude",
|
||||
@@ -562,4 +557,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -468,4 +468,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -520,4 +520,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,7 @@
|
||||
"hero": {
|
||||
"heading": "Best Countly Alternative",
|
||||
"subheading": "Want Countly's product analytics without the complexity? OpenPanel offers a simpler, more affordable approach to user analytics with self-hosting, mobile SDKs, and modern product analytics - all with transparent pricing.",
|
||||
"badges": [
|
||||
"Open-source",
|
||||
"Simple Pricing",
|
||||
"Lightweight",
|
||||
"MIT License"
|
||||
]
|
||||
"badges": ["Open-source", "Simple Pricing", "Lightweight", "MIT License"]
|
||||
},
|
||||
"competitor": {
|
||||
"name": "Countly",
|
||||
@@ -560,4 +555,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -274,9 +274,7 @@
|
||||
"Android",
|
||||
"Flutter"
|
||||
],
|
||||
"competitor": [
|
||||
"JavaScript (web only)"
|
||||
],
|
||||
"competitor": ["JavaScript (web only)"],
|
||||
"notes": null
|
||||
},
|
||||
{
|
||||
@@ -458,4 +456,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
import { readFile, readdir } from 'node:fs/promises';
|
||||
import { readdir, readFile } from 'node:fs/promises';
|
||||
import { join } from 'node:path';
|
||||
|
||||
interface FileStructure {
|
||||
@@ -10,7 +10,7 @@ interface FileStructure {
|
||||
}
|
||||
|
||||
async function analyzeJsonFiles(): Promise<void> {
|
||||
const dirPath = join(import.meta.dirname || __dirname);
|
||||
const dirPath = join(import.meta.dirname || import.meta.dirname);
|
||||
const files = await readdir(dirPath);
|
||||
const jsonFiles = files.filter((f) => f.endsWith('.json'));
|
||||
|
||||
@@ -88,7 +88,7 @@ async function analyzeJsonFiles(): Promise<void> {
|
||||
console.log(separator);
|
||||
|
||||
const sortedGroups = Array.from(groups.entries()).sort(
|
||||
(a, b) => b[1].length - a[1].length,
|
||||
(a, b) => b[1].length - a[1].length
|
||||
);
|
||||
|
||||
sortedGroups.forEach(([structureKey, files], index) => {
|
||||
@@ -117,7 +117,7 @@ async function analyzeJsonFiles(): Promise<void> {
|
||||
console.log(separator);
|
||||
|
||||
const validFiles = structures.filter((s) => s.hasContent && !s.error);
|
||||
const emptyFiles = structures.filter((s) => !s.hasContent && !s.error);
|
||||
const emptyFiles = structures.filter((s) => !(s.hasContent || s.error));
|
||||
const errorFiles = structures.filter((s) => s.error);
|
||||
|
||||
console.log(` Total files: ${structures.length}`);
|
||||
@@ -148,7 +148,9 @@ async function analyzeJsonFiles(): Promise<void> {
|
||||
console.log(separator);
|
||||
|
||||
sortedGroups.forEach(([structureKey, files], index) => {
|
||||
if (structureKey === 'empty' || structureKey === 'error') return;
|
||||
if (structureKey === 'empty' || structureKey === 'error') {
|
||||
return;
|
||||
}
|
||||
|
||||
const groupNum = index + 1;
|
||||
console.log(`\nGroup ${groupNum} structure:`);
|
||||
|
||||
@@ -9,12 +9,7 @@
|
||||
"hero": {
|
||||
"heading": "Best Fathom Alternative",
|
||||
"subheading": "Love Fathom's simplicity and privacy focus? OpenPanel adds product analytics capabilities - funnels, cohorts, retention, and user identification - plus self-hosting options and a free tier.",
|
||||
"badges": [
|
||||
"Open-source",
|
||||
"Privacy-first",
|
||||
"Self-hostable",
|
||||
"Free Tier"
|
||||
]
|
||||
"badges": ["Open-source", "Privacy-first", "Self-hostable", "Free Tier"]
|
||||
},
|
||||
"competitor": {
|
||||
"name": "Fathom Analytics",
|
||||
@@ -513,4 +508,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -468,4 +468,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,4 +514,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -588,4 +588,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -587,4 +587,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -472,4 +472,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,12 +9,7 @@
|
||||
"hero": {
|
||||
"heading": "Best Matomo Alternative",
|
||||
"subheading": "OpenPanel is a modern, open-source alternative to Matomo. Get powerful web and product analytics with a cleaner interface, truly cookie-free tracking by default, and no premium plugins required for essential features.",
|
||||
"badges": [
|
||||
"Open-source",
|
||||
"Cookie-free",
|
||||
"EU-only hosting",
|
||||
"Self-hostable"
|
||||
]
|
||||
"badges": ["Open-source", "Cookie-free", "EU-only hosting", "Self-hostable"]
|
||||
},
|
||||
"competitor": {
|
||||
"name": "Matomo",
|
||||
@@ -511,4 +506,4 @@
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -533,4 +533,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -525,4 +525,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -280,9 +280,7 @@
|
||||
"Android",
|
||||
"Flutter"
|
||||
],
|
||||
"competitor": [
|
||||
"JavaScript (web only)"
|
||||
],
|
||||
"competitor": ["JavaScript (web only)"],
|
||||
"notes": null
|
||||
},
|
||||
{
|
||||
@@ -464,4 +462,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -514,4 +514,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -519,4 +519,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -518,4 +518,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -447,4 +447,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -548,4 +548,4 @@
|
||||
"href": "https://github.com/Openpanel-dev/openpanel"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,3 +1,9 @@
|
||||
{
|
||||
"pages": ["sdks", "how-it-works", "session-replay", "consent-management", "..."]
|
||||
"pages": [
|
||||
"sdks",
|
||||
"how-it-works",
|
||||
"session-replay",
|
||||
"consent-management",
|
||||
"..."
|
||||
]
|
||||
}
|
||||
|
||||
@@ -1,7 +1,4 @@
|
||||
{
|
||||
"title": "Dashboard",
|
||||
"pages": [
|
||||
"understand-the-overview",
|
||||
"..."
|
||||
]
|
||||
}
|
||||
"pages": ["understand-the-overview", "..."]
|
||||
}
|
||||
|
||||
@@ -15,4 +15,4 @@
|
||||
"---Migration---",
|
||||
"...migration"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,4 +12,4 @@
|
||||
"supporter-access-latest-docker-images",
|
||||
"changelog"
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,4 +164,4 @@
|
||||
"label": "Track your first conversion",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -172,4 +172,4 @@
|
||||
"label": "Start visualizing your data",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,4 +136,4 @@
|
||||
"label": "Track events in minutes",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,4 +136,4 @@
|
||||
"label": "Build your first funnel",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -155,4 +155,4 @@
|
||||
"label": "Start identifying users today",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,4 +165,4 @@
|
||||
"label": "Set up your first integration",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -164,4 +164,4 @@
|
||||
"label": "Set up your first notification rule",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,10 +4,7 @@
|
||||
"seo": {
|
||||
"title": "Retention & Cohort Analysis",
|
||||
"description": "User retention analytics and cohort analysis that show who comes back. See product stickiness at a glance-no sampling, no guesswork. Built on your events.",
|
||||
"keywords": [
|
||||
"user retention analytics",
|
||||
"cohort analysis"
|
||||
]
|
||||
"keywords": ["user retention analytics", "cohort analysis"]
|
||||
},
|
||||
"hero": {
|
||||
"heading": "Retention: Who comes back?",
|
||||
@@ -135,4 +132,4 @@
|
||||
"label": "See your retention in minutes",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -154,4 +154,4 @@
|
||||
"label": "Start tracking revenue",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -163,4 +163,4 @@
|
||||
"label": "Start recording sessions",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,4 +165,4 @@
|
||||
"label": "Invite your team and share your first dashboard",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -178,4 +178,4 @@
|
||||
"label": "Add analytics in 2 minutes",
|
||||
"href": "https://dashboard.openpanel.dev/onboarding"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -151,16 +151,34 @@
|
||||
"related_links": {
|
||||
"guides": [
|
||||
{ "title": "Script tag SDK setup", "url": "/docs/sdks/script" },
|
||||
{ "title": "Migrate from Google Analytics", "url": "/guides/migrate-from-google-analytics" }
|
||||
{
|
||||
"title": "Migrate from Google Analytics",
|
||||
"url": "/guides/migrate-from-google-analytics"
|
||||
}
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "Cookieless analytics explained", "url": "/articles/cookieless-analytics" },
|
||||
{ "title": "How to self-host OpenPanel", "url": "/articles/how-to-self-host-openpanel" },
|
||||
{ "title": "Best open source analytics tools", "url": "/articles/open-source-web-analytics" }
|
||||
{
|
||||
"title": "Cookieless analytics explained",
|
||||
"url": "/articles/cookieless-analytics"
|
||||
},
|
||||
{
|
||||
"title": "How to self-host OpenPanel",
|
||||
"url": "/articles/how-to-self-host-openpanel"
|
||||
},
|
||||
{
|
||||
"title": "Best open source analytics tools",
|
||||
"url": "/articles/open-source-web-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Google Analytics", "url": "/compare/google-analytics-alternative" },
|
||||
{ "title": "OpenPanel vs Plausible", "url": "/compare/plausible-alternative" },
|
||||
{
|
||||
"title": "OpenPanel vs Google Analytics",
|
||||
"url": "/compare/google-analytics-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Plausible",
|
||||
"url": "/compare/plausible-alternative"
|
||||
},
|
||||
{ "title": "OpenPanel vs Matomo", "url": "/compare/matomo-alternative" }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -156,13 +156,28 @@
|
||||
{ "title": "Python analytics setup", "url": "/guides/python-analytics" }
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "How to self-host OpenPanel", "url": "/articles/how-to-self-host-openpanel" },
|
||||
{ "title": "Best open source analytics tools", "url": "/articles/open-source-web-analytics" },
|
||||
{ "title": "Cookieless analytics explained", "url": "/articles/cookieless-analytics" }
|
||||
{
|
||||
"title": "How to self-host OpenPanel",
|
||||
"url": "/articles/how-to-self-host-openpanel"
|
||||
},
|
||||
{
|
||||
"title": "Best open source analytics tools",
|
||||
"url": "/articles/open-source-web-analytics"
|
||||
},
|
||||
{
|
||||
"title": "Cookieless analytics explained",
|
||||
"url": "/articles/cookieless-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs PostHog", "url": "/compare/posthog-alternative" },
|
||||
{ "title": "OpenPanel vs Plausible", "url": "/compare/plausible-alternative" },
|
||||
{
|
||||
"title": "OpenPanel vs PostHog",
|
||||
"url": "/compare/posthog-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Plausible",
|
||||
"url": "/compare/plausible-alternative"
|
||||
},
|
||||
{ "title": "OpenPanel vs Umami", "url": "/compare/umami-alternative" }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -135,10 +135,16 @@
|
||||
{ "title": "Track custom events", "url": "/guides/track-custom-events" }
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "Self-hosted web analytics", "url": "/articles/self-hosted-web-analytics" }
|
||||
{
|
||||
"title": "Self-hosted web analytics",
|
||||
"url": "/articles/self-hosted-web-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Google Analytics", "url": "/compare/google-analytics-alternative" },
|
||||
{
|
||||
"title": "OpenPanel vs Google Analytics",
|
||||
"url": "/compare/google-analytics-alternative"
|
||||
},
|
||||
{ "title": "OpenPanel vs PostHog", "url": "/compare/posthog-alternative" }
|
||||
]
|
||||
},
|
||||
|
||||
@@ -143,13 +143,28 @@
|
||||
{ "title": "React analytics setup", "url": "/guides/react-analytics" }
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "How to create a funnel", "url": "/articles/how-to-create-a-funnel" },
|
||||
{ "title": "Self-hosted web analytics", "url": "/articles/self-hosted-web-analytics" }
|
||||
{
|
||||
"title": "How to create a funnel",
|
||||
"url": "/articles/how-to-create-a-funnel"
|
||||
},
|
||||
{
|
||||
"title": "Self-hosted web analytics",
|
||||
"url": "/articles/self-hosted-web-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Mixpanel", "url": "/compare/mixpanel-alternative" },
|
||||
{ "title": "OpenPanel vs PostHog", "url": "/compare/posthog-alternative" },
|
||||
{ "title": "OpenPanel vs Amplitude", "url": "/compare/amplitude-alternative" }
|
||||
{
|
||||
"title": "OpenPanel vs Mixpanel",
|
||||
"url": "/compare/mixpanel-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs PostHog",
|
||||
"url": "/compare/posthog-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Amplitude",
|
||||
"url": "/compare/amplitude-alternative"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ctas": {
|
||||
|
||||
@@ -134,15 +134,30 @@
|
||||
},
|
||||
"related_links": {
|
||||
"guides": [
|
||||
{ "title": "Ecommerce tracking setup", "url": "/guides/ecommerce-tracking" }
|
||||
{
|
||||
"title": "Ecommerce tracking setup",
|
||||
"url": "/guides/ecommerce-tracking"
|
||||
}
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "Cookieless analytics explained", "url": "/articles/cookieless-analytics" },
|
||||
{ "title": "Best open source analytics tools", "url": "/articles/open-source-web-analytics" }
|
||||
{
|
||||
"title": "Cookieless analytics explained",
|
||||
"url": "/articles/cookieless-analytics"
|
||||
},
|
||||
{
|
||||
"title": "Best open source analytics tools",
|
||||
"url": "/articles/open-source-web-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Google Analytics", "url": "/compare/google-analytics-alternative" },
|
||||
{ "title": "OpenPanel vs Plausible", "url": "/compare/plausible-alternative" }
|
||||
{
|
||||
"title": "OpenPanel vs Google Analytics",
|
||||
"url": "/compare/google-analytics-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Plausible",
|
||||
"url": "/compare/plausible-alternative"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ctas": {
|
||||
|
||||
@@ -152,17 +152,38 @@
|
||||
"guides": [
|
||||
{ "title": "Next.js analytics setup", "url": "/guides/nextjs-analytics" },
|
||||
{ "title": "React analytics setup", "url": "/guides/react-analytics" },
|
||||
{ "title": "Migrate from Google Analytics", "url": "/guides/migrate-from-google-analytics" }
|
||||
{
|
||||
"title": "Migrate from Google Analytics",
|
||||
"url": "/guides/migrate-from-google-analytics"
|
||||
}
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "Best open source analytics tools", "url": "/articles/open-source-web-analytics" },
|
||||
{ "title": "How to create a funnel", "url": "/articles/how-to-create-a-funnel" },
|
||||
{ "title": "Cookieless analytics guide", "url": "/articles/cookieless-analytics" }
|
||||
{
|
||||
"title": "Best open source analytics tools",
|
||||
"url": "/articles/open-source-web-analytics"
|
||||
},
|
||||
{
|
||||
"title": "How to create a funnel",
|
||||
"url": "/articles/how-to-create-a-funnel"
|
||||
},
|
||||
{
|
||||
"title": "Cookieless analytics guide",
|
||||
"url": "/articles/cookieless-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Mixpanel", "url": "/compare/mixpanel-alternative" },
|
||||
{ "title": "OpenPanel vs PostHog", "url": "/compare/posthog-alternative" },
|
||||
{ "title": "OpenPanel vs Amplitude", "url": "/compare/amplitude-alternative" }
|
||||
{
|
||||
"title": "OpenPanel vs Mixpanel",
|
||||
"url": "/compare/mixpanel-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs PostHog",
|
||||
"url": "/compare/posthog-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Amplitude",
|
||||
"url": "/compare/amplitude-alternative"
|
||||
}
|
||||
]
|
||||
},
|
||||
"ctas": {
|
||||
|
||||
@@ -130,17 +130,38 @@
|
||||
},
|
||||
"related_links": {
|
||||
"guides": [
|
||||
{ "title": "Ecommerce tracking setup", "url": "/guides/ecommerce-tracking" },
|
||||
{ "title": "Website analytics setup", "url": "/guides/website-analytics-setup" },
|
||||
{ "title": "OpenPanel WordPress plugin", "url": "https://sv.wordpress.org/plugins/openpanel/" }
|
||||
{
|
||||
"title": "Ecommerce tracking setup",
|
||||
"url": "/guides/ecommerce-tracking"
|
||||
},
|
||||
{
|
||||
"title": "Website analytics setup",
|
||||
"url": "/guides/website-analytics-setup"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel WordPress plugin",
|
||||
"url": "https://sv.wordpress.org/plugins/openpanel/"
|
||||
}
|
||||
],
|
||||
"articles": [
|
||||
{ "title": "Cookieless analytics explained", "url": "/articles/cookieless-analytics" },
|
||||
{ "title": "How to self-host OpenPanel", "url": "/articles/self-hosted-web-analytics" }
|
||||
{
|
||||
"title": "Cookieless analytics explained",
|
||||
"url": "/articles/cookieless-analytics"
|
||||
},
|
||||
{
|
||||
"title": "How to self-host OpenPanel",
|
||||
"url": "/articles/self-hosted-web-analytics"
|
||||
}
|
||||
],
|
||||
"comparisons": [
|
||||
{ "title": "OpenPanel vs Google Analytics", "url": "/compare/google-analytics-alternative" },
|
||||
{ "title": "OpenPanel vs Plausible", "url": "/compare/plausible-alternative" },
|
||||
{
|
||||
"title": "OpenPanel vs Google Analytics",
|
||||
"url": "/compare/google-analytics-alternative"
|
||||
},
|
||||
{
|
||||
"title": "OpenPanel vs Plausible",
|
||||
"url": "/compare/plausible-alternative"
|
||||
},
|
||||
{ "title": "OpenPanel vs Matomo", "url": "/compare/matomo-alternative" }
|
||||
]
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user