3.2 KiB
3.2 KiB
05 — Model danych i mock content
Dane trzymane w content/ jako typowane pliki TS. Typy w types/. Bez backendu na tym etapie.
Typy (types/)
Product (types/product.ts)
type Product = {
slug: string;
name: string;
brand: string;
category: "scienne" | "multisplit" | "przenosne" | "kasetonowe" | "konsolowe";
power: number; // kW
price: number; // cena urządzenia (brutto)
priceWithInstall: number; // cena z montażem
variants?: { label: string; power: number; price: number }[];
image: string; // placeholder na razie
features: string[]; // np. ["Wi-Fi", "jonizacja", "grzanie"]
heating: boolean;
description: string;
specs: Record<string, string>; // dane techniczne (klucz: wartość)
};
Project / realizacja (types/project.ts)
type Project = {
slug: string;
title: string;
category: "klimatyzacja" | "pompy-ciepla" | "remonty" | "hydraulika";
location: string; // np. "Wrocław"
image: string;
images?: string[]; // galeria
description: string;
scope?: string[]; // zakres prac
beforeAfter?: { before: string; after: string }; // dla remontów
};
Post / wpis blogowy (types/post.ts)
type Post = {
slug: string;
title: string;
category: "klimatyzacja" | "pompy-ciepla" | "remonty" | "hydraulika" | "porady";
excerpt: string;
date: string; // ISO
author: string;
image: string;
content: string; // markdown lub HTML — render w [slug]
featured?: boolean;
};
FAQ (types/faq.ts)
type FaqItem = { question: string; answer: string };
Service step / krok procesu
type ProcessStep = { number: number; title: string; description: string; icon?: string };
Mock content (content/)
Wygeneruj realistyczne, ale przykładowe dane (oznacz komentarzem // MOCK):
products.ts— ok. 8 klimatyzatorów różnych marek i kategorii, z wariantami mocy i cenami.projects.ts— ok. 6 realizacji w różnych kategoriach (w tym 1–2 z before/after dla remontów).posts.ts— ok. 4 wpisy blogowe (1 oznaczonyfeatured), z krótką treścią.faq.ts— zestawy FAQ per temat: klimatyzacja (8–10 pytań), pompy ciepła, remonty, hydraulika, serwis AGD.services.ts— definicje 6 usług na stronę główną (tytuł, opis, ikona, link).process.ts— kroki procesów (montaż klimatyzacji, wdrożenie pompy, remont, zgłoszenie serwisu).company.ts— dane firmy: nazwa, adres, NIP, telefon, e-mail, godziny, social, statystyki (lata, realizacje, miasta), certyfikaty. Użyj placeholderów, oznacz// TODO: dane firmy.pricing.ts— pozycje cennika montażu (split, multisplit, usługi dodatkowe) jak w tabeli na stronie klimatyzacji.
Zasady
- Dane importowane do stron przez funkcje pomocnicze w
lib/(np.getProducts(),getProductBySlug()). generateStaticParamsdlablog/[slug]isklep/[slug]korzysta z tych danych.- Ceny i treści to placeholdery — wyraźnie oznaczone, łatwe do podmiany przez właściciela.
- Nie wymyślaj prawdziwych danych firmy (adres, NIP) — zostaw oznaczone pola do uzupełnienia.