diff --git a/package-lock.json b/package-lock.json index adf52a1..f4226c5 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2047,7 +2047,6 @@ "integrity": "sha512-+kLxJpaJzXybyDyFXYADyP1cznTO8HSuBpenGlnKOAkH4hyNINiywvXS/tGJhsrGGP/gM185RA3xpjY0Yg4erA==", "devOptional": true, "license": "MIT", - "peer": true, "dependencies": { "csstype": "^3.0.2" } @@ -2058,7 +2057,6 @@ "integrity": "sha512-qXRuZaOsAdXKFyOhRBg6Lqqc0yay13vN7KrIg4L7N4aaHN68ma9OK3NE1BoDFgFOTfM7zg+3/8+2n8rLUH3OKQ==", "devOptional": true, "license": "MIT", - "peer": true, "peerDependencies": { "@types/react": "^19.0.0" } @@ -2109,7 +2107,6 @@ "integrity": "sha512-TGf22kon8KW+DeKaUmOibKWktRY8b2NSAZNdtWh798COm1NWx8+xJ6iFBtk3IvLdv6+LGLJLRlyhrhEDZWargQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@typescript-eslint/scope-manager": "8.45.0", "@typescript-eslint/types": "8.45.0", @@ -2627,7 +2624,6 @@ "integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==", "dev": true, "license": "MIT", - "peer": true, "bin": { "acorn": "bin/acorn" }, @@ -3527,7 +3523,6 @@ "integrity": "sha512-hB4FIzXovouYzwzECDcUkJ4OcfOEkXTv2zRY6B9bkwjx/cprAq0uvm1nl7zvQ0/TsUk0zQiN4uPfJpB9m+rPMQ==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.1", @@ -3702,7 +3697,6 @@ "integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==", "dev": true, "license": "MIT", - "peer": true, "dependencies": { "@rtsao/scc": "^1.1.0", "array-includes": "^3.1.9", @@ -5917,7 +5911,6 @@ "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", "license": "MIT", - "peer": true, "engines": { "node": ">=0.10.0" } @@ -5927,7 +5920,6 @@ "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", "license": "MIT", - "peer": true, "dependencies": { "scheduler": "^0.26.0" }, @@ -6728,7 +6720,6 @@ "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, "license": "MIT", - "peer": true, "engines": { "node": ">=12" }, @@ -6878,7 +6869,6 @@ "integrity": "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A==", "dev": true, "license": "Apache-2.0", - "peer": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" 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/public/products/stormerp-dashboard.png b/public/products/stormerp-dashboard.png new file mode 100644 index 0000000..5ceb6bb Binary files /dev/null and b/public/products/stormerp-dashboard.png differ diff --git a/public/products/stormerp-dashboard.svg b/public/products/stormerp-dashboard.svg new file mode 100644 index 0000000..c412cb1 --- /dev/null +++ b/public/products/stormerp-dashboard.svg @@ -0,0 +1,114 @@ + + + + + + + StormERP + + + + Dashboard + Inventory + Finance + HR & Payroll + Supply Chain + Production + Sales & CRM + Reports + + + + + + Enterprise Dashboard + Overview of your business operations + + + + Total Revenue + $2.4M + ↑ 12.5% from last month + + + Active Orders + 1,847 + ↑ 8.3% from last week + + + Inventory Items + 45,231 + 23 items low stock + + + Employees + 342 + 5 departments + + + + Revenue Overview + + + + + + + + + Jan + Feb + Mar + Apr + May + Jun + Jul + + + + Department Performance + + Manufacturing - 45% + + Sales - 36% + + Logistics - 27% + + Support - 18% + + + + Recent Operations + + + Operation + Department + Status + Value + Time + + + + PO-2024-1847 + Procurement + + Approved + $24,500 + 2 min ago + + + INV-2024-3421 + Finance + + Pending + $8,750 + 15 min ago + + + WO-2024-0892 + Production + + In Progress + 500 units + 1 hour ago + 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..e834567 --- /dev/null +++ b/src/components/home/products-section.tsx @@ -0,0 +1,271 @@ +"use client" + +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" + }, + { + id: "stormerp", + name: "StormERP", + tagline: "Complete Enterprise Resource Planning Solution", + shortDescription: "A powerful cloud-based ERP SaaS platform designed to unify and streamline business operations for manufacturers, retailers, distributors, and service providers.", + fullDescription: `StormERP is a comprehensive enterprise resource planning solution built to help businesses of all sizes manage their entire operation from a single, unified platform. From manufacturing floors to retail storefronts, StormERP adapts to your unique business needs. + +Our cloud-native architecture ensures your team can access critical business data anytime, anywhere. With real-time synchronization across all modules, you'll never miss a beat—whether you're tracking inventory, processing payroll, or analyzing financial performance. + +StormERP eliminates data silos and manual processes, replacing them with automated workflows and intelligent insights. Scale confidently knowing your ERP grows with your business, supporting multiple locations, currencies, and regulatory requirements. + +Built with modern businesses in mind, StormERP integrates seamlessly with your existing tools while providing the flexibility to customize workflows to match your operational requirements.`, + features: [ + "Inventory & Warehouse Management", + "Financial Accounting & Budgeting", + "Human Resources & Payroll", + "Supply Chain Management", + "Customer Relationship Management (CRM)", + "Production Planning & Scheduling", + "Purchase & Vendor Management", + "Sales Order Processing", + "Business Intelligence & Reporting", + "Multi-Location & Multi-Currency Support" + ], + productUrl: "https://codestormhub.live/erp/dashboard", + dashboardImage: "/products/stormerp-dashboard.png", + status: "active", + category: "ERP" + }, +] + +interface ProductsSectionProps { + className?: string +} + +export default function ProductsSection({ className }: ProductsSectionProps) { + 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..07d26d3 --- /dev/null +++ b/src/components/ui/dialog.tsx @@ -0,0 +1,143 @@ +"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 + +type DialogOverlayProps = React.ComponentPropsWithoutRef + +const DialogContent = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, children, ...props }, ref) => ( + + + + {children} + + + Close + + + +)) +DialogContent.displayName = DialogPrimitive.Content.displayName + +type DialogContentProps = React.ComponentPropsWithoutRef + +const DialogHeader = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogHeader.displayName = "DialogHeader" + +type DialogHeaderProps = React.HTMLAttributes + +const DialogFooter = ({ + className, + ...props +}: React.HTMLAttributes) => ( +
+) +DialogFooter.displayName = "DialogFooter" + +type DialogFooterProps = React.HTMLAttributes + +const DialogTitle = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogTitle.displayName = DialogPrimitive.Title.displayName + +type DialogTitleProps = React.ComponentPropsWithoutRef + +const DialogDescription = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef +>(({ className, ...props }, ref) => ( + +)) +DialogDescription.displayName = DialogPrimitive.Description.displayName + +type DialogDescriptionProps = React.ComponentPropsWithoutRef + +export { + Dialog, + DialogPortal, + DialogOverlay, + DialogClose, + DialogTrigger, + DialogContent, + DialogHeader, + DialogFooter, + DialogTitle, + DialogDescription, +} + +export type { + DialogOverlayProps, + DialogContentProps, + DialogHeaderProps, + DialogFooterProps, + DialogTitleProps, + DialogDescriptionProps, +}