├── .env.example ├── .eslintrc.json ├── .gitignore ├── README.md ├── actions ├── fetchActiveUsers.ts ├── fetchAnalytics.ts ├── fetchViews.ts └── pageSpeedMetrics.ts ├── app ├── (auth) │ └── sign-in │ │ └── page.tsx ├── api │ ├── events │ │ └── route.ts │ └── track │ │ └── route.ts ├── dashboard │ └── page.tsx ├── favicon.ico ├── globals.css ├── layout.tsx ├── not-found.tsx ├── page.tsx ├── settings │ └── page.tsx └── site │ └── [website] │ └── page.tsx ├── components.json ├── components ├── 24hour-stats-box.tsx ├── add-website.tsx ├── analytics-card.tsx ├── analytics-chart.tsx ├── code-block.tsx ├── code.tsx ├── discord-message.tsx ├── footer.tsx ├── header.tsx ├── icons.tsx ├── loading.tsx ├── mock-discord-ui.tsx ├── no-page-views.tsx ├── site-custom-events.tsx ├── site-general-analytics.tsx ├── site-performance.tsx ├── site-settings.tsx ├── snippet.tsx ├── testimonial.tsx ├── ui │ ├── accordion.tsx │ ├── alert-dialog.tsx │ ├── animated-list.tsx │ ├── avatar.tsx │ ├── badge.tsx │ ├── blur-fade.tsx │ ├── button.tsx │ ├── card.tsx │ ├── carousel.tsx │ ├── chart.tsx │ ├── dialog.tsx │ ├── dropdown-menu.tsx │ ├── input.tsx │ ├── safari.tsx │ ├── scroll-area.tsx │ ├── select.tsx │ ├── sheet.tsx │ ├── tabs.tsx │ ├── text-hover-effect.tsx │ ├── textarea.tsx │ ├── toast.tsx │ ├── toaster.tsx │ └── user-nav.tsx └── website-card.tsx ├── config └── supabase.ts ├── hooks ├── use-toast.ts └── useUser.ts ├── lib ├── constants.tsx ├── cors.ts ├── discord-client.ts └── utils.ts ├── next.config.ts ├── package-lock.json ├── package.json ├── postcss.config.mjs ├── public ├── diagram.png ├── file.svg ├── github.svg ├── globe.svg ├── google.svg ├── hero.png ├── logo.png ├── next.svg ├── noise.png ├── og.png ├── product1.png ├── product2.png ├── product3.png ├── spinner.svg ├── tracking-script.js ├── vercel.svg └── window.svg ├── tailwind.config.ts ├── tsconfig.json └── types ├── index.ts └── tailwind.d.ts /.env.example: -------------------------------------------------------------------------------- 1 | NEXT_PUBLIC_SUPABASE_URL= 2 | 3 | NEXT_PUBLIC_SUPABASE_ANON_KEY= 4 | 5 | DISCORD_BOT_TOKEN= 6 | 7 | GOOGLE_PAGESPEED_API_KEY= -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": ["next/core-web-vitals", "next/typescript"] 3 | } 4 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.* 7 | .yarn/* 8 | !.yarn/patches 9 | !.yarn/plugins 10 | !.yarn/releases 11 | !.yarn/versions 12 | 13 | # testing 14 | /coverage 15 | 16 | # next.js 17 | /.next/ 18 | /out/ 19 | 20 | # production 21 | /build 22 | 23 | # misc 24 | .DS_Store 25 | *.pem 26 | 27 | # debug 28 | npm-debug.log* 29 | yarn-debug.log* 30 | yarn-error.log* 31 | 32 | # env files (can opt-in for commiting if needed) 33 | .env 34 | 35 | # vercel 36 | .vercel 37 | 38 | # typescript 39 | *.tsbuildinfo 40 | next-env.d.ts 41 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
118 | {isSignUp 119 | ? 'Enter your email below to create your account' 120 | : 'Enter your email below to sign in to your account'} 121 |
122 |{error}
242 | )} 243 | 252 |No websites added yet.
99 |33 | 404 - Data Not Found 34 |
35 |36 | The metrics you're looking for seem to have escaped our tracking radar 📊 37 |
38 |Last 24-hour stats:
28 |{error}
135 | ) : ( 136 |137 | Enter the domain or subdomain without "www" 138 |
139 | )} 140 |155 | {metricsError} 156 |
157 | )} 158 |46 | {username} 47 |
48 | 49 | APP 50 | 51 | 52 | {timestamp} 53 | 54 |59 | {emoji} {title} 60 |
61 |65 | {description} 66 |
67 | )} 68 | 69 |76 | 77 | {field.name} 78 | {field.value ? ":" : ""} 79 | {" "} 80 | {field.value} 81 |
82 |
87 |
{text}
18 |You
103 |@your_account
104 |Analyzr
135 |52 | Waiting for the first page view... 53 |
54 |
60 | Installation
61 | No custom events recorded yet
39 |40 | Custom events will appear here once they are tracked. Learn how to implement custom events in our{" "} 41 | 47 | documentation 48 | . 49 |
50 |63 | Learn more in our{" "} 64 | 70 | documentation 71 | 72 |
73 |101 | {count} 102 |
103 |Total Events
104 |152 | {formatTimeStamp(event.created_at)} 153 |
154 |{event.message}
156 | {event.fields && event.fields.length > 0 && ( 157 |{field.name}
162 |{field.value}
163 |61 | Add to your index.html: 62 |
63 | 72 |90 | Add to your app/layout.tsx: 91 |
92 | 101 |37 | {role} 38 |
39 |42 | {testimonial} 43 |44 | 45 |
Hello, {firstName}!
46 |47 | {user.email} 48 |
49 |