chore:little fixes and formating and linting and patches

This commit is contained in:
2026-03-31 15:50:54 +02:00
parent a1ce71ffb6
commit 9b197abcfa
815 changed files with 22960 additions and 8982 deletions

View File

@@ -549,4 +549,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -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"
}
}
}
}

View File

@@ -468,4 +468,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -520,4 +520,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -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"
}
}
}
}

View File

@@ -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"
}
}
}
}

View File

@@ -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:`);

View File

@@ -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"
}
}
}
}

View File

@@ -468,4 +468,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -514,4 +514,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -588,4 +588,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -587,4 +587,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -472,4 +472,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -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 @@
}
]
}
}
}

View File

@@ -533,4 +533,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -525,4 +525,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -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"
}
}
}
}

View File

@@ -514,4 +514,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -519,4 +519,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -518,4 +518,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -447,4 +447,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -548,4 +548,4 @@
"href": "https://github.com/Openpanel-dev/openpanel"
}
}
}
}

View File

@@ -1,3 +1,9 @@
{
"pages": ["sdks", "how-it-works", "session-replay", "consent-management", "..."]
"pages": [
"sdks",
"how-it-works",
"session-replay",
"consent-management",
"..."
]
}

View File

@@ -1,7 +1,4 @@
{
"title": "Dashboard",
"pages": [
"understand-the-overview",
"..."
]
}
"pages": ["understand-the-overview", "..."]
}

View File

@@ -15,4 +15,4 @@
"---Migration---",
"...migration"
]
}
}

View File

@@ -12,4 +12,4 @@
"supporter-access-latest-docker-images",
"changelog"
]
}
}

View File

@@ -164,4 +164,4 @@
"label": "Track your first conversion",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -172,4 +172,4 @@
"label": "Start visualizing your data",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -136,4 +136,4 @@
"label": "Track events in minutes",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -136,4 +136,4 @@
"label": "Build your first funnel",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -155,4 +155,4 @@
"label": "Start identifying users today",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -165,4 +165,4 @@
"label": "Set up your first integration",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -164,4 +164,4 @@
"label": "Set up your first notification rule",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -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"
}
}
}

View File

@@ -154,4 +154,4 @@
"label": "Start tracking revenue",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -163,4 +163,4 @@
"label": "Start recording sessions",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -165,4 +165,4 @@
"label": "Invite your team and share your first dashboard",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -178,4 +178,4 @@
"label": "Add analytics in 2 minutes",
"href": "https://dashboard.openpanel.dev/onboarding"
}
}
}

View File

@@ -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" }
]
},

View File

@@ -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" }
]
},

View File

@@ -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" }
]
},

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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": {

View File

@@ -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" }
]
},