diff --git a/package-lock.json b/package-lock.json
index 095d3df..066734f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@google/generative-ai": "^0.24.1",
+ "lucide-react": "^0.563.0",
"next": "16.1.6",
"octokit": "^5.0.5",
"react": "19.2.4",
@@ -5573,6 +5574,15 @@
"yallist": "^3.0.2"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.563.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.563.0.tgz",
+ "integrity": "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
diff --git a/package.json b/package.json
index d984c9f..f7cf36d 100644
--- a/package.json
+++ b/package.json
@@ -10,6 +10,7 @@
},
"dependencies": {
"@google/generative-ai": "^0.24.1",
+ "lucide-react": "^0.563.0",
"next": "16.1.6",
"octokit": "^5.0.5",
"react": "19.2.4",
diff --git a/src/app/page.tsx b/src/app/page.tsx
index 295f8fd..81409f9 100644
--- a/src/app/page.tsx
+++ b/src/app/page.tsx
@@ -1,65 +1,31 @@
-import Image from "next/image";
+import { Navbar } from '@/components/layout/Navbar';
+import { Hero } from '@/components/sections/Hero';
+import { Features } from '@/components/sections/Features';
+import { Footer } from '@/components/layout/Footer';
+import { Code, Layout, FileText } from 'lucide-react';
export default function Home() {
+ const navLinks = [
+ { name: 'Home', href: '#' },
+ { name: 'Features', href: '#features' },
+ { name: 'Examples', href: '#examples' },
+ { name: 'Docs', href: '#docs' },
+ ];
+
+ const featureList = [
+ { icon: , title: "Context Awareness", desc: "Detects frameworks and dependencies automatically." },
+ { icon: , title: "Clean Templates", desc: "Formatted Markdown following GitHub best practices." },
+ { icon: , title: "AI Optimization", desc: "Optimized for project clarity and searchability." },
+ ];
+
return (
-
-
-
-
-
- To get started, edit the page.tsx file.
-
-
- Looking for a starting point or more instructions? Head over to{" "}
-
- Templates
- {" "}
- or the{" "}
-
- Learning
- {" "}
- center.
-
-
-
+
+
+
+
+
+
);
-}
+}
\ No newline at end of file
diff --git a/src/components/layout/Footer.tsx b/src/components/layout/Footer.tsx
new file mode 100644
index 0000000..21c907b
--- /dev/null
+++ b/src/components/layout/Footer.tsx
@@ -0,0 +1,29 @@
+import { Github } from 'lucide-react';
+
+export const Footer = () => (
+
+);
\ No newline at end of file
diff --git a/src/components/layout/Navbar.tsx b/src/components/layout/Navbar.tsx
new file mode 100644
index 0000000..5c9c8f1
--- /dev/null
+++ b/src/components/layout/Navbar.tsx
@@ -0,0 +1,89 @@
+"use client";
+import React, { useState, useEffect } from 'react';
+import { Menu, X, Github } from 'lucide-react';
+import { Button } from '../ui/Button';
+
+export const Navbar = ({ links }: { links: { name: string; href: string }[] }) => {
+ const [isMenuOpen, setIsMenuOpen] = useState(false);
+ const [scrolled, setScrolled] = useState(false);
+
+ useEffect(() => {
+ const handleScroll = () => setScrolled(window.scrollY > 20);
+ window.addEventListener('scroll', handleScroll);
+ return () => window.removeEventListener('scroll', handleScroll);
+ }, []);
+
+ return (
+
+ );
+};
\ No newline at end of file
diff --git a/src/components/sections/Features.tsx b/src/components/sections/Features.tsx
new file mode 100644
index 0000000..da8c05e
--- /dev/null
+++ b/src/components/sections/Features.tsx
@@ -0,0 +1,32 @@
+import React from 'react';
+
+interface FeatureItem {
+ icon: React.ReactNode;
+ title: string;
+ desc: string;
+}
+
+export const Features = ({ items }: { items: FeatureItem[] }) => (
+
+
+
+ {items.map((feature, idx) => (
+
+
+ {feature.icon}
+
+
+ {feature.title}
+
+
+ {feature.desc}
+
+
+ ))}
+
+
+
+);
\ No newline at end of file
diff --git a/src/components/sections/Hero.tsx b/src/components/sections/Hero.tsx
new file mode 100644
index 0000000..1b26d30
--- /dev/null
+++ b/src/components/sections/Hero.tsx
@@ -0,0 +1,32 @@
+import React from 'react';
+import { Zap, ArrowRight } from 'lucide-react';
+import { Button } from '../ui/Button';
+import { TerminalMockup } from './TerminalMockup';
+
+export const Hero = () => (
+
+
+
+
+
+ v2.0: Now with real-time codebase context
+
+
+ Ship documentation
+ as fast as your code.
+
+
+ ReadmeGenAI scans your repository and crafts professional README files automatically.
+
+
+
+
+
+
+
+
+);
\ No newline at end of file
diff --git a/src/components/sections/TerminalMockup.tsx b/src/components/sections/TerminalMockup.tsx
new file mode 100644
index 0000000..827a66d
--- /dev/null
+++ b/src/components/sections/TerminalMockup.tsx
@@ -0,0 +1,45 @@
+import React from 'react';
+
+export const TerminalMockup = () => (
+
+
+ {/* Terminal Header */}
+
+
+
+ bash — readme-generator
+
+
+
+ {/* Terminal Content */}
+
+
+ ➜
+ npx readmegenai init
+
+
+
+
+ ● Analyzing codebase...
+
+
✓ Detected Next.js 15 & TailwindCSS
+
✓ Parsed 14 API endpoints
+
✓ Metadata successfully pulled from Octokit
+
+
+
+
✨ README.md generated successfully!
+
+
+
+ ➜
+
+
+
+
+
+);
\ No newline at end of file
diff --git a/src/components/ui/Button.tsx b/src/components/ui/Button.tsx
new file mode 100644
index 0000000..d148411
--- /dev/null
+++ b/src/components/ui/Button.tsx
@@ -0,0 +1,23 @@
+import React from 'react';
+
+interface ButtonProps extends React.ButtonHTMLAttributes {
+ variant?: 'primary' | 'outline' | 'ghost';
+ children: React.ReactNode;
+}
+
+export const Button = ({ children, variant = 'primary', className = '', ...props }: ButtonProps) => {
+ const variants = {
+ primary: 'bg-white text-black hover:bg-gray-200',
+ outline: 'bg-transparent border border-white/10 hover:bg-white/5 text-white',
+ ghost: 'bg-transparent hover:text-white text-gray-400',
+ };
+
+ return (
+
+ );
+};
\ No newline at end of file