Skip to content
Merged
Show file tree
Hide file tree
Changes from 175 commits
Commits
Show all changes
181 commits
Select commit Hold shift + click to select a range
7a88f7d
wip
ameer2468 Nov 12, 2025
618082d
Merge remote-tracking branch 'upstream/main' into ameers-work
ameer2468 Nov 16, 2025
32a40b4
Merge remote-tracking branch 'upstream/main' into ameers-work
ameer2468 Nov 17, 2025
06533e3
wip
ameer2468 Nov 17, 2025
18f830a
more wip
ameer2468 Nov 17, 2025
e79d7b9
more wip
ameer2468 Nov 17, 2025
7c6b9b2
Merge remote-tracking branch 'upstream/main' into ameers-work
ameer2468 Nov 19, 2025
4e0d33b
more wip
ameer2468 Nov 19, 2025
5838094
wip
ameer2468 Nov 20, 2025
6eed36d
Merge remote-tracking branch 'upstream/main' into ameers-work
ameer2468 Nov 20, 2025
6e43eae
login page improved
ameer2468 Nov 20, 2025
8e6ff00
tweaks
ameer2468 Nov 20, 2025
0e37c02
correct color
ameer2468 Nov 20, 2025
5d013dc
cleanup signup, and more
ameer2468 Nov 20, 2025
e9794a2
fix accent color and calendar
ameer2468 Nov 21, 2025
aed273a
adjust api key list and sheet
ameer2468 Nov 21, 2025
51ec006
more wip
ameer2468 Nov 21, 2025
de032bb
Merge branch 'ameers-work' into dev
ameer2468 Nov 21, 2025
9d820c2
cleanup
ameer2468 Nov 21, 2025
5f8491a
update settings of account
ameer2468 Nov 21, 2025
29d2a60
Merge branch 'ameers-work' into dev
ameer2468 Nov 22, 2025
dd57343
cleanup sidebar
ameer2468 Nov 23, 2025
d513153
Merge branch 'ameers-work' into dev
ameer2468 Nov 23, 2025
88d5928
improve create org sheet and sidebar
ameer2468 Nov 23, 2025
40c0d0b
some empty states cleaned up, ui cleanups, and more
ameer2468 Nov 24, 2025
8a366d5
cleanup more empty states, fix some layout issues, and more
ameer2468 Nov 25, 2025
2ee2427
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 25, 2025
9fdc926
sidebar tweaks, empty states, and more
ameer2468 Nov 26, 2025
1e18e69
adjust border
ameer2468 Nov 26, 2025
0d31d50
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 27, 2025
2ddc71d
tweaks and cleanups
ameer2468 Nov 27, 2025
9d42e68
cleanup danger zone page
ameer2468 Nov 27, 2025
283c1e4
landing page tweaks
ameer2468 Nov 27, 2025
4223aea
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 28, 2025
562b95c
more cleanup
ameer2468 Nov 28, 2025
f7e7a0e
bento and landing page stuff
ameer2468 Nov 28, 2025
37245f3
Update hero.tsx
ameer2468 Nov 28, 2025
ee24943
Update bento.tsx
ameer2468 Nov 28, 2025
caf970a
more cleanups
ameer2468 Nov 28, 2025
6cc3781
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 28, 2025
650796b
Update .env.example
ameer2468 Nov 28, 2025
39cee7c
Update client.ts
ameer2468 Nov 28, 2025
78b5be8
fixes
ameer2468 Nov 29, 2025
306ba9b
Update category-sidebar.tsx
ameer2468 Nov 29, 2025
a4fce80
remove hover effects from bento
ameer2468 Nov 29, 2025
1b5556d
more cleanups
ameer2468 Nov 30, 2025
367e74a
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 30, 2025
7d1be41
Merge remote-tracking branch 'upstream/main' into dev
ameer2468 Nov 30, 2025
a9696e3
fixes
ameer2468 Nov 30, 2025
e7cd7bb
cleanup
ameer2468 Nov 30, 2025
0258dd3
Merge branch 'main' into dev
ameer2468 Nov 30, 2025
459997e
Merge branch 'main' into dev
ameer2468 Nov 30, 2025
f82bce0
feat: consolidated changes from dev
ameer2468 Nov 30, 2025
5622c94
fix: missing page
izadoesdev Nov 30, 2025
6bfdfa1
Merge branch 'dev' into staging
izadoesdev Nov 30, 2025
926941c
cleanup website cards
izadoesdev Nov 30, 2025
fe8fec3
fix privacy page
ameer2468 Nov 30, 2025
bcee563
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Nov 30, 2025
de21750
fix: styling
izadoesdev Nov 30, 2025
34970d6
badge variant
ameer2468 Nov 30, 2025
96f5417
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Nov 30, 2025
5290b41
cleanup
izadoesdev Nov 30, 2025
b234259
fix: website card X dialog
izadoesdev Nov 30, 2025
d46e5b7
cleanup right sidebar
izadoesdev Nov 30, 2025
1e1daf6
cleanup right sidebar
izadoesdev Nov 30, 2025
2c425d1
fix: api keys page
izadoesdev Nov 30, 2025
f63952d
fix: api keys load data once, rather than on click
izadoesdev Nov 30, 2025
68b3b90
compact and clean up the users list
izadoesdev Nov 30, 2025
a91f0ce
cleanup
izadoesdev Nov 30, 2025
06deb71
cool ass charts
izadoesdev Nov 30, 2025
80aac14
redesign annotations system
izadoesdev Nov 30, 2025
a99f55b
a bunch of cleanups
izadoesdev Nov 30, 2025
645b942
feat: cooler annotations
izadoesdev Nov 30, 2025
bc2fcc4
tooltip metric name
izadoesdev Nov 30, 2025
3477a4e
cleanup
izadoesdev Nov 30, 2025
f900a3f
fix layout issue
izadoesdev Nov 30, 2025
84f37f8
fix: loading states
izadoesdev Nov 30, 2025
7851293
cleanup deps
izadoesdev Nov 30, 2025
79f034e
add setup tracking tab
izadoesdev Nov 30, 2025
0d396ef
color redo
izadoesdev Nov 30, 2025
0bff9a4
fix: more color cleanups
izadoesdev Nov 30, 2025
ebb18e1
cleanup some consistency patches
izadoesdev Nov 30, 2025
eec8048
annotaitons popup
izadoesdev Nov 30, 2025
89d47ee
cleanup layouts, auth guard
izadoesdev Nov 30, 2025
182f622
fix missing pages
izadoesdev Nov 30, 2025
8029ee2
fix: perf page
izadoesdev Nov 30, 2025
23b9aa7
fix: suspense boundary
izadoesdev Nov 30, 2025
f8a2207
fix: suspense boundary
izadoesdev Nov 30, 2025
a273798
fix: suspense boundary
izadoesdev Nov 30, 2025
6091a82
fix: suspense
izadoesdev Nov 30, 2025
adcdf5f
skeleton
izadoesdev Nov 30, 2025
118e728
cleanup and redesign retention page
izadoesdev Nov 30, 2025
a4e6488
cleanup flags to use svg
izadoesdev Nov 30, 2025
aad31e4
fix lint
izadoesdev Nov 30, 2025
8c140a6
consolidate component
izadoesdev Dec 1, 2025
8f9872b
users page redesign
izadoesdev Dec 1, 2025
a305929
fix: stat card loading
izadoesdev Dec 1, 2025
a599566
screen view calc;
izadoesdev Dec 1, 2025
c1ef626
fix types and switch
ameer2468 Dec 1, 2025
3bb33a1
fix: dialog
izadoesdev Dec 1, 2025
52384aa
remove connection types
izadoesdev Dec 1, 2025
17c2a6e
cleanup audience tab
izadoesdev Dec 1, 2025
4031949
fix: chart re-render
izadoesdev Dec 1, 2025
d05bbde
live user count in website card
izadoesdev Dec 1, 2025
d8446b8
attach angled gradients as utilities for tailwindcss support
ameer2468 Dec 1, 2025
290f843
adjust border opacity
ameer2468 Dec 1, 2025
2519376
fix: db
izadoesdev Dec 1, 2025
8efe510
fix: attach
izadoesdev Dec 1, 2025
8f1b42e
feat: better filters
izadoesdev Dec 1, 2025
196e417
cleanup filters
izadoesdev Dec 1, 2025
4f3187f
cleanup filter ops
izadoesdev Dec 1, 2025
4900fd0
improve angled gradient
izadoesdev Dec 1, 2025
27b7b76
cleanup
izadoesdev Dec 1, 2025
aae3553
fix: remove old script cdn
izadoesdev Dec 1, 2025
6bb43d8
Merge branch 'main' into staging
izadoesdev Dec 1, 2025
fb99d8a
migrate custom events, web vitals, errors to new formats
izadoesdev Dec 1, 2025
6a59846
show percentage
ameer2468 Dec 1, 2025
933e9ab
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Dec 1, 2025
9399f29
cleanup funnels
izadoesdev Dec 1, 2025
a75b62f
cleanup dialog, loading skeleton
izadoesdev Dec 1, 2025
950ce1a
cleanup docs and new SDK for the new tracker
izadoesdev Dec 1, 2025
1817f3d
delete dialog everywhere!
izadoesdev Dec 1, 2025
090e015
cleanup sheet by default
izadoesdev Dec 1, 2025
a780ea3
goals time
izadoesdev Dec 1, 2025
a4f9626
feat: ignore historic data
izadoesdev Dec 1, 2025
b12c431
feat: goal historic data
izadoesdev Dec 1, 2025
d070f39
cleanup routes
izadoesdev Dec 1, 2025
f61466d
cut off some noise
izadoesdev Dec 1, 2025
6a90847
fix: filters
izadoesdev Dec 1, 2025
6a4c8fa
fix: cost breakdown
izadoesdev Dec 2, 2025
c46e244
fix: sidebar dark mode
izadoesdev Dec 2, 2025
6540ae6
fix: website settings page
izadoesdev Dec 2, 2025
7fb55f2
confirm delete dialog
izadoesdev Dec 2, 2025
f8bca90
fix: org slider
izadoesdev Dec 2, 2025
a654a60
fix: type error
izadoesdev Dec 2, 2025
d377b23
redesign settings org page
izadoesdev Dec 2, 2025
1af35d8
small error page redesign
izadoesdev Dec 2, 2025
88f53f0
feat: skip useless errors, better error page
izadoesdev Dec 2, 2025
d619922
cleanup
izadoesdev Dec 2, 2025
4b181bf
alpha: vitals page
izadoesdev Dec 2, 2025
55d490d
fix: layout shift on refresh
izadoesdev Dec 2, 2025
a53f1d8
deprecate performance page
izadoesdev Dec 2, 2025
9bad343
fix: transfer website dialog
izadoesdev Dec 2, 2025
bb59e9b
minor visual fix to funnels page - also add scroll support
ameer2468 Dec 2, 2025
7bd8046
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Dec 2, 2025
83ed542
mb
ameer2468 Dec 2, 2025
d524d44
map page design
izadoesdev Dec 2, 2025
c7daf79
i forogt
izadoesdev Dec 2, 2025
9d7c886
chart preview component
ameer2468 Dec 2, 2025
0a32dfd
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Dec 2, 2025
f232373
typo
ameer2468 Dec 2, 2025
98b929c
initial step of new settings
izadoesdev Dec 2, 2025
0d1e1fc
del transition colors;
izadoesdev Dec 2, 2025
893eee4
feat: account page
izadoesdev Dec 2, 2025
aed4662
cleanup further;
izadoesdev Dec 2, 2025
183ae2e
cleanup
izadoesdev Dec 2, 2025
4ff225d
refactor: security improvements for 2FA
izadoesdev Dec 2, 2025
72dce3d
feat: functional account settings page with auth integration
izadoesdev Dec 2, 2025
0625f64
fix: remove duplicate setPasswordForOAuthUser function
izadoesdev Dec 2, 2025
38d264f
fix: cleaner connected identities and synced sidebar sections
izadoesdev Dec 2, 2025
7dd54f6
unlink account
izadoesdev Dec 2, 2025
562e059
feat: better gauges
izadoesdev Dec 2, 2025
198906b
cleanup gauge chart
izadoesdev Dec 2, 2025
7ed9f7f
better FPS
izadoesdev Dec 2, 2025
415ea49
feat: vitals page in demo
izadoesdev Dec 2, 2025
a0fd493
compact page
izadoesdev Dec 2, 2025
3c7f056
clean up
izadoesdev Dec 2, 2025
e03aa04
Merge branch 'staging' of https://github.com/databuddy-analytics/Data…
ameer2468 Dec 2, 2025
8f90ad2
feat: appearance page
izadoesdev Dec 2, 2025
cb4727f
fix: 1px misalignment
izadoesdev Dec 2, 2025
0ba611c
feat: kbd controls
izadoesdev Dec 2, 2025
2ddb802
fix: conflicting records
izadoesdev Dec 2, 2025
f83f430
redesign tooltip
izadoesdev Dec 2, 2025
46fe4dd
fix: loading skeleton mess
izadoesdev Dec 2, 2025
e1e2541
cleanup sql
izadoesdev Dec 2, 2025
11d7ffa
some lint
izadoesdev Dec 2, 2025
3ec6b05
cleanup
izadoesdev Dec 2, 2025
43464fb
fix: weird skeleton issues;
izadoesdev Dec 2, 2025
f637576
fix: kbd font
izadoesdev Dec 2, 2025
691906b
fix: export escape
izadoesdev Dec 2, 2025
949003d
nits
izadoesdev Dec 2, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
313 changes: 0 additions & 313 deletions WARP.md

This file was deleted.

1 change: 0 additions & 1 deletion apps/api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@
"@databuddy/rpc": "workspace:*",
"@databuddy/shared": "workspace:*",
"@elysiajs/cors": "^1.4.0",
"@elysiajs/cron": "^1.4.1",
"@opentelemetry/api": "^1.9.0",
"@opentelemetry/exporter-trace-otlp-proto": "^0.208.0",
"@opentelemetry/instrumentation-http": "^0.55.0",
Expand Down
17 changes: 13 additions & 4 deletions apps/api/src/lib/clickhouse-backup.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,18 +88,23 @@ async function getBackupMetadata(backupName: string): Promise<{
num_files: number;
} | null> {
try {
// Escape LIKE special characters: backslashes first, then % and _
const escaped = backupName.replace(/\\/g, "\\\\").replace(/[%_]/g, "\\$&");
const result = await clickHouseOG.query({
query: `
SELECT
total_size as size_bytes,
compressed_size as compressed_size_bytes,
num_files
FROM system.backups
WHERE name LIKE '%${backupName}%'
WHERE name LIKE {pattern:String}
AND status = 'BACKUP_CREATED'
ORDER BY start_time DESC
LIMIT 1
`,
query_params: {
pattern: `%${escaped}%`,
},
});

const data = await result.json<{
Expand Down Expand Up @@ -160,7 +165,9 @@ export async function performClickHouseBackup(): Promise<BackupResult> {

await ensureBackupTable();

const s3Url = `${env.R2_ENDPOINT}/${env.R2_BUCKET}/${backupName}/`;
// Normalize endpoint (remove trailing slashes) and build path-style URL for Tigris/S3-compatible storage
const endpoint = env.R2_ENDPOINT.replace(/\/+$/, '');
const s3Url = `${endpoint}/${env.R2_BUCKET}/${backupName}`;
const lastBackupPath = await getLastBackupPath();
const isIncremental = lastBackupPath !== null;

Expand Down Expand Up @@ -192,7 +199,8 @@ export async function performClickHouseBackup(): Promise<BackupResult> {
s3_max_put_burst = 50,
compression_method = 'zstd',
compression_level = 3,
max_backup_bandwidth = 104857600${baseBackupSetting}
max_backup_bandwidth = 104857600,
s3_use_virtual_addressing = false${baseBackupSetting}
Comment on lines +202 to +203

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🧹 Nitpick | 🔵 Trivial

Consider making max_backup_bandwidth configurable.

The hardcoded 100 MiB/s (104857600 bytes) bandwidth limit is reasonable, but different environments may have varying network constraints. Consider exposing this as an optional environment variable with this as the default.

+// At top of file or in env schema
+const BACKUP_BANDWIDTH = env.BACKUP_BANDWIDTH ?? 104857600; // 100 MiB/s default
+
 // In backupQuery settings
-                max_backup_bandwidth = 104857600,
+                max_backup_bandwidth = ${BACKUP_BANDWIDTH},

Committable suggestion skipped: line range outside the PR's diff.

🤖 Prompt for AI Agents
In apps/api/src/lib/clickhouse-backup.ts around lines 202-203 the backup config
hardcodes max_backup_bandwidth = 104857600; make this value configurable via an
environment variable (e.g. MAX_BACKUP_BANDWIDTH) while preserving 104857600 as
the default. Change the config generation to read
process.env.MAX_BACKUP_BANDWIDTH, parse it to an integer with a safe fallback to
104857600 and a simple validation (positive integer), and then inject that
computed value into the generated config instead of the literal. Also update any
environment typing/schema (if present) and add a comment documenting the env var
and units (bytes/sec).

`;

await backupClickHouse.command({ query: backupQuery });
Expand Down Expand Up @@ -404,7 +412,8 @@ export async function restoreBackup(
FROM S3('${backupPath}', '${env.R2_ACCESS_KEY_ID}', '${env.R2_SECRET_ACCESS_KEY}')
SETTINGS
async = false,
s3_max_redirects = 10
s3_max_redirects = 10,
s3_use_virtual_addressing = false
`;
Comment on lines +405 to 417

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue | 🔴 Critical

SQL injection vulnerability: backupPath, database, and tables are directly interpolated.

The backupPath parameter and optional tables/database values are interpolated directly into the SQL query without validation. An attacker could inject malicious SQL through these parameters.

Add input validation for all parameters:

 export async function restoreBackup(
 	backupPath: string,
 	options: {
 		tables?: string[];
 		database?: string;
 	} = {}
 ): Promise<BackupResult> {
 	const timestamp = new Date().toISOString();
+
+	// Validate backupPath format (should be an S3 URL)
+	if (!/^https?:\/\/[^'"\s]+$/.test(backupPath)) {
+		return {
+			success: false,
+			error: "Invalid backup path format",
+			timestamp,
+		};
+	}
+
+	// Validate database and table names (alphanumeric and underscores only)
+	const identifierRegex = /^[a-zA-Z_][a-zA-Z0-9_]*$/;
+	const database = options.database ?? "analytics";
+	if (!identifierRegex.test(database)) {
+		return {
+			success: false,
+			error: "Invalid database name",
+			timestamp,
+		};
+	}
+	if (options.tables?.some((t) => !identifierRegex.test(t))) {
+		return {
+			success: false,
+			error: "Invalid table name",
+			timestamp,
+		};
+	}

Committable suggestion skipped: line range outside the PR's diff.


await backupClickHouse.command({ query: restoreQuery });
Expand Down
Loading
Loading