Skip to content

Comments

Use LocationData type in MapComponent props type.#42

Merged
izadoesdev merged 4 commits intodatabuddy-analytics:mainfrom
sbansal1999:add-type-to-map-component
Jul 30, 2025
Merged

Use LocationData type in MapComponent props type.#42
izadoesdev merged 4 commits intodatabuddy-analytics:mainfrom
sbansal1999:add-type-to-map-component

Conversation

@sbansal1999
Copy link
Contributor

@sbansal1999 sbansal1999 commented Jul 28, 2025

This PR replaces any with the LocationData type that is defined where the MapComponentcomponent is used. Also, removed some otherany` definitions as types are inferred now.

Summary by CodeRabbit

  • New Features

    • Added structured support for geographic visitor analytics, including country and region-level metrics.
  • Refactor

    • Improved type safety and consistency in analytics map components by centralizing and reusing shared data types.
    • Renamed metric data interfaces for clearer naming conventions across analytics types.

@vercel
Copy link

vercel bot commented Jul 28, 2025

@sbansal1999 is attempting to deploy a commit to the Databuddy Team on Vercel.

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 28, 2025

Walkthrough

This change centralizes and standardizes type definitions for location-based analytics data by introducing CountryData, RegionData, and LocationData interfaces in a shared package. Local type declarations in the dashboard map page are removed in favor of imports, and type annotations in the map component are updated to use the new shared types. Additionally, several metric-related interfaces are renamed to include a "MetricData" suffix for clarity.

Changes

Cohort / File(s) Change Summary
Type Definitions Centralization
packages/shared/src/types/website.ts
Added CountryData, RegionData, and LocationData interfaces to define structured types for country and region analytics data.
Metric Interface Renaming
packages/shared/src/types/metrics.ts
Renamed interfaces by appending "MetricData" suffix: DeviceTypeData, BrowserData, CountryData, RegionData, PageData, ReferrerData, and PerformanceData to their respective *MetricData names for consistency.
Dashboard Map Page Refactor
apps/dashboard/app/(main)/websites/[id]/map/page.tsx
Removed local interface declarations; now imports LocationData from the shared types module, eliminating redundancy.
Component Type Safety Update
apps/dashboard/components/analytics/map-component.tsx
Replaced all any type annotations related to location data with the new LocationData type from the shared module; improved type safety and simplified code without changing logic or behavior.

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~7 minutes

Poem

A bunny hopped from file to file,
Tidying types with a practiced smile.
Now data’s shared, no more repeats,
Type safety’s sweet, and code’s complete!
With every hop, the code grew bright—
Centralized types, oh what delight!
🐇✨

Note

⚡️ Unit Test Generation is now available in beta!

Learn more here, or try it out under "Finishing Touches" below.


📜 Recent review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between dd8d5d9 and c38e813.

📒 Files selected for processing (1)
  • packages/shared/src/types/metrics.ts (1 hunks)
🚧 Files skipped from review as they are similar to previous changes (1)
  • packages/shared/src/types/metrics.ts
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript-typescript)
✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

@sbansal1999 sbansal1999 changed the base branch from staging to main July 28, 2025 20:21
@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch from 43dd8e9 to 190d59a Compare July 28, 2025 20:24
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 2

🔭 Outside diff range comments (1)
apps/dashboard/components/analytics/map-component.tsx (1)

89-96: perCapita value is off by six orders of magnitude

perCapitaValue is calculated as visitors / population, yet the tooltip label says “per million people”.
Multiply by 1_000_000 (or divide population by 1e6) so the number matches the label.

-const perCapitaValue = population > 0 ? item.count / population : 0;
+const perCapitaValue =
+  population > 0 ? (item.count * 1_000_000) / population : 0;
🧹 Nitpick comments (2)
apps/dashboard/app/(main)/websites/[id]/map/page.tsx (1)

29-32: Consider extracting LocationData to a shared types module instead of exporting from a page file

Importing types directly from a page-level module (map/page.tsx) forces lower-level components such as MapComponent to depend on UI route files, creating an inverted dependency and increasing the risk of circular imports during refactors.
Move CountryData, RegionData, and LocationData into a colocated types.ts (or @/types/analytics.ts) and re-export from there; components and pages can then import from that stable location.

apps/dashboard/components/analytics/map-component.tsx (1)

50-57: Defaulting divisor to 1 hides “all-zero” data cases

validCountries.reduce(... ) || 1 prevents division-by-zero but silently turns 0 visitors into 100 × 0/1 = 0%, which is fine, yet the magic constant obscures intent. Consider an explicit guard:

-const totalVisitors = validCountries.reduce((sum, c) => sum + c.visitors, 0) || 1;
+const totalVisitorsRaw = validCountries.reduce((sum, c) => sum + c.visitors, 0);
+const totalVisitors = totalVisitorsRaw === 0 ? 1 : totalVisitorsRaw;
📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between e21c29e and 190d59a.

📒 Files selected for processing (2)
  • apps/dashboard/app/(main)/websites/[id]/map/page.tsx (1 hunks)
  • apps/dashboard/components/analytics/map-component.tsx (7 hunks)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript-typescript)

@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch from 190d59a to cb4a98c Compare July 28, 2025 20:44
@sbansal1999
Copy link
Contributor Author

@coderabbitai full review

@coderabbitai
Copy link
Contributor

coderabbitai bot commented Jul 28, 2025

✅ Actions performed

Full review triggered.

@izadoesdev
Copy link
Member

move the types into packages/shared please so everything is uniform

@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch 2 times, most recently from e6f1de6 to 95775bf Compare July 29, 2025 19:13
Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

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

Actionable comments posted: 4

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between cb4a98c and 95775bf.

📒 Files selected for processing (4)
  • apps/dashboard/app/(main)/websites/[id]/map/page.tsx (1 hunks)
  • apps/dashboard/components/analytics/map-component.tsx (7 hunks)
  • apps/dashboard/tsconfig.json (1 hunks)
  • packages/shared/src/types/website.ts (1 hunks)
✅ Files skipped from review due to trivial changes (1)
  • apps/dashboard/tsconfig.json
🚧 Files skipped from review as they are similar to previous changes (2)
  • apps/dashboard/app/(main)/websites/[id]/map/page.tsx
  • apps/dashboard/components/analytics/map-component.tsx
🧰 Additional context used
📓 Path-based instructions (6)
**/*.{ts,tsx}

📄 CodeRabbit Inference Engine (.cursor/rules/01-MUST-DO.mdc)

Always ensure type-safety, don't use type: any unless needed, when creating APIs, responses, or components, create proper interfaces and make them in the shared types folders where it fits best, not in the same file

**/*.{ts,tsx}: Don't use TypeScript enums.
Don't use TypeScript const enum.
Don't use TypeScript namespaces.
Don't use the TypeScript directive @ts-ignore.
Don't use any type.
Don't use implicit any type on variable declarations.
Don't use non-null assertions with the ! postfix operator.
Don't misuse the non-null assertion operator (!) in TypeScript files.
Don't declare empty interfaces.
Use export type for types.
Use import type for types.
Don't use primitive type aliases or misleading types.
Don't use empty type parameters in type aliases and interfaces.

Files:

  • packages/shared/src/types/website.ts
**/*.{js,jsx,ts,tsx,css,scss}

📄 CodeRabbit Inference Engine (.cursor/rules/01-MUST-DO.mdc)

Always use rounded, not rounded-xl or rounded-md, always rounded

Files:

  • packages/shared/src/types/website.ts
**/*.{js,jsx,ts,tsx}

📄 CodeRabbit Inference Engine (.cursor/rules/01-MUST-DO.mdc)

**/*.{js,jsx,ts,tsx}: use console properly, like console.error, console.time, console.json, console.table, etc
Use Dayjs NEVER date-fns, and Tanstack query for hooks, NEVER SWR
Use ONLY Zod V4 from zod/v4 never zod 3 from zod
use json.stringify() when adding debugging

**/*.{js,jsx,ts,tsx}: Use bun <file> instead of node <file> or ts-node <file>
Do not use dotenv; Bun automatically loads .env files
Do not use express; use Bun.serve() for HTTP servers
Do not use better-sqlite3; use bun:sqlite for SQLite
Do not use ioredis; use Bun.redis for Redis
Do not use pg or postgres.js; use Bun.sql for Postgres
Do not use ws; use built-in WebSocket
Prefer Bun.file over node:fs's readFile/writeFile
Use Bun.$ instead of execa for running shell commands

Files:

  • packages/shared/src/types/website.ts
**/*.{js,ts,jsx,tsx}

📄 CodeRabbit Inference Engine (.cursor/rules/ultracite.mdc)

**/*.{js,ts,jsx,tsx}: Don't import next/document outside of pages/_document.jsx in Next.js projects.
Don't use global eval().
Don't use var.
Don't use console.
Don't use debugger.
Don't assign directly to document.cookie.
Don't use duplicate case labels.
Don't use duplicate class members.
Don't use duplicate function parameter names.
Don't use empty block statements and static blocks.
Don't use with statements in non-strict contexts.
Don't use the arguments object.
Don't use the comma operator.
Don't use unnecessary boolean casts.
Use for...of statements instead of Array.forEach.
Use arrow functions instead of function expressions.
Use Date.now() to get milliseconds since the Unix Epoch.
Use .flatMap() instead of map().flat() when possible.
Use literal property access instead of computed property access.
Don't use parseInt() or Number.parseInt() when binary, octal, or hexadecimal literals work.
Use concise optional chaining instead of chained logical expressions.
Use regular expression literals instead of the RegExp constructor when possible.
Don't use number literal object member names that aren't base 10 or use underscore separators.
Remove redundant terms from logical expressions.
Use while loops instead of for loops when you don't need initializer and update expressions.
Don't reassign const variables.
Don't use constant expressions in conditions.
Don't use Math.min and Math.max to clamp values when the result is constant.
Don't return a value from a constructor.
Don't use empty character classes in regular expression literals.
Don't use empty destructuring patterns.
Don't call global object properties as functions.
Don't declare functions and vars that are accessible outside their block.
Don't use variables and function parameters before they're declared.
Don't use 8 and 9 escape sequences in string literals.
Don't use literal numbers that lose precision.
Don't use duplicate conditions in if-else-if chains.
Don't use two keys with the same name inside objects...

Files:

  • packages/shared/src/types/website.ts
**/*.{js,ts}

📄 CodeRabbit Inference Engine (.cursor/rules/ultracite.mdc)

**/*.{js,ts}: Make sure to use the "use strict" directive in script files.
Don't have redundant "use strict".
Make sure to use the "use strict" directive in script files.

Files:

  • packages/shared/src/types/website.ts
**/*.{html,ts,css}

📄 CodeRabbit Inference Engine (.cursor/rules/use-bun-instead-of-node-vite-npm-pnpm.mdc)

Use bun build <file.html|file.ts|file.css> instead of webpack or esbuild

Files:

  • packages/shared/src/types/website.ts
🧠 Learnings (2)
📓 Common learnings
Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/01-MUST-DO.mdc:0-0
Timestamp: 2025-07-29T15:40:18.511Z
Learning: Applies to **/shared/types/**/*.{ts,tsx} : When creating interfaces for APIs, responses, or components, make them in the shared types folders where it fits best, not in the same file
Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/01-MUST-DO.mdc:0-0
Timestamp: 2025-07-29T15:40:18.511Z
Learning: Applies to **/*.{ts,tsx} : Always ensure type-safety, don't use type: any unless needed, when creating APIs, responses, or components, create proper interfaces and make them in the shared types folders where it fits best, not in the same file
Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/ultracite.mdc:0-0
Timestamp: 2025-07-29T15:42:01.054Z
Learning: Applies to **/*.{ts,tsx} : Use import type for types.
Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/ultracite.mdc:0-0
Timestamp: 2025-07-29T15:42:01.054Z
Learning: Applies to **/*.{ts,tsx} : Use export type for types.
Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/01-MUST-DO.mdc:0-0
Timestamp: 2025-07-29T15:40:18.511Z
Learning: Handle complex data transformations independently of React. Keep these modules decoupled from React for improved modularity and testability.
packages/shared/src/types/website.ts (1)

Learnt from: CR
PR: databuddy-analytics/Databuddy#0
File: .cursor/rules/01-MUST-DO.mdc:0-0
Timestamp: 2025-07-29T15:40:18.511Z
Learning: Applies to /shared/types//*.{ts,tsx} : When creating interfaces for APIs, responses, or components, make them in the shared types folders where it fits best, not in the same file

🧬 Code Graph Analysis (1)
packages/shared/src/types/website.ts (1)
apps/dashboard/app/(main)/websites/[id]/_components/tabs/audience-tab.tsx (1)
  • GeographicEntry (31-38)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
  • GitHub Check: Analyze (javascript-typescript)

Comment on lines +50 to +66
export interface CountryData {
country: string;
country_code?: string;
visitors: number;
pageviews: number;
}

export interface RegionData {
country: string;
visitors: number;
pageviews: number;
}

export interface LocationData {
countries: CountryData[];
regions: RegionData[];
}
Copy link
Contributor

@coderabbitai coderabbitai bot Jul 29, 2025

Choose a reason for hiding this comment

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

💡 Verification agent

🧩 Analysis chain

Verify consistency with existing geographic data types.

The new location data types are well-structured and properly placed in the shared types folder. However, there appears to be a similar GeographicEntry interface in apps/dashboard/app/(main)/websites/[id]/_components/tabs/audience-tab.tsx that has overlapping but different structure.

Consider consolidating these types to avoid duplication and ensure consistency across the codebase:


🏁 Script executed:

#!/bin/bash
# Search for other geographic or location-related interfaces that might need consolidation
rg -A 10 -B 2 "interface.*Geographic|interface.*Location|interface.*Country|interface.*Region" --type ts

Length of output: 4422


# End of script

🏁 Script executed:

#!/bin/bash
# Find barrel index in shared types
echo "Barrel files in packages/shared/src/types:"
fd -t f index.ts packages/shared/src/types

# Show content of barrel if exists
if [ -f packages/shared/src/types/index.ts ]; then
  echo "Content of packages/shared/src/types/index.ts:"
  sed -n '1,200p' packages/shared/src/types/index.ts
else
  echo "No barrel index.ts found in packages/shared/src/types"
fi

# Locate and display the GeographicEntry interface in audience-tab.tsx
AUD_TAB_PATH=$(fd -t f audience-tab.tsx apps)
echo "Audience tab file path: $AUD_TAB_PATH"
if [ -n "$AUD_TAB_PATH" ]; then
  echo "GeographicEntry snippet:"
  rg -A 5 -B 5 "interface GeographicEntry" $AUD_TAB_PATH
else
  echo "audience-tab.tsx not found"
fi

Length of output: 1518


Consolidate and de-duplicate geographic data types

The new CountryData, RegionData and LocationData in
packages/shared/src/types/website.ts are well-placed, but we now have three overlapping declarations:

• In packages/shared/src/types/metrics.ts:
export interface CountryData extends BaseMetricData {}
export interface RegionData extends BaseMetricData {}
• In packages/shared/src/types/website.ts:
export interface CountryData { country, country_code?, visitors, pageviews }
export interface RegionData { country, visitors, pageviews }
• In
apps/dashboard/app/(main)/websites/[id]/_components/tabs/audience-tab.tsx:
interface GeographicEntry { name, visitors, pageviews, percentage, country_code? }

To avoid shadowing, confusion and duplication:

  1. Rename metric-specific types to MetricCountryData/MetricRegionData.
  2. Move GeographicEntry into your shared folder (e.g. extend CountryData or RegionData and add percentage).
  3. Remove the local GeographicEntry in audience-tab.tsx and import the shared type.

Suggested diffs:

# packages/shared/src/types/metrics.ts
-export interface CountryData extends BaseMetricData {}
-export interface RegionData extends BaseMetricData {}
+export interface MetricCountryData extends BaseMetricData {}
+export interface MetricRegionData extends BaseMetricData {}
# apps/dashboard/.../audience-tab.tsx
- interface GeographicEntry {
-   name: string;
-   visitors: number;
-   pageviews: number;
-   percentage: number;
-   country_code?: string;
-   country_name?: string;
- }
+ import type { CountryData } from 'packages/shared/src/types/website';
+
+ interface GeographicEntry extends CountryData {
+   percentage: number;
+ }

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

🤖 Prompt for AI Agents
In packages/shared/src/types/website.ts around lines 50 to 66, there are
overlapping and duplicated geographic data types across multiple files causing
confusion. Rename the metric-specific interfaces in
packages/shared/src/types/metrics.ts to MetricCountryData and MetricRegionData
to clarify their purpose. Move the GeographicEntry interface from
apps/dashboard/app/(main)/websites/[id]/_components/tabs/audience-tab.tsx into
the shared types folder, extending either CountryData or RegionData and adding
the percentage field. Then remove the local GeographicEntry definition in
audience-tab.tsx and import the shared type instead to consolidate and
de-duplicate these types.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

@izadoesdev do you think we can remove the type CountryData and RegionData defined in packages/shared/src/types/metrics.ts as they are not being used anywhere?

Copy link
Contributor

Choose a reason for hiding this comment

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

Seems like the humans are having a chat. I'll hop back into my burrow for now. If you need me again, just tag @coderabbitai in a new comment, and I'll come hopping out!

Copy link
Member

Choose a reason for hiding this comment

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

@sbansal1999 if it's not used anywhere, remove it, just double check everything works in map and builds

Copy link
Contributor Author

@sbansal1999 sbansal1999 Jul 29, 2025

Choose a reason for hiding this comment

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

instead of removing them; what if we rename the types one in metrics (I feel they will come handy; as they are related to metrics.)

something like this

diff --git a/packages/shared/src/types/metrics.ts b/packages/shared/src/types/metrics.ts
index 2a11c1e9..3dab55d8 100644
--- a/packages/shared/src/types/metrics.ts
+++ b/packages/shared/src/types/metrics.ts
@@ -7,17 +7,17 @@ export interface BaseMetricData {
        pageviews: number;
 }

-export interface DeviceTypeData extends BaseMetricData {}
+export interface DeviceTypeMetricData extends BaseMetricData {}

-export interface BrowserData extends BaseMetricData {}
+export interface BrowserMetricData extends BaseMetricData {}

-export interface CountryData extends BaseMetricData {}
+export interface CountryMetricData extends BaseMetricData {}

-export interface RegionData extends BaseMetricData {}
+export interface RegionMetricData extends BaseMetricData {}

-export interface PageData extends BaseMetricData {}
+export interface PageMetricData extends BaseMetricData {}

-export interface ReferrerData extends BaseMetricData {}
+export interface ReferrerMetricData extends BaseMetricData {}

Copy link
Member

Choose a reason for hiding this comment

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

go for it if it makes sense

Copy link
Contributor Author

Choose a reason for hiding this comment

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

yup, this is done; I have pushed the changes

This helps in using them later from other places.
@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch from 95775bf to b3ea452 Compare July 29, 2025 19:29
The current logic will give minimum value as Infinity incase the
array has all values as 0.
@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch from b3ea452 to c1aa1ec Compare July 29, 2025 19:36
@sbansal1999 sbansal1999 force-pushed the add-type-to-map-component branch from dd8d5d9 to c38e813 Compare July 30, 2025 06:43
@izadoesdev izadoesdev merged commit f9f2781 into databuddy-analytics:main Jul 30, 2025
3 of 6 checks passed
@coderabbitai coderabbitai bot mentioned this pull request Jul 30, 2025
7 tasks
@coderabbitai coderabbitai bot mentioned this pull request Aug 14, 2025
7 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants