Skip to content

Feature/astro landing migration - #363

Merged
yash-pouranik merged 7 commits into
mainfrom
feature/astro-landing-migration
Jul 23, 2026
Merged

Feature/astro landing migration#363
yash-pouranik merged 7 commits into
mainfrom
feature/astro-landing-migration

Conversation

@yash-pouranik

@yash-pouranik yash-pouranik commented Jul 23, 2026

Copy link
Copy Markdown
Member

Landing Page from react to Astro for SEO

Summary by CodeRabbit

  • New Features
    • Added the Astro landing experience with interactive hero/visual sections, orbit visualization, bento feature grid, and Studio replay.
    • Introduced a responsive navbar with mobile menu behavior and an updated footer with newsletter signup and email validation.
    • Added a dedicated pricing page (Free/Pro) and enhanced landing styling.
  • SEO & Content
    • Added sitemap integration, robots rules, and structured metadata for better indexing.
  • Documentation
    • Added landing setup/development guides and usage instructions.
  • Chores
    • Added ignore patterns and editor debugging configuration for the landing app.

@vercel

vercel Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
ur-backend-web-dashboard Ready Ready Preview, Comment Jul 23, 2026 9:02pm
urbackend Ready Ready Preview, Comment Jul 23, 2026 9:02pm

@coderabbitai

coderabbitai Bot commented Jul 23, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 8ecab674-0204-4260-a451-9fc2a06051da

📥 Commits

Reviewing files that changed from the base of the PR and between 804080e and 0b53aea.

⛔ Files ignored due to path filters (1)
  • package-lock.json is excluded by !**/package-lock.json
📒 Files selected for processing (7)
  • apps/landing/AGENTS.md
  • apps/landing/CLAUDE.md
  • apps/landing/README.md
  • apps/landing/package.json
  • apps/landing/src/components/Footer.astro
  • apps/landing/src/components/Navbar.astro
  • apps/landing/src/pages/index.astro
🚧 Files skipped from review as they are similar to previous changes (4)
  • apps/landing/package.json
  • apps/landing/src/components/Footer.astro
  • apps/landing/src/pages/index.astro
  • apps/landing/src/components/Navbar.astro

📝 Walkthrough

Walkthrough

Changes

Landing application

Layer / File(s) Summary
Landing app scaffold
apps/landing/package.json, apps/landing/astro.config.mjs, apps/landing/tsconfig.json, apps/landing/.vscode/*, apps/landing/*.md, apps/landing/.gitignore, apps/landing/public/robots.txt
Adds Astro configuration, dependencies, TypeScript settings, editor setup, development documentation, ignored artifacts, and crawler rules.
Shared layout and page shell
apps/landing/src/layouts/Base.astro, apps/landing/src/components/Navbar.astro, apps/landing/src/components/Footer.astro, apps/landing/src/pages/pricing.astro
Adds document metadata, responsive navigation and footer components, newsletter behavior, and a pricing route with Free and Pro feature lists and CTA links.
Interactive card experiences
apps/landing/src/components/BorderGlow/*, apps/landing/src/components/MagicBento/*, apps/landing/src/data/services.jsx, apps/landing/src/components/StudioReplay.jsx
Adds animated glow cards, spotlight and particle interactions, service visual data, and a replayable generated-API demonstration.
Animated visual scenes
apps/landing/src/components/Hyperspeed/*, apps/landing/src/components/OrbitSection.jsx
Adds a Three.js hyperspeed scene with lifecycle handling and an animated orbit visualization populated from technology metadata.
Landing route composition and styling
apps/landing/src/pages/index.astro, apps/landing/src/styles/landing.css
Composes landing-page sections and hydrated visual components, adds FAQ accordion behavior, and defines responsive landing, showcase, timeline, and pricing styles.

Estimated code review effort: 5 (Critical) | ~120 minutes

Sequence Diagram(s)

sequenceDiagram
  participant Browser
  participant IndexPage
  participant AstroLayout
  participant InteractiveComponents
  participant FAQScript
  Browser->>IndexPage: request landing route
  IndexPage->>AstroLayout: render page content and metadata
  AstroLayout-->>Browser: return HTML and styles
  Browser->>InteractiveComponents: hydrate visual widgets
  InteractiveComponents-->>Browser: render animations and interactions
  Browser->>FAQScript: click FAQ question
  FAQScript-->>Browser: toggle answer and chevron state
Loading

Possibly related PRs

Suggested labels: frontend, type:feature, type:design

Suggested reviewers: nitin-kumar-yadav1307

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly reflects the main change: migrating the landing page to Astro.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feature/astro-landing-migration

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.

@coderabbitai coderabbitai Bot left a comment

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.

Actionable comments posted: 5

🧹 Nitpick comments (9)
apps/landing/src/components/MagicBento/MagicBento.jsx (1)

12-49: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Remove unused cardData. This array is never referenced; the component renders (cards || APP_SERVICES). It's dead code that also duplicates the descriptions already in services.jsx, so it can drift out of sync.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/components/MagicBento/MagicBento.jsx` around lines 12 - 49,
Remove the unused cardData array from MagicBento.jsx, leaving the component’s
existing (cards || APP_SERVICES) rendering path unchanged and relying on the
service definitions in services.jsx.
apps/landing/src/styles/landing.css (1)

107-107: 📐 Maintainability & Code Quality | 🔵 Trivial | 🏗️ Heavy lift

These new styles trip several configured stylelint rules and will fail the lint job. Notable violations flagged across the file: keyframe names not kebab-case (e.g. pulseGlow here, plus fadeInUp, orbitMove, byomParticle, loaderDotBounce, etc.), declaration-empty-line-before (lines 15, 503, 517, 524, 1671, 1680, 1689, 4038), quotes around the Inter font family (line 9), and the ::-moz-selection vendor-prefixed selector (line 46). Please align these to the project's stylelint config (rename keyframes/references together, drop the font quotes, and either disable or remove the moz selector) so CI stays green.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/styles/landing.css` at line 107, Update the styles in
landing.css to satisfy the configured stylelint rules: rename all camelCase
keyframes, including pulseGlow, to kebab-case and update every corresponding
animation reference; remove unnecessary quotes around the Inter font family; fix
the flagged declaration-empty-line-before violations; and remove or explicitly
disable the ::-moz-selection vendor-prefixed selector.

Source: Linters/SAST tools

apps/landing/src/pages/pricing.astro (1)

35-38: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Consider passing canonicalUrl to BaseLayout for this route.

BaseLayout supports an optional canonicalUrl prop but it's omitted here, so no canonical link is emitted for /pricing. Given this migration's SEO goal, setting it explicitly would help avoid duplicate-content ambiguity.

🔍 Proposed addition
 <BaseLayout 
   title="urBackend | Pricing" 
   description="Simple pricing for every stage. Start for free."
+  canonicalUrl="https://urbackend.bitbros.in/pricing"
 >
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/pages/pricing.astro` around lines 35 - 38, Update the
BaseLayout invocation in the pricing page to explicitly provide the route’s
canonicalUrl for /pricing, using the project’s established canonical URL format.
Keep the existing title and description unchanged.
apps/landing/src/components/Footer.astro (1)

3-3: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Hardcoded personal email as public contact channel.

The public mailto: link is tied to a named individual's personal Gmail address baked into source. Consider a config/env value (or a company-domain alias) so the contact channel isn't coupled to one person's personal account and can be rotated without a code change.

Also applies to: 51-51

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/components/Footer.astro` at line 3, Update the ADMIN_EMAIL
constant in Footer.astro to use a configurable contact value or a company-domain
alias instead of the hardcoded personal Gmail address, and ensure the public
mailto link continues using that value. Keep the existing footer behavior while
allowing the contact channel to be rotated without changing source code.
apps/landing/src/components/Navbar.astro (1)

4-9: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Mobile menu duplicates NAV_ITEMS instead of reusing it.

The mobile overlay (lines 51-59) hardcodes the same labels/hrefs already defined in NAV_ITEMS (lines 4-9). Deriving the mobile links from NAV_ITEMS avoids drift when nav items change.

Also applies to: 51-59

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/components/Navbar.astro` around lines 4 - 9, Update the
mobile overlay rendering to iterate over the existing NAV_ITEMS collection
instead of hardcoding duplicate labels and hrefs, preserving each item's icon
and external-link behavior. Keep the desktop navigation unchanged and ensure all
current mobile entries remain covered through the shared data.
apps/landing/README.md (2)

1-26: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Replace the untouched starter README.

This still calls the project “Astro Starter Kit: Minimal,” tells maintainers to delete the file, and documents a minimal structure that omits the actual landing routes, components, and configuration. Replace it with urBackend-specific setup, structure, and deployment guidance.

Also applies to: 41-43

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/README.md` around lines 1 - 26, Replace the starter content in
the README with urBackend-specific documentation covering project setup, the
actual landing routes and components, relevant configuration, and deployment
guidance; remove the Astro Starter Kit branding, deletion prompt, and inaccurate
minimal project structure.

32-39: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Document the required background development workflow.

The README points contributors to npm run dev, while the project workflow requires a background server managed with astro dev stop, astro dev status, and astro dev logs. Make the documented command and lifecycle consistent with the supported Astro version. (docs.astro.build)

Based on learnings, Astro development servers must use background mode.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/README.md` around lines 32 - 39, Update the command table in the
README to document the required background Astro development workflow instead of
foreground-only `npm run dev`. Include the supported commands for starting the
background server and managing it with `astro dev stop`, `astro dev status`, and
`astro dev logs`, using syntax compatible with the project’s Astro version.

Source: Learnings

apps/landing/package.json (1)

9-9: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Make the default dev script follow the required lifecycle.

npm run dev currently starts foreground astro dev, so astro dev stop/status/logs cannot manage it. Update this script to the supported background command after resolving the Astro version mismatch, or document a different supported workflow. (docs.astro.build)

Based on learnings, Astro development servers must use background mode.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/package.json` at line 9, Update the package’s dev script from
foreground `astro dev` to Astro’s supported background-mode command so `astro
dev stop/status/logs` can manage the server, after resolving any Astro version
mismatch; alternatively document a supported workflow if background mode cannot
be used.

Source: Learnings

apps/landing/src/layouts/Base.astro (1)

37-44: 🔒 Security & Privacy | 🔵 Trivial | ⚡ Quick win

Escape dynamic JSON-LD before using set:html.

Astro does not escape set:html, and JSON.stringify leaves < unchanged. If description can ever contain non-source-controlled content, a value containing </script> can terminate this block. Verify that all callers are trusted; otherwise escape < to \u003c before injection. (docs.astro.build)

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@apps/landing/src/layouts/Base.astro` around lines 37 - 44, Update the JSON-LD
generation in the Base layout’s application schema to escape dynamic content
before passing it to set:html. Ensure serialized JSON replaces every “<”
character with the safe \u003c escape, while preserving the existing schema
fields and output for trusted values.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@apps/landing/CLAUDE.md`:
- Around line 5-7: Align the landing app’s dev-server workflow with the selected
Astro version by using the supported foreground command rather than
--background. Update apps/landing/CLAUDE.md lines 5-7, apps/landing/package.json
line 9, and apps/landing/README.md lines 32-39 so the documented command, npm
script, and README instructions consistently use the same foreground lifecycle;
apps/landing/AGENTS.md is also cited by the comment and must be updated to
match.

In `@apps/landing/package.json`:
- Line 6: Align the CI/toolchain Node version with the engine and dependency
requirements by updating the relevant CI configuration to Node 22.22.1 or newer,
while preserving the package engine declaration in apps/landing/package.json.
Alternatively, consistently pin dependency and engine versions that support the
existing Node 20.20.2 toolchain.

In `@apps/landing/src/components/Footer.astro`:
- Around line 25-34: Wire the newsletter subscription controls in the Footer
component so the CTA has explicit behavior instead of doing nothing. Add the
minimal user-facing handling around the email input and “Subscribe to
newsletter” button—such as a disabled/coming-soon state or a real submit
handler—and ensure the button’s behavior matches that state.

In `@apps/landing/src/components/Navbar.astro`:
- Around line 22-34: Update the NAV_ITEMS mapping so each item’s icon is
assigned to a capitalized local component variable before rendering. Replace
both <item.icon /> usages in the external and internal link branches with that
variable, preserving the existing icon size and navigation behavior.

In `@apps/landing/src/pages/index.astro`:
- Line 151: Use kebab-case CSS property names in the literal style attributes in
apps/landing/src/pages/index.astro: change zIndex to z-index at lines 151-151
and borderRadius to border-radius at lines 309-309.

---

Nitpick comments:
In `@apps/landing/package.json`:
- Line 9: Update the package’s dev script from foreground `astro dev` to Astro’s
supported background-mode command so `astro dev stop/status/logs` can manage the
server, after resolving any Astro version mismatch; alternatively document a
supported workflow if background mode cannot be used.

In `@apps/landing/README.md`:
- Around line 1-26: Replace the starter content in the README with
urBackend-specific documentation covering project setup, the actual landing
routes and components, relevant configuration, and deployment guidance; remove
the Astro Starter Kit branding, deletion prompt, and inaccurate minimal project
structure.
- Around line 32-39: Update the command table in the README to document the
required background Astro development workflow instead of foreground-only `npm
run dev`. Include the supported commands for starting the background server and
managing it with `astro dev stop`, `astro dev status`, and `astro dev logs`,
using syntax compatible with the project’s Astro version.

In `@apps/landing/src/components/Footer.astro`:
- Line 3: Update the ADMIN_EMAIL constant in Footer.astro to use a configurable
contact value or a company-domain alias instead of the hardcoded personal Gmail
address, and ensure the public mailto link continues using that value. Keep the
existing footer behavior while allowing the contact channel to be rotated
without changing source code.

In `@apps/landing/src/components/MagicBento/MagicBento.jsx`:
- Around line 12-49: Remove the unused cardData array from MagicBento.jsx,
leaving the component’s existing (cards || APP_SERVICES) rendering path
unchanged and relying on the service definitions in services.jsx.

In `@apps/landing/src/components/Navbar.astro`:
- Around line 4-9: Update the mobile overlay rendering to iterate over the
existing NAV_ITEMS collection instead of hardcoding duplicate labels and hrefs,
preserving each item's icon and external-link behavior. Keep the desktop
navigation unchanged and ensure all current mobile entries remain covered
through the shared data.

In `@apps/landing/src/layouts/Base.astro`:
- Around line 37-44: Update the JSON-LD generation in the Base layout’s
application schema to escape dynamic content before passing it to set:html.
Ensure serialized JSON replaces every “<” character with the safe \u003c escape,
while preserving the existing schema fields and output for trusted values.

In `@apps/landing/src/pages/pricing.astro`:
- Around line 35-38: Update the BaseLayout invocation in the pricing page to
explicitly provide the route’s canonicalUrl for /pricing, using the project’s
established canonical URL format. Keep the existing title and description
unchanged.

In `@apps/landing/src/styles/landing.css`:
- Line 107: Update the styles in landing.css to satisfy the configured stylelint
rules: rename all camelCase keyframes, including pulseGlow, to kebab-case and
update every corresponding animation reference; remove unnecessary quotes around
the Inter font family; fix the flagged declaration-empty-line-before violations;
and remove or explicitly disable the ::-moz-selection vendor-prefixed selector.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 40f9dacc-5c38-45d6-aa9f-665a9322b498

📥 Commits

Reviewing files that changed from the base of the PR and between a251cf3 and 804080e.

⛔ Files ignored due to path filters (4)
  • apps/landing/public/LOGO_SQ.png is excluded by !**/*.png
  • apps/landing/public/favicon.ico is excluded by !**/*.ico
  • apps/landing/public/favicon.svg is excluded by !**/*.svg
  • apps/landing/public/logo.png is excluded by !**/*.png
📒 Files selected for processing (25)
  • apps/landing/.gitignore
  • apps/landing/.vscode/extensions.json
  • apps/landing/.vscode/launch.json
  • apps/landing/AGENTS.md
  • apps/landing/CLAUDE.md
  • apps/landing/README.md
  • apps/landing/astro.config.mjs
  • apps/landing/package.json
  • apps/landing/public/robots.txt
  • apps/landing/src/components/BorderGlow/BorderGlow.css
  • apps/landing/src/components/BorderGlow/BorderGlow.jsx
  • apps/landing/src/components/Footer.astro
  • apps/landing/src/components/Hyperspeed/Hyperspeed.css
  • apps/landing/src/components/Hyperspeed/Hyperspeed.jsx
  • apps/landing/src/components/MagicBento/MagicBento.css
  • apps/landing/src/components/MagicBento/MagicBento.jsx
  • apps/landing/src/components/Navbar.astro
  • apps/landing/src/components/OrbitSection.jsx
  • apps/landing/src/components/StudioReplay.jsx
  • apps/landing/src/data/services.jsx
  • apps/landing/src/layouts/Base.astro
  • apps/landing/src/pages/index.astro
  • apps/landing/src/pages/pricing.astro
  • apps/landing/src/styles/landing.css
  • apps/landing/tsconfig.json

Comment thread apps/landing/CLAUDE.md Outdated
Comment thread apps/landing/package.json Outdated
Comment thread apps/landing/src/components/Footer.astro
Comment thread apps/landing/src/components/Navbar.astro Outdated
Comment thread apps/landing/src/pages/index.astro Outdated
@yash-pouranik
yash-pouranik merged commit 799b38c into main Jul 23, 2026
10 checks passed
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.

1 participant