diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 35c504a..d5d3c50 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,55 +1,45 @@ import type { Metadata } from "next"; -import { Halant } from "next/font/google"; import { Inter } from "next/font/google"; -import { Raleway } from "next/font/google"; import "./globals.css"; import { ServiceWrapper } from "@/components/ServiceWrapper"; import Tag from "@/tag/Tag"; -const halant = Halant({ - variable: "--font-halant", subsets: ["latin"], - weight: ["300", "400", "500", "600", "700"], -}); - const inter = Inter({ variable: "--font-inter", subsets: ["latin"], }); -const raleway = Raleway({ - variable: "--font-raleway", subsets: ["latin"], -}); - export const metadata: Metadata = { title: "Dataset Cleaner - Privacy-First Data Cleaning Tool", description: "Clean, validate, and transform your datasets with Dataset Cleaner. 100% browser-based, no data leaves your computer. Remove duplicates, trim whitespace, handle special characters with AI-powered precision.", keywords: "data cleaning, data validation, dataset tool, CSV cleaner, data quality, AI cleaning, browser-based", metadataBase: new URL("https://datasetcleaner.com"), alternates: { - canonical: "https://datasetcleaner.com"}, + canonical: "https://datasetcleaner.com" + }, openGraph: { title: "Dataset Cleaner - Privacy-First Data Cleaning Tool", description: "Clean your datasets with confidence. 100% private, browser-based data cleaning powered by AI.", url: "https://datasetcleaner.com", siteName: "Dataset Cleaner", type: "website", images: [ { - url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUGg4tVcwa1xJbmjLxOEngSK3W/a-modern-professional-software-dashboard-1772640055925-4dba2f06.png", alt: "Dataset Cleaner Dashboard"}, - ], + url: "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUGg4tVcwa1xJbmjLxOEngSK3W/a-modern-professional-software-dashboard-1772640055925-4dba2f06.png", alt: "Dataset Cleaner Dashboard" + } + ] }, twitter: { card: "summary_large_image", title: "Dataset Cleaner - Privacy-First Data Cleaning", description: "Clean your datasets with confidence. 100% private, browser-based data cleaning powered by AI.", images: [ - "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUGg4tVcwa1xJbmjLxOEngSK3W/a-modern-professional-software-dashboard-1772640055925-4dba2f06.png"], + "https://webuild-dev.s3.eu-north-1.amazonaws.com/users/user_3AUGg4tVcwa1xJbmjLxOEngSK3W/a-modern-professional-software-dashboard-1772640055925-4dba2f06.png" + ] }, robots: { index: true, - follow: true, - }, + follow: true + } }; export default function RootLayout({ - children, + children }: Readonly<{ children: React.ReactNode; }>) { return ( - + {children} diff --git a/src/app/page.tsx b/src/app/page.tsx index 981746e..4e7bc40 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,5 +1,6 @@ "use client" +import { useState } from "react"; import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; import NavbarStyleFullscreen from '@/components/navbar/NavbarStyleFullscreen/NavbarStyleFullscreen'; import HeroBillboardGallery from '@/components/sections/hero/HeroBillboardGallery'; @@ -7,9 +8,62 @@ import FeatureCardTwentyOne from '@/components/sections/feature/FeatureCardTwent import ContactSplitForm from '@/components/sections/contact/ContactSplitForm'; import TestimonialCardThirteen from '@/components/sections/testimonial/TestimonialCardThirteen'; import FooterMedia from '@/components/sections/footer/FooterMedia'; -import { Shield, Sparkles, Star } from 'lucide-react'; +import { Shield, Sparkles, Star, Upload, Download, Zap, Lock, RefreshCw, AlertCircle } from 'lucide-react'; export default function LandingPage() { + const [tokenValue, setTokenValue] = useState(""); + const [datasetId, setDatasetId] = useState(""); + const [verificationStatus, setVerificationStatus] = useState<"idle" | "verified" | "invalid">("idle"); + const [cleaningProgress, setCleaningProgress] = useState(0); + const [selectedCleaningOptions, setSelectedCleaningOptions] = useState([]); + const [isProcessing, setIsProcessing] = useState(false); + + const handleTokenVerification = () => { + if (tokenValue && tokenValue.length >= 8) { + setVerificationStatus("verified"); + } else { + setVerificationStatus("invalid"); + } + }; + + const handleDatasetFetch = () => { + if (datasetId && verificationStatus === "verified") { + // Simulate dataset fetch + console.log("Fetching dataset:", datasetId); + } + }; + + const handleCleaningOptionToggle = (option: string) => { + setSelectedCleaningOptions(prev => + prev.includes(option) + ? prev.filter(o => o !== option) + : [...prev, option] + ); + }; + + const handleStartCleaning = () => { + if (selectedCleaningOptions.length === 0) return; + + setIsProcessing(true); + setCleaningProgress(0); + + // Simulate cleaning pipeline with progress tracking + const interval = setInterval(() => { + setCleaningProgress(prev => { + if (prev >= 100) { + clearInterval(interval); + setIsProcessing(false); + return 100; + } + return prev + Math.random() * 30; + }); + }, 500); + }; + + const handleDownloadOutput = () => { + console.log("Downloading cleaned dataset..."); + }; + return (
- +
+
+ {/* Token Integration Section */} +
+
+ +

Token Verification & Integration

+
+
+
+ + setTokenValue(e.target.value)} + placeholder="Enter your API token" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" + /> +
+
+ + setDatasetId(e.target.value)} + placeholder="Enter dataset ID" + className="w-full px-4 py-2 border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" + /> +
+
+
+ + +
+ {verificationStatus === "verified" && ( +
+ + Token verified successfully! +
+ )} + {verificationStatus === "invalid" && ( +
+ + Invalid token or insufficient length +
+ )} +
+ + {/* Cleaning Options Section */} +
+
+ +

Cleaning Pipeline Configuration

+
+
+ {[ + { id: "duplicates", label: "Remove Duplicates", icon: RefreshCw }, + { id: "whitespace", label: "Whitespace Normalization", icon: Zap }, + { id: "repeated", label: "Remove Repeated Values", icon: RefreshCw }, + { id: "special", label: "Special Characters Removal", icon: AlertCircle }, + { id: "formatting", label: "Format Standardization", icon: Zap }, + { id: "encoding", label: "Character Encoding Fix", icon: Zap } + ].map(option => { + const IconComponent = option.icon; + return ( + + ); + })} +
+ +
+ + {/* Progress Tracking Section */} + {isProcessing && ( +
+
+ +

Cleaning Progress

+
+
+
+
+ Overall Progress + {Math.round(cleaningProgress)}% +
+
+
+
+
+
+ {selectedCleaningOptions.map(option => ( +
+
{option.replace(/([A-Z])/g, ' $1').trim()}
+
In progress...
+
+ ))} +
+
+
+ )} + + {/* Download Section */} + {cleaningProgress === 100 && ( +
+
+ +

Download Cleaned Dataset

+
+

Your dataset has been successfully cleaned! Choose your preferred format to download.

+
+ {["CSV", "XLSX", "JSON", "XML"].map(format => ( + + ))} +
+
+ )} +
+
@@ -139,7 +333,7 @@ export default function LandingPage() { logoText="Dataset Cleaner" copyrightText="© 2025 Dataset Cleaner. All rights reserved." columns={[ - { title: "Product", items: [{ label: "Features", href: "#features" }, { label: "Pricing", href: "#pricing" }, { label: "Documentation", href: "https://docs.datasetcleaner.com" }, { label: "API Reference", href: "https://api.datasetcleaner.com" }] }, + { title: "Product", items: [{ label: "Features", href: "#features" }, { label: "Documentation", href: "#docs" }, { label: "API Reference", href: "https://api.datasetcleaner.com" }, { label: "Status", href: "https://status.datasetcleaner.com" }] }, { title: "Company", items: [{ label: "About Us", href: "#about" }, { label: "Blog", href: "https://blog.datasetcleaner.com" }, { label: "Careers", href: "#careers" }, { label: "Contact", href: "#contact" }] }, { title: "Legal", items: [{ label: "Privacy Policy", href: "#privacy" }, { label: "Terms of Service", href: "#terms" }, { label: "Cookie Policy", href: "#cookies" }, { label: "Security", href: "https://security.datasetcleaner.com" }] } ]}