feat: Rebranding von LeadFlow zu OnyvaLeads

Alle UI-Labels, Dateinamen, API-Bezeichner und package.json auf OnyvaLeads umgestellt.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
TimoUttenweiler
2026-03-25 15:10:46 +01:00
parent a9a0be157f
commit 47b78fa749
10 changed files with 13 additions and 35 deletions

View File

@@ -31,7 +31,7 @@ export async function GET(
return new NextResponse(new Uint8Array(arr), { return new NextResponse(new Uint8Array(arr), {
headers: { headers: {
"Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "Content-Type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
"Content-Disposition": `attachment; filename="leadflow-${job.type}-${jobId.slice(0, 8)}.xlsx"`, "Content-Disposition": `attachment; filename="onyva-leads-${job.type}-${jobId.slice(0, 8)}.xlsx"`,
}, },
}); });
} catch (err) { } catch (err) {

View File

@@ -41,7 +41,7 @@ async function runVayneScrape(
) { ) {
try { try {
// 1. Create Vayne order // 1. Create Vayne order
const order = await createOrder(salesNavUrl, maxResults, apiToken, `LeadFlow-${jobId.slice(0, 8)}`); const order = await createOrder(salesNavUrl, maxResults, apiToken, `OnyvaLeads-${jobId.slice(0, 8)}`);
const orderId = order.id; const orderId = order.id;
await prisma.job.update({ await prisma.job.update({

View File

@@ -50,7 +50,7 @@ export async function GET(req: NextRequest) {
"Erfasst am": new Date(l.capturedAt).toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric" }), "Erfasst am": new Date(l.capturedAt).toLocaleDateString("de-DE", { day: "2-digit", month: "2-digit", year: "numeric" }),
})); }));
const filename = `leadflow-vault-${new Date().toISOString().split("T")[0]}`; const filename = `onyva-leads-vault-${new Date().toISOString().split("T")[0]}`;
if (format === "xlsx") { if (format === "xlsx") {
const ws = XLSX.utils.json_to_sheet(rows); const ws = XLSX.utils.json_to_sheet(rows);

View File

@@ -8,7 +8,7 @@ import { Toaster } from "@/components/ui/sonner";
const inter = Inter({ subsets: ["latin"], variable: "--font-inter" }); const inter = Inter({ subsets: ["latin"], variable: "--font-inter" });
export const metadata: Metadata = { export const metadata: Metadata = {
title: "LeadFlow — Lead Generation Platform", title: "OnyvaLeads — Lead Generation Platform",
description: "Unified lead generation and email enrichment platform", description: "Unified lead generation and email enrichment platform",
}; };

View File

@@ -277,8 +277,8 @@ export default function LeadVaultPage() {
const [serpOpen, setSerpOpen] = useState(false); const [serpOpen, setSerpOpen] = useState(false);
const [serpQuery, setSerpQuery] = useState(""); const [serpQuery, setSerpQuery] = useState("");
const [serpCount, setSerpCount] = useState("25"); const [serpCount, setSerpCount] = useState("25");
const [serpCountry, setSerpCountry] = useState("de"); const serpCountry = "de";
const [serpLanguage, setSerpLanguage] = useState("de"); const serpLanguage = "de";
const [serpFilter, setSerpFilter] = useState(true); const [serpFilter, setSerpFilter] = useState(true);
const [serpRunning, setSerpRunning] = useState(false); const [serpRunning, setSerpRunning] = useState(false);
@@ -551,28 +551,6 @@ export default function LeadVaultPage() {
))} ))}
</SelectContent> </SelectContent>
</Select> </Select>
<div className="flex gap-2">
<Select value={serpCountry} onValueChange={v => setSerpCountry(v ?? "de")}>
<SelectTrigger className="bg-[#0d0d18] border-[#2e2e3e] text-white flex-1">
<SelectValue />
</SelectTrigger>
<SelectContent className="bg-[#111118] border-[#2e2e3e]">
{[["de","DE"],["at","AT"],["ch","CH"],["us","US"]].map(([v,l]) => (
<SelectItem key={v} value={v} className="text-gray-300">{l}</SelectItem>
))}
</SelectContent>
</Select>
<Select value={serpLanguage} onValueChange={v => setSerpLanguage(v ?? "de")}>
<SelectTrigger className="bg-[#0d0d18] border-[#2e2e3e] text-white flex-1">
<SelectValue />
</SelectTrigger>
<SelectContent className="bg-[#111118] border-[#2e2e3e]">
{[["de","Deutsch"],["en","English"]].map(([v,l]) => (
<SelectItem key={v} value={v} className="text-gray-300">{l}</SelectItem>
))}
</SelectContent>
</Select>
</div>
</div> </div>
<div className="flex items-center justify-between"> <div className="flex items-center justify-between">
<label className="flex items-center gap-2 text-sm text-gray-400 cursor-pointer"> <label className="flex items-center gap-2 text-sm text-gray-400 cursor-pointer">

View File

@@ -62,7 +62,7 @@ export function Sidebar() {
<Zap className="w-4 h-4 text-white" /> <Zap className="w-4 h-4 text-white" />
</div> </div>
{!sidebarCollapsed && ( {!sidebarCollapsed && (
<span className="font-bold text-lg tracking-tight text-white">LeadFlow</span> <span className="font-bold text-lg tracking-tight text-white">OnyvaLeads</span>
)} )}
</div> </div>

View File

@@ -23,7 +23,7 @@ export function TopBar() {
return ( return (
<header className="h-14 border-b border-[#1e1e2e] bg-[#111118]/80 backdrop-blur flex items-center justify-between px-6 flex-shrink-0"> <header className="h-14 border-b border-[#1e1e2e] bg-[#111118]/80 backdrop-blur flex items-center justify-between px-6 flex-shrink-0">
<div className="flex items-center gap-2 text-sm"> <div className="flex items-center gap-2 text-sm">
<span className="text-gray-500">LeadFlow</span> <span className="text-gray-500">OnyvaLeads</span>
<span className="text-gray-600">/</span> <span className="text-gray-600">/</span>
<span className="text-white font-medium">{label}</span> <span className="text-white font-medium">{label}</span>
</div> </div>

View File

@@ -87,7 +87,7 @@ export async function submitBulkDecisionMakerSearch(
data, data,
domain_field_index: 0, domain_field_index: 0,
decision_maker_category: category, decision_maker_category: category,
file_name: fileName || `leadflow-${Date.now()}`, file_name: fileName || `onyva-leads-${Date.now()}`,
}, },
{ {
headers: { Authorization: apiKey, "Content-Type": "application/json" }, headers: { Authorization: apiKey, "Content-Type": "application/json" },
@@ -118,7 +118,7 @@ export async function submitBulkPersonSearch(
domain_field_index: 0, domain_field_index: 0,
first_name_field_index: 1, first_name_field_index: 1,
last_name_field_index: 2, last_name_field_index: 2,
file_name: fileName || `leadflow-${Date.now()}`, file_name: fileName || `onyva-leads-${Date.now()}`,
}, },
{ {
headers: { Authorization: apiKey, "Content-Type": "application/json" }, headers: { Authorization: apiKey, "Content-Type": "application/json" },
@@ -192,7 +192,7 @@ export async function bulkSearchDomains(
domains, domains,
primaryCategory, primaryCategory,
apiKey, apiKey,
`leadflow-bulk-${Date.now()}` `onyva-leads-bulk-${Date.now()}`
); );
// 2. Poll until complete (~1,000 rows per 5 min) // 2. Poll until complete (~1,000 rows per 5 min)

View File

@@ -48,7 +48,7 @@ export async function createOrder(
{ {
url: salesNavUrl, url: salesNavUrl,
limit: maxResults, limit: maxResults,
name: orderName || `LeadFlow-${Date.now()}`, name: orderName || `OnyvaLeads-${Date.now()}`,
email_enrichment: false, email_enrichment: false,
export_format: "simple", export_format: "simple",
}, },

View File

@@ -1,5 +1,5 @@
{ {
"name": "leadflow", "name": "onyva-leads",
"version": "0.1.0", "version": "0.1.0",
"private": true, "private": true,
"scripts": { "scripts": {