diff --git a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx
index 93d4f06..91ad715 100644
--- a/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx
+++ b/frontend/app/(sidebar)/data-pipeline/property-listings/page.tsx
@@ -2,13 +2,17 @@ import { Button } from "@/components/ui/button"
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "@/components/ui/card"
import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"
import { Badge } from "@/components/ui/badge"
-import { ArrowLeft, Download, Edit, Play, Trash, Copy, Check, Plus } from "lucide-react"
+import { ArrowLeft, Download, Edit, Play, Trash, Copy, Check } from "lucide-react"
import Link from "next/link"
import PageHeader from "@/components/page-header"
-import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@/components/ui/accordion"
+
import { Input } from "@/components/ui/input"
import { Label } from "@/components/ui/label"
import { PipelineStatus } from "@/components/pipeline/status"
+import { PipelineDataSource } from "@/components/pipeline/data-source"
+import { PipelineExportData } from "@/components/pipeline/export-data"
+import { PipelineDataSchema } from "@/components/pipeline/data-schema"
+import { PipelineDataPreview } from "@/components/pipeline/data-preview"
export default function PipelineDetailsPage() {
return (
@@ -51,133 +55,8 @@ export default function PipelineDetailsPage() {
-
-
-
- Data Sources
-
-
-
-
-
- example-realty.com
- Website
-
-
Last updated: 2 hours ago
-
540 records
-
-
-
-
- property-listings.com
- Website
-
-
Last updated: 2 hours ago
-
420 records
-
-
-
-
- real-estate-api.com
- API
-
-
Last updated: 2 hours ago
-
280 records
-
-
-
-
-
-
-
- Export Options
-
-
-
-
-
-
-
-
-
- Export as JSON
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Export as CSV
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Export as SQLite
-
-
-
-
-
-
-
-
-
-
-
-
-
- Export as YAML
-
-
-
-
-
-
-
-
-
-
-
+
+
@@ -191,226 +70,11 @@ export default function PipelineDetailsPage() {
-
-
-
-
- Data Schema & Field Management
- Customize fields detected from your data sources
-
-
-
-
-
-
-
Detected Fields
-
-
+
+
-
-
-
-
-
-
-
- Auto-detected
-
-
Property title or name
-
-
-
-
-
-
-
-
-
- Auto-detected
-
-
Property price
-
-
-
-
-
-
-
-
-
- Auto-detected
-
-
Property location
-
-
-
-
-
-
-
-
-
- Auto-detected
-
-
Number of bedrooms
-
-
-
-
-
-
-
-
-
- Auto-detected
-
-
Number of bathrooms
-
-
-
-
-
-
-
-
-
-
-
-
- Create calculated fields
- Use formulas to generate new fields from existing data
-
-
-
-
-
-
- Derived
-
-
- Formula:
- price / squareFeet
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Data Preview
- Sample of the collected data
-
-
-
-
-
-
- | ID |
- Title |
- Price |
- Bedrooms |
- Bathrooms |
- Location |
- Sq. Ft. |
-
-
-
-
- | P001 |
- Modern Apartment |
- $350,000 |
- 2 |
- 2 |
- Downtown |
- 1,200 |
-
-
- | P002 |
- Luxury Villa |
- $1,250,000 |
- 5 |
- 4 |
- Suburbs |
- 3,500 |
-
-
- | P003 |
- Cozy Studio |
- $180,000 |
- 1 |
- 1 |
- City Center |
- 650 |
-
-
-
-
-
-
+
+
diff --git a/frontend/components/pipeline/data-preview.tsx b/frontend/components/pipeline/data-preview.tsx
new file mode 100644
index 0000000..7d526a8
--- /dev/null
+++ b/frontend/components/pipeline/data-preview.tsx
@@ -0,0 +1,70 @@
+import { Card, CardHeader, CardTitle, CardDescription, CardContent } from "../ui/card";
+
+export function PipelineDataPreview() {
+ return (
+
+
+ Data Preview
+ Sample of the collected data
+
+
+
+
+
+
+ | ID |
+
+ Title
+ |
+
+ Price
+ |
+
+ Bedrooms
+ |
+
+ Bathrooms
+ |
+
+ Location
+ |
+
+ Sq. Ft.
+ |
+
+
+
+
+ | P001 |
+ Modern Apartment |
+ $350,000 |
+ 2 |
+ 2 |
+ Downtown |
+ 1,200 |
+
+
+ | P002 |
+ Luxury Villa |
+ $1,250,000 |
+ 5 |
+ 4 |
+ Suburbs |
+ 3,500 |
+
+
+ | P003 |
+ Cozy Studio |
+ $180,000 |
+ 1 |
+ 1 |
+ City Center |
+ 650 |
+
+
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/frontend/components/pipeline/data-schema.tsx b/frontend/components/pipeline/data-schema.tsx
new file mode 100644
index 0000000..ea57a40
--- /dev/null
+++ b/frontend/components/pipeline/data-schema.tsx
@@ -0,0 +1,246 @@
+import { Plus } from "lucide-react";
+import { Button } from "../ui/button";
+import { Label } from "../ui/label";
+import {
+ Card,
+ CardHeader,
+ CardTitle,
+ CardDescription,
+ CardContent,
+} from "../ui/card";
+import { Input } from "../ui/input";
+import { Badge } from "../ui/badge";
+
+export function PipelineDataSchema() {
+ return (
+
+
+
+
+ Data Schema & Field Management
+
+ Customize fields detected from your data sources
+
+
+
+
+
+
+
+
Detected Fields
+
+
+
+
+
+
+
+
+
+
+
+ Auto-detected
+
+
+
+ Property title or name
+
+
+
+
+
+
+
+
+
+
+
+ Auto-detected
+
+
+
+ Property price
+
+
+
+
+
+
+
+
+
+
+
+ Auto-detected
+
+
+
+ Property location
+
+
+
+
+
+
+
+
+
+
+
+ Auto-detected
+
+
+
+ Number of bedrooms
+
+
+
+
+
+
+
+
+
+
+
+ Auto-detected
+
+
+
+ Number of bathrooms
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Create calculated fields
+
+
+ Use formulas to generate new fields from existing data
+
+
+
+
+
+
+
+ Derived
+
+
+
+ Formula:
+
+
+ price / squareFeet
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/frontend/components/pipeline/data-source.tsx b/frontend/components/pipeline/data-source.tsx
new file mode 100644
index 0000000..7087059
--- /dev/null
+++ b/frontend/components/pipeline/data-source.tsx
@@ -0,0 +1,48 @@
+import { Badge } from "../ui/badge";
+import { Card, CardHeader, CardTitle, CardContent } from "../ui/card";
+
+export function PipelineDataSource(){
+ return (
+
+
+ Data Sources
+
+
+
+
+
+ example-realty.com
+ Website
+
+
+ Last updated: 2 hours ago
+
+
540 records
+
+
+
+
+ property-listings.com
+ Website
+
+
+ Last updated: 2 hours ago
+
+
420 records
+
+
+
+
+ real-estate-api.com
+ API
+
+
+ Last updated: 2 hours ago
+
+
280 records
+
+
+
+
+ );
+}
\ No newline at end of file
diff --git a/frontend/components/pipeline/export-data.tsx b/frontend/components/pipeline/export-data.tsx
new file mode 100644
index 0000000..b22cb69
--- /dev/null
+++ b/frontend/components/pipeline/export-data.tsx
@@ -0,0 +1,119 @@
+import {
+ Accordion,
+ AccordionContent,
+ AccordionItem,
+ AccordionTrigger,
+} from "@/components/ui/accordion";
+import { Download } from "lucide-react";
+import { Button } from "../ui/button";
+import { Card, CardHeader, CardTitle, CardContent } from "../ui/card";
+
+export function PipelineExportData() {
+ return (
+
+
+ Export Options
+
+
+
+
+
+
+
+
+
+ Export as JSON
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export as CSV
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export as SQLite
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Export as YAML
+
+
+
+
+
+
+
+
+
+
+
+ );
+}