Skip to content

Landing page and feature page redesign#410

Open
mahikachadha5 wants to merge 82 commits intodatabuddy-analytics:stagingfrom
mahikachadha5:landing-page-changes
Open

Landing page and feature page redesign#410
mahikachadha5 wants to merge 82 commits intodatabuddy-analytics:stagingfrom
mahikachadha5:landing-page-changes

Conversation

@mahikachadha5
Copy link
Copy Markdown

@mahikachadha5 mahikachadha5 commented Apr 13, 2026

Description

Please include a summary of the change and which issue is fixed. Also include relevant motivation and context.

Checklist
  • My code follows the style guidelines of this project
  • I have performed a self-review of my code
  • I have commented my code, particularly in hard-to-understand areas
  • I have made corresponding changes to the documentation
  • My changes generate no new warnings
  • I have added tests that prove my fix is effective or that my feature works
  • New and existing unit tests pass locally with my changes

These changes are all frontend changes involving the marketing site. Summary of changes at a high-level is as follows:

  • I refactored/added feature pages for all features (Uptime Monitoring, Error Tracking, Web Vitals, Feature Flags).
    Each feature page includes demos or abstract visuals for the capabilities of the feature.
  • General typography and styling changes were applied to each section of the feature pages as well (hero, capabilities sections, FAQ, final cta)
  • Navbar and footer for the overall site were made to be cleaner
  • Buttons added to landing page to route to individual feature pages
  • general cleanup and section changes were made to the landing page as well

@vercel
Copy link
Copy Markdown

vercel bot commented Apr 13, 2026

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

A member of the Team first needs to authorize it.

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai bot commented Apr 13, 2026

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: ASSERTIVE

Plan: Pro

Run ID: 586542ec-46cd-464a-b1d1-223c3e0118e9

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@greptile-apps
Copy link
Copy Markdown
Contributor

greptile-apps bot commented Apr 13, 2026

Greptile Summary

This PR redesigns the marketing site with four new/refactored feature pages (Errors, Web Vitals, Uptime, Feature Flags), a new reusable ClosingCtaSection, navbar/footer cleanup, and bento card links to individual feature pages.

  • Wrong route on Error Tracking bento card: href="/web-vitals" should be href="/errors" — users clicking the arrow are sent to the wrong page.
  • Invalid Tailwind class: font-regular in bento.tsx has no effect; the correct utility is font-normal, so the funnel chart label weight silently regresses.
  • FAQ content mismatch in uptime/page.tsx: two answers don't correspond to their questions — appears to be a copy-paste error that will confuse users.

Confidence Score: 4/5

Safe to merge after fixing the wrong Error Tracking href, invalid font-regular class, and mismatched FAQ content in the uptime page.

Three P1 findings: a wrong route on a navigation link, a no-op CSS class that silently drops font styling, and FAQ answers that don't match their questions. All are quick fixes but directly affect user-facing correctness.

apps/docs/components/bento.tsx (wrong href + invalid class) and apps/docs/app/(home)/uptime/page.tsx (mismatched FAQ entries)

Important Files Changed

Filename Overview
apps/docs/components/bento.tsx Added section heading, href navigation links to feature pages, and animation tweaks — but Error Tracking card links to /web-vitals instead of /errors, and font-regular is an invalid Tailwind class.
apps/docs/app/(home)/uptime/page.tsx Refactored uptime feature page with new layout — two FAQ answers are mismatched to their questions (copy-paste error).
apps/docs/app/(home)/errors/page.tsx New error tracking feature page with hero, impact section, FAQ, and CTA — well-structured and consistent with other feature pages.
apps/docs/app/(home)/web-vitals/page.tsx New web vitals feature page with breakdown, monitoring, FAQ sections and demo components — clean and consistent with the redesign pattern.
apps/docs/app/(home)/feature-flags/page.tsx Significantly refactored feature flags page with multiple demo components (A/B testing, percentage rollouts, user targeting) — no issues found.
apps/docs/components/navbar.tsx Navbar cleaned up: ThemeToggle removed, "Log in" and "Changelog" moved, max-width constraint added, and minor copy changes — no issues found.
apps/docs/components/footer.tsx Footer redesigned with 5-column grid, ThemeToggle added, newsletter form repositioned, and Connect/Legal sections reorganized — no issues found.
apps/docs/components/navbar-features-menu.tsx Error tracking href corrected to /errors; Changelog link added via router.push; minor style using inline style for brand-amber color instead of a Tailwind token.
apps/docs/components/landing/closing-cta-section.tsx New reusable closing CTA section with background gradient image, configurable title/subtitle/CTA props — well-abstracted and consistent.
apps/docs/components/ui/button.tsx Secondary variant restyled to outlined/transparent button; quotes normalized to single quotes — intentional design change, no logic issues.
apps/docs/components/landing/uptime-landing-visuals.tsx New D3/canvas world map diagram and alert carousel animations for uptime page — well-contained with proper cleanup in useEffect.
apps/docs/components/landing/ff-demo-reveal.ts "use client" directive added to the shared IntersectionObserver hook for FF demos — correct and necessary for React hooks in a server-components context.

Flowchart

%%{init: {'theme': 'neutral'}}%%
flowchart TD
    LandingPage["Landing Page\n/page.tsx"] -->|Bento card ✅| WebVitals["/web-vitals"]
    LandingPage -->|Bento card ❌ href='/web-vitals'| ErrorTracking["/errors"]
    LandingPage -->|Bento card ✅| FeatureFlags["/feature-flags"]

    Navbar["Navbar"] --> FeaturesMenu["NavbarFeaturesMenu"]
    FeaturesMenu -->|href ✅ '/errors'| ErrorTracking
    FeaturesMenu -->|href ✅ '/web-vitals'| WebVitals
    FeaturesMenu -->|href ✅ '/uptime'| Uptime["/uptime"]
    FeaturesMenu -->|href ✅ '/feature-flags'| FeatureFlags

    ErrorTracking --> ClosingCTA["ClosingCtaSection"]
    WebVitals --> ClosingCTA
    Uptime --> ClosingCTA
    FeatureFlags --> ClosingCTA
    ClosingCTA -->|primaryCta| AppLogin["app.databuddy.cc/login"]
    ClosingCTA -->|secondaryCta| Docs["/docs/*"]
Loading

Reviews (1): Last reviewed commit: "increase row height of alert stacks and ..." | Re-trigger Greptile

Copy link
Copy Markdown
Member

@izadoesdev izadoesdev left a comment

Choose a reason for hiding this comment

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

Hey @mahikachadha5 — welcome to Databuddy! 🎉 Thanks for this contribution, it's a substantial redesign and the new feature pages look well-structured. Here's a first-pass review:

Summary

This PR redesigns the marketing site's landing page and all four feature pages (Error Tracking, Feature Flags, Uptime Monitoring, Web Vitals). It replaces the old SciFi-themed components with a cleaner grid-based layout, adds new demo/visual components for each feature, updates the navbar and footer, and adds routing links from the bento grid to individual feature pages. All changes are frontend-only under apps/docs/ — no backend, database, or pipeline code is touched.


Issues

🔴 Critical

Wrong link on Error Tracking bento card — The Error Tracking card in bento.tsx links to /web-vitals instead of /errors. See inline comment.

🟡 Warning

  1. FAQ answer mismatch on uptime page — Two FAQ items have questions that were updated but answers that still belong to the old questions. See inline comment on uptime/page.tsx.
  2. Full D3 library imported (~490KB)uptime-landing-visuals.tsx does import * as d3 from "d3" but only uses d3-geo. See inline comment.
  3. External CDN fetch with no fallback — The world map component fetches topology JSON from jsDelivr at runtime with no error UI. See inline comment.
  4. Removed redirects will break inbound linksnext.config.ts removes the redirects for /error-tracking and /web-vitals → existing bookmarks and search engine links will 404. Consider adding 301 permanent redirects to the new paths (/errors and /web-vitals) instead of just removing them.

🔵 Suggestion

  1. font-base typo in web-vitals-alert-cycle-demo.tsx — not a valid Tailwind class, likely meant font-normal. Silent no-op.
  2. right-200 in hero.tsx — Tailwind's default scale goes to 96. This likely does nothing unless there's a custom config entry. Consider right-[200px] or a standard value.
  3. Use <Link> instead of router.push for the Changelog entry in navbar-features-menu.tsx — gives better prefetching and right-click behavior.
  4. Secondary button variant change in button.tsx is global — every variant="secondary" button across the docs site will change appearance. Worth confirming no unintended regressions.
  5. Unused stars prop in hero.tsx — the prop is accepted and immediately discarded (stars: _stars). Clean up the interface to avoid confusion.

Overall Assessment: Needs changes

The wrong Error Tracking link and FAQ mismatches are quick fixes. The D3 bundle import is worth addressing before merge since it adds significant weight to a marketing page. Everything else is solid work. 👏

<BentoCard
className="h-full md:col-span-4 md:row-span-1"
contentClassName="pb-0"
description="Catch and fix bugs fast"
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Bug: This links the Error Tracking card to /web-vitals instead of /errors. Should be href="/errors" to match the new errors page you've added.

Comment on lines 50 to 56
},
{
question: "What kind of services can I monitor?",
question: "Can I create a public status page?",
answer:
"Any public website, API, or web service. You can also parse JSON health endpoints to monitor specific fields — useful for services that report their own status.",
},
{
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

These last two FAQ items have mismatched questions and answers — it looks like the questions were updated but the answers still belong to the old questions.

  • "Can I create a public status page?" → answer talks about "Any public website, API, or web service" (this was the old "What kind of services can I monitor?" answer)
  • "Will it integrate with my existing alerts?" → answer talks about plan pricing (this was the old "Is uptime monitoring included in all plans?" answer)

The answers need to be rewritten to match the new questions.

@@ -0,0 +1,588 @@
"use client";

import * as d3 from "d3";
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Importing all of D3 (import * as d3) pulls in ~490KB minified. Only geoNaturalEarth1, geoPath, and the GeoPermissibleObjects type are used here. Swap to:

import { geoNaturalEarth1, geoPath, type GeoPermissibleObjects } from "d3-geo";

This should reduce the bundle impact significantly for a marketing page.

"https://cdn.jsdelivr.net/npm/world-atlas@2/countries-110m.json"
);
_topoCache = await res.json();
return _topoCache;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

This fetches a ~100KB JSON file from jsDelivr at runtime on every first mount with no timeout, no retry, and the catch just silently returns — leaving users with a blank canvas and no feedback. Consider either bundling a simplified topology as a static import, or at minimum showing a fallback/skeleton state when the fetch fails.

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