Skip to content

new landing page#75

Closed
KMKoushik wants to merge 2 commits intomainfrom
landing-page
Closed

new landing page#75
KMKoushik wants to merge 2 commits intomainfrom
landing-page

Conversation

@KMKoushik
Copy link
Copy Markdown
Member

@KMKoushik KMKoushik commented Oct 19, 2024

Summary by CodeRabbit

  • New Features

    • Introduced a new landing page with a modern layout, including a main heading, subheading, call-to-action buttons, and an embedded promotional video.
    • Added reusable Card and Layout components for consistent page structure and styling.
    • Enabled Tailwind CSS and React integration for enhanced styling and component support.
  • Documentation

    • Added a comprehensive README with setup instructions, project structure overview, and useful links.
  • Chores

    • Added configuration files for Astro, Tailwind CSS, TypeScript, and recommended VS Code extensions.
    • Included a .gitignore to manage unnecessary files in version control.

new landing page

landing tings
@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Aug 2, 2025

Walkthrough

This update introduces a new Astro-based landing page application under apps/landing. It adds configuration files for Astro, Tailwind CSS, and TypeScript, as well as project metadata, a .gitignore, and recommended VSCode extensions. The update also includes a README, a layout component, a card component, and a landing page with structured content and embedded media.

Changes

Cohort / File(s) Change Summary
VSCode Extension Recommendations
.vscode/extensions.json
Adds recommended VSCode extension (astro-build.astro-vscode) and specifies no unwanted extensions.
Git Ignore for Landing App
apps/landing/.gitignore
Adds ignore rules for build outputs, dependencies, logs, environment files, and IDE configs.
Landing App Documentation
apps/landing/README.md
Adds a README with project overview, usage instructions, structure, and resource links.
Astro Configuration
apps/landing/astro.config.mjs
Adds Astro config enabling Tailwind CSS and React integrations.
Landing App Package Metadata
apps/landing/package.json
Adds project metadata, scripts, and dependencies for the landing app.
Astro Components
apps/landing/src/components/Card.astro, apps/landing/src/layouts/Layout.astro
Adds a Card component (with title, body, href props) and a Layout component (with title prop, header, navigation, and slot for content).
Landing Page Implementation
apps/landing/src/pages/index.astro
Adds main landing page using Layout, with headings, CTAs, and embedded video.
TypeScript and Tailwind Setup
apps/landing/tsconfig.json, apps/landing/tailwind.config.ts, apps/landing/src/env.d.ts
Adds TypeScript config (React JSX support), Tailwind config (content paths), and Astro type reference for TypeScript.

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant Browser
    participant AstroApp
    participant LayoutComponent
    participant CardComponent

    User->>Browser: Navigate to landing page
    Browser->>AstroApp: Request /
    AstroApp->>LayoutComponent: Render with title "Unsend"
    LayoutComponent->>AstroApp: Render slot content (main page)
    AstroApp->>Browser: Return HTML (with layout, content, video, etc.)
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Poem

In the meadow of code, a landing appears,
Astro and Tailwind—no bugs, only cheers!
Cards and layouts, all shiny and new,
With configs and docs to help guide you through.
A rabbit hops by, with a wink and a grin:
“Review’s a breeze—let’s dive right in!” 🐇✨

Note

⚡️ Unit Test Generation is now available in beta!

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

✨ Finishing Touches
  • 📝 Generate Docstrings
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch landing-page

🪧 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.

Copy link
Copy Markdown
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: 7

🔭 Outside diff range comments (1)
apps/landing/README.md (1)

1-55: Customize README for the Unsend landing page project.

This appears to be the default Astro starter template README. Consider customizing it to reflect the actual Unsend landing page project, including its specific purpose, features, and setup instructions.

Also address the style suggestions from static analysis:

  • Line 17: Use "Inside" instead of "Inside of"
  • Line 54: Consider a more professional alternative to "Feel free to"
- # Astro Starter Kit: Basics
+ # Unsend Landing Page
+ 
+ This is the landing page for Unsend, an open source sending infrastructure for transactional emails, marketing campaigns, and newsletters.

- Inside of your Astro project, you'll see the following folders and files:
+ Inside your Astro project, you'll see the following folders and files:

- Feel free to check [our documentation](https://docs.astro.build) or jump into our [Discord server](https://astro.build/chat).
+ Check [our documentation](https://docs.astro.build) or join our [Discord server](https://astro.build/chat) to learn more.
🧹 Nitpick comments (8)
apps/landing/.gitignore (2)

16-19: Use a wildcard to ignore all dotenv variants

Developers often create multiple environment files (.env.local, .env.development, etc.). A single wildcard keeps the list future-proof and avoids accidental commits of new variants.

-# environment variables
-.env
-.env.production
+# environment variables
+.env*

23-24: Consider ignoring editor settings for VS Code as well

The repo already excludes JetBrains settings; adding .vscode/ prevents accidental commits of per-user VS Code configs.

 # jetbrains setting folder
 .idea/
+# vscode setting folder
+.vscode/
.vscode/extensions.json (1)

1-4: Consider broadening the recommended extension set
Including Tailwind CSS IntelliSense (bradlc.vscode-tailwindcss) and ESLint (dbaeumer.vscode-eslint) would give contributors autocomplete and lint-on-save out of the box for the two major technologies used in this app.

apps/landing/astro.config.mjs (1)

1-11: Config is minimal but functional – optional site metadata
If this landing page will eventually be deployed with an absolute URL, consider adding a site field (e.g. site: "https://example.com") now, as several Astro features (sitemaps, RSS, canonical tags) depend on it.

apps/landing/tailwind.config.ts (1)

1-5: Enable explicit dark-mode strategy early
Deciding between "media" and "class" up front prevents churn once styles proliferate. Example:

 export default {
   content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}"],
+  darkMode: "class",
 } satisfies Config;

Adjust if a media-query driven theme is preferred.

apps/landing/package.json (1)

12-25: Consider moving development dependencies to devDependencies.

Some packages like @astrojs/check, @types/react, @types/react-dom, and typescript are typically used only during development and should be in devDependencies rather than dependencies.

   "dependencies": {
-    "@astrojs/check": "^0.9.4",
     "@astrojs/react": "^3.6.2",
     "@astrojs/tailwind": "^5.1.2",
-    "@types/react": "^18.3.11",
-    "@types/react-dom": "^18.3.1",
     "@unsend/tailwind-config": "workspace:*",
     "astro": "^4.16.5",
     "lucide-react": "^0.359.0",
     "react": "^18.3.1",
     "react-dom": "^18.3.1",
     "tailwindcss": "^3.4.14",
-    "typescript": "^5.6.3"
+  },
+  "devDependencies": {
+    "@astrojs/check": "^0.9.4",
+    "@types/react": "^18.3.11",
+    "@types/react-dom": "^18.3.1",
+    "typescript": "^5.6.3"
   }
apps/landing/src/pages/index.astro (1)

3-3: Remove unused import.

The Card component is imported but never used in this page.

 ---
 import Layout from "../layouts/Layout.astro";
-import Card from "../components/Card.astro";
 ---
apps/landing/src/components/Card.astro (1)

11-21: Add accessibility improvements to the card component.

Consider adding accessibility attributes for better screen reader support.

 <li class="link-card">
-	<a href={href}>
+	<a href={href} aria-describedby={`card-${title.replace(/\s+/g, '-').toLowerCase()}`}>
 		<h2>
 			{title}
 			<span>&rarr;</span>
 		</h2>
-		<p>
+		<p id={`card-${title.replace(/\s+/g, '-').toLowerCase()}`}>
 			{body}
 		</p>
 	</a>
 </li>
📜 Review details

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

📥 Commits

Reviewing files that changed from the base of the PR and between 93987ed and 711b5b7.

⛔ Files ignored due to path filters (2)
  • apps/landing/public/favicon.ico is excluded by !**/*.ico
  • pnpm-lock.yaml is excluded by !**/pnpm-lock.yaml
📒 Files selected for processing (11)
  • .vscode/extensions.json (1 hunks)
  • apps/landing/.gitignore (1 hunks)
  • apps/landing/README.md (1 hunks)
  • apps/landing/astro.config.mjs (1 hunks)
  • apps/landing/package.json (1 hunks)
  • apps/landing/src/components/Card.astro (1 hunks)
  • apps/landing/src/env.d.ts (1 hunks)
  • apps/landing/src/layouts/Layout.astro (1 hunks)
  • apps/landing/src/pages/index.astro (1 hunks)
  • apps/landing/tailwind.config.ts (1 hunks)
  • apps/landing/tsconfig.json (1 hunks)
🧰 Additional context used
🪛 LanguageTool
apps/landing/README.md

[style] ~16-~16: This phrase is redundant. Consider using “Inside”.
Context: ...2d67b1d7c554) ## 🚀 Project Structure Inside of your Astro project, you'll see the foll...

(OUTSIDE_OF)


[style] ~53-~53: Consider using a less common alternative to make your writing sound more unique and professional.
Context: ... | ## 👀 Want to learn more? Feel free to check [our documentation](https://docs....

(FEEL_FREE_TO_STYLE_ME)

🔇 Additional comments (1)
apps/landing/tsconfig.json (1)

1-7: LGTM – strict base plus React JSX is correctly configured
No issues detected.

Comment on lines +56 to +60
background-image: var(--accent-gradient);
}
.link-card:is(:hover, :focus-within) h2 {
color: rgb(var(--accent-light));
}
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.

💡 Verification agent

🧩 Analysis chain

Verify CSS variable definitions.

The component references CSS variables --accent-gradient and --accent-light that aren't defined in this file. Ensure these are defined globally or in a parent component.


🏁 Script executed:

#!/bin/bash
# Search for CSS variable definitions in the project
rg -g "*.css" -g "*.astro" -g "*.tsx" -g "*.ts" "\-\-accent\-(gradient|light)" apps/landing/

Length of output: 251


🏁 Script executed:

#!/bin/bash
# Search entire repository for CSS variable declarations for accent-gradient and accent-light
rg -g '*.css' -g '*.astro' -g '*.tsx' -g '*.ts' "\-\-(accent-gradient|accent-light)\s*:" -n .

Length of output: 95


Define missing CSS variables
We couldn’t locate any --accent-gradient or --accent-light definitions in the repo. You should add them to your global styles (e.g. in :root), a theme file, or the parent layout so these fallbacks exist at runtime.

• Add something like:

:root {
  --accent-gradient: linear-gradient(45deg, #f06, #4a90e2);
  --accent-light: 255, 255, 255;
}

• Ensure your global CSS is loaded before Card.astro renders.

🤖 Prompt for AI Agents
In apps/landing/src/components/Card.astro around lines 56 to 60, the CSS
variables --accent-gradient and --accent-light are used but not defined anywhere
in the repo. To fix this, define these variables in a global stylesheet or a
parent layout file within a :root selector, for example, setting
--accent-gradient to a linear gradient and --accent-light to an RGB color value.
Also, ensure this global CSS file is imported and loaded before Card.astro
renders so the variables are available at runtime.

Comment thread apps/landing/src/env.d.ts
@@ -0,0 +1 @@
/// <reference path="../.astro/types.d.ts" /> No newline at end of file
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.

🛠️ Refactor suggestion

Missing global Astro typings reference
Many official templates add

/// <reference types="astro/client" />

Without it, editors may not resolve astro/client helpers (e.g. Image Service typings), leading to red squiggles even if the project still builds.

 /// <reference path="../.astro/types.d.ts" />
+/// <reference types="astro/client" />
🤖 Prompt for AI Agents
In apps/landing/src/env.d.ts at line 1, add the line /// <reference
types="astro/client" /> to include global Astro typings. This will ensure
editors correctly resolve astro/client helpers and prevent red squiggles related
to missing typings.

Comment on lines +15 to +17
<meta name="description" content="Astro description" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
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.

🛠️ Refactor suggestion

Improve SEO and accessibility.

The meta description is generic and the favicon reference has inconsistent type declaration.

-    <meta name="description" content="Astro description" />
+    <meta name="description" content="Unsend - Open source sending infrastructure for transactional emails, marketing campaigns, and newsletters" />
     <meta name="viewport" content="width=device-width" />
-    <link rel="icon" type="image/svg+xml" href="/favicon.ico" />
+    <link rel="icon" type="image/x-icon" href="/favicon.ico" />
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<meta name="description" content="Astro description" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/svg+xml" href="/favicon.ico" />
<meta name="description" content="Unsend - Open source sending infrastructure for transactional emails, marketing campaigns, and newsletters" />
<meta name="viewport" content="width=device-width" />
<link rel="icon" type="image/x-icon" href="/favicon.ico" />
🤖 Prompt for AI Agents
In apps/landing/src/layouts/Layout.astro around lines 15 to 17, the meta
description is too generic and the favicon link's type attribute is inconsistent
with the file extension. Update the meta description content to a more specific
and relevant description for better SEO, and change the favicon link's type
attribute to match the actual file type, for example "image/x-icon" if the
favicon is an .ico file.

Comment on lines +29 to +44
<a
href="https://docs.unsend.dev"
target="_blank"
class="flex items-center gap-2"
>
<Book className="w-4 h-4" />
<span>Docs</span>
</a>
<li>
<a href="https://github.com/unsend-dev/unsend" target="_blank"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank">Discord</a>
</li>
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.

🛠️ Refactor suggestion

Add accessibility attributes to external links.

External links should include rel="noopener noreferrer" for security and aria-label attributes for better accessibility.

             <a
               href="https://docs.unsend.dev"
               target="_blank"
+              rel="noopener noreferrer"
+              aria-label="Visit Unsend documentation"
               class="flex items-center gap-2"
             >
               <Book className="w-4 h-4" />
               <span>Docs</span>
             </a>
           </li>
           <li>
-            <a href="https://github.com/unsend-dev/unsend" target="_blank"
+            <a href="https://github.com/unsend-dev/unsend" target="_blank" rel="noopener noreferrer" aria-label="Visit Unsend GitHub repository"
               >Github</a
             >
           </li>
           <li>
-            <a href="https://discord.gg/unsend" target="_blank">Discord</a>
+            <a href="https://discord.gg/unsend" target="_blank" rel="noopener noreferrer" aria-label="Join Unsend Discord community">Discord</a>
           </li>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<a
href="https://docs.unsend.dev"
target="_blank"
class="flex items-center gap-2"
>
<Book className="w-4 h-4" />
<span>Docs</span>
</a>
<li>
<a href="https://github.com/unsend-dev/unsend" target="_blank"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank">Discord</a>
</li>
<a
href="https://docs.unsend.dev"
target="_blank"
rel="noopener noreferrer"
aria-label="Visit Unsend documentation"
class="flex items-center gap-2"
>
<Book className="w-4 h-4" />
<span>Docs</span>
</a>
<li>
<a href="https://github.com/unsend-dev/unsend" target="_blank" rel="noopener noreferrer" aria-label="Visit Unsend GitHub repository"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank" rel="noopener noreferrer" aria-label="Join Unsend Discord community">Discord</a>
</li>
🤖 Prompt for AI Agents
In apps/landing/src/layouts/Layout.astro around lines 29 to 44, the external
links lack the rel="noopener noreferrer" attribute for security and aria-label
attributes for accessibility. Add rel="noopener noreferrer" to each external
anchor tag and include descriptive aria-label attributes that clearly indicate
the link destination, improving both security and accessibility.

Comment on lines +37 to +45
<li>
<a href="https://github.com/unsend-dev/unsend" target="_blank"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank">Discord</a>
</li>
</li>
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

Fix invalid HTML structure in navigation.

The navigation has an incorrect HTML structure with nested <li> elements. The first <li> on line 28 is never closed, and subsequent <li> elements are nested inside it.

       <nav>
         <ul class="flex gap-8">
           <li>
             <a
               href="https://docs.unsend.dev"
               target="_blank"
               class="flex items-center gap-2"
             >
               <Book className="w-4 h-4" />
               <span>Docs</span>
             </a>
+          </li>
-            <li>
+          <li>
               <a href="https://github.com/unsend-dev/unsend" target="_blank"
                 >Github</a
               >
             </li>
-            <li>
+          <li>
               <a href="https://discord.gg/unsend" target="_blank">Discord</a>
             </li>
-          </li>
         </ul>
       </nav>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<li>
<a href="https://github.com/unsend-dev/unsend" target="_blank"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank">Discord</a>
</li>
</li>
<nav>
<ul class="flex gap-8">
<li>
<a
href="https://docs.unsend.dev"
target="_blank"
class="flex items-center gap-2"
>
<Book className="w-4 h-4" />
<span>Docs</span>
</a>
</li>
<li>
<a
href="https://github.com/unsend-dev/unsend"
target="_blank"
>Github</a
>
</li>
<li>
<a href="https://discord.gg/unsend" target="_blank">Discord</a>
</li>
</ul>
</nav>
🤖 Prompt for AI Agents
In apps/landing/src/layouts/Layout.astro around lines 37 to 45, the HTML
navigation has improperly nested <li> elements with an unclosed <li> on line 28
causing subsequent <li> tags to be nested inside it. Fix this by ensuring each
<li> element is properly closed before starting the next one, removing any extra
closing </li> tags that cause invalid nesting.

Comment on lines +25 to +27
<button class="bg-white text-black border px-4 py-2 rounded-md">
Star on Github
</button>
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

Make the GitHub button functional.

The "Star on Github" button doesn't have any functionality. It should link to the GitHub repository.

-    <button class="bg-white text-black border px-4 py-2 rounded-md">
+    <a 
+      href="https://github.com/unsend-dev/unsend" 
+      target="_blank" 
+      rel="noopener noreferrer"
+      class="bg-white text-black border px-4 py-2 rounded-md inline-block text-center"
+    >
       Star on Github
-    </button>
+    </a>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<button class="bg-white text-black border px-4 py-2 rounded-md">
Star on Github
</button>
<a
href="https://github.com/unsend-dev/unsend"
target="_blank"
rel="noopener noreferrer"
class="bg-white text-black border px-4 py-2 rounded-md inline-block text-center"
>
Star on Github
</a>
🤖 Prompt for AI Agents
In apps/landing/src/pages/index.astro around lines 25 to 27, the "Star on
Github" button lacks functionality. Wrap the button element in an anchor tag
(<a>) that links to the GitHub repository URL, or add an onClick handler that
opens the GitHub repo in a new tab. This will make the button functional by
directing users to the repository when clicked.

Comment on lines +31 to +33
<video
src="https://unsend.dev/hero.mp4"
class="w-full h-full border rounded-xl shadow-lg"></video>
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.

🛠️ Refactor suggestion

Improve video accessibility and performance.

The video element lacks accessibility attributes and performance optimizations.

     <video
       src="https://unsend.dev/hero.mp4"
-      class="w-full h-full border rounded-xl shadow-lg"></video>
+      class="w-full h-full border rounded-xl shadow-lg"
+      controls
+      preload="metadata"
+      poster="/hero-poster.jpg"
+      aria-label="Unsend product demonstration video"
+    >
+      <track kind="captions" src="/hero-captions.vtt" srclang="en" label="English" />
+      Your browser does not support the video tag.
+    </video>

Consider hosting the video locally in the public/ directory rather than loading from an external URL for better performance and reliability.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<video
src="https://unsend.dev/hero.mp4"
class="w-full h-full border rounded-xl shadow-lg"></video>
<video
src="https://unsend.dev/hero.mp4"
class="w-full h-full border rounded-xl shadow-lg"
controls
preload="metadata"
poster="/hero-poster.jpg"
aria-label="Unsend product demonstration video"
>
<track kind="captions" src="/hero-captions.vtt" srclang="en" label="English" />
Your browser does not support the video tag.
</video>
🤖 Prompt for AI Agents
In apps/landing/src/pages/index.astro around lines 31 to 33, the video element
lacks accessibility attributes and performance optimizations. Add appropriate
accessibility attributes such as aria-label or controls to improve usability.
Also, move the video file to the local public/ directory and update the src
attribute to load it locally for better performance and reliability.

@KMKoushik KMKoushik closed this Aug 31, 2025
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