diff --git a/public/products/stormcom-dashboard.png b/public/products/stormcom-dashboard.png new file mode 100644 index 0000000..adaaeac Binary files /dev/null and b/public/products/stormcom-dashboard.png differ diff --git a/src/app/page.tsx b/src/app/page.tsx index 02f7f6c..2b91580 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -6,6 +6,7 @@ import { Stack } from "@/components/ui/stack" import { Logo } from "@/components/ui/logo" import { ArrowRightIcon, GitHubLogoIcon } from "@radix-ui/react-icons" import ProjectsSection from "@/components/home/projects-section" +import ProductsSection from "@/components/home/products-section" import TeamMembersSection from "@/components/home/team-members-section" export default function Home() { @@ -94,6 +95,9 @@ export default function Home() { {/* Projects Section */} + {/* Products Section */} + + {/* Team Members Section */} diff --git a/src/components/home/products-section.tsx b/src/components/home/products-section.tsx new file mode 100644 index 0000000..84f43d8 --- /dev/null +++ b/src/components/home/products-section.tsx @@ -0,0 +1,249 @@ +"use client" + +import { useState } from "react" +import Image from "next/image" +import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card" +import { Container } from "@/components/ui/container" +import { Typography } from "@/components/ui/typography" +import { Grid } from "@/components/ui/grid" +import { Stack } from "@/components/ui/stack" +import { Button } from "@/components/ui/button" +import { + Dialog, + DialogContent, + DialogDescription, + DialogHeader, + DialogTitle, + DialogTrigger, +} from "@/components/ui/dialog" +import { ExternalLinkIcon, RocketIcon } from "@radix-ui/react-icons" + +// Product data interface - easily extensible for more products +interface Product { + id: string + name: string + tagline: string + shortDescription: string + fullDescription: string + features: string[] + productUrl: string + dashboardImage: string + status: "active" | "coming-soon" | "beta" + category: string +} + +// Products data - add more products here as they are developed +const products: Product[] = [ + { + id: "stormcom", + name: "StormCom", + tagline: "AI-Powered E-commerce Platform", + shortDescription: "A comprehensive AI-based SaaS solution designed to empower e-commerce vendors of all sizes with intelligent analytics, automated operations, and data-driven insights.", + fullDescription: `StormCom is a next-generation AI-powered e-commerce management platform built for modern online businesses. Whether you're a small boutique store or a large-scale enterprise, StormCom provides the tools you need to streamline operations, boost sales, and make smarter business decisions. + +Our platform leverages cutting-edge artificial intelligence to analyze your store's performance, predict trends, and automate repetitive tasks—giving you more time to focus on what matters most: growing your business. + +With real-time dashboards, intelligent reporting, and seamless integrations, StormCom transforms the way you manage your online store.`, + features: [ + "Real-time Revenue & Order Analytics", + "AI-Powered Sales Predictions", + "Smart Inventory Management", + "Customer Behavior Insights", + "Multi-Store Management", + "Automated Marketing Campaigns", + "Advanced Reporting & Data Export", + "Team Collaboration Tools", + "Secure Document Management", + "24/7 Performance Monitoring" + ], + productUrl: "https://codestormhub.live", + dashboardImage: "/products/stormcom-dashboard.png", + status: "active", + category: "E-commerce" + }, + // Add more products here as they are developed + // { + // id: "another-product", + // name: "Product Name", + // ... + // } +] + +interface ProductsSectionProps { + className?: string +} + +export default function ProductsSection({ className }: ProductsSectionProps) { + const [selectedProduct, setSelectedProduct] = useState(null) + + return ( +
+ + + {/* Section Header */} + +
+ + Our Products +
+ + Products We've Built + + + Discover our suite of AI-powered products designed to solve real-world business challenges and drive growth + +
+ + {/* Products Grid */} + + {products.map((product) => ( + + + {/* Product Preview Image */} +
+
+
+
+
+ +
+ {product.name} +
+
+ {/* Status Badge */} +
+ + {product.status === "active" ? "● Live" : product.status === "beta" ? "● Beta" : "Coming Soon"} + +
+
+ + + +
+ {product.name} + + {product.category} + +
+ {product.tagline} +
+
+ + + + + {product.shortDescription} + + + {/* Action Buttons */} +
+ + + + +
+
+
+ + + {/* Product Detail Modal */} + + +
+
+ +
+
+ {product.name} + + {product.tagline} + +
+
+
+ +
+ {/* Dashboard Screenshot */} +
+ {`${product.name} +
+ + {/* Description */} +
+

About {product.name}

+
+ {product.fullDescription} +
+
+ + {/* Features Grid */} +
+

Key Features

+
+ {product.features.map((feature, index) => ( +
+
+ {feature} +
+ ))} +
+
+ + {/* CTA */} + +
+ +
+ ))} +
+
+
+
+ ) +} + +export type { ProductsSectionProps, Product } diff --git a/src/components/ui/dialog.tsx b/src/components/ui/dialog.tsx new file mode 100644 index 0000000..2844f05 --- /dev/null +++ b/src/components/ui/dialog.tsx @@ -0,0 +1,122 @@ +"use client" + +import * as React from "react" +import * as DialogPrimitive from "@radix-ui/react-dialog" +import { Cross2Icon } from "@radix-ui/react-icons" + +import { cn } from "@/lib/utils" + +const Dialog = DialogPrimitive.Root + +const DialogTrigger = DialogPrimitive.Trigger + +const DialogPortal = DialogPrimitive.Portal + +const DialogClose = DialogPrimitive.Close + +const DialogOverlay = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogOverlay.displayName = DialogPrimitive.Overlay.displayName + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +}