尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證正在載入完整 README。 以下為已儲存的摘錄。
pSEO-site voor thuisladen en EV-fiscaliteit in de Benelux. Spec: CLAUDE.md, visueel systeem: DESIGN.md. • /nl-be/laadpaal-voor/tesla-model-3-rwd-2025 (11 kW, capaciteitstarief Vlaanderen) • /nl-be/laadpaal-voor/peugeot-e-208-51-2025 (7,4 kW 1-fasig: twee rijen "geen winst") • /fr-be/borne-pour/renault-zoe-r135-52-2023 (22 kW, Wallonië: geen piekblok) • /design-lab (alle componenten met voorbeelddata)檢視完整 README ↗
pSEO-site voor thuisladen en EV-fiscaliteit in de Benelux. Spec: CLAUDE.md, visueel systeem: DESIGN.md.
PowerShell (Windows):
pnpm install
Copy-Item .env.example .env.local # leeg laten = lokale seed-data, geen Supabase nodig
pnpm dev # http://localhost:3000/nl-be
pnpm test # calc, rules, hreflang, related, lead-matching
pnpm typecheck; pnpm lint
Bash / macOS / Linux:
pnpm install
cp .env.example .env.local
pnpm dev
pnpm test
pnpm typecheck && pnpm lint
Voorbeeldpagina's zonder database:
/nl-be/laadpaal-voor/tesla-model-3-rwd-2025 (11 kW, capaciteitstarief Vlaanderen)/nl-be/laadpaal-voor/peugeot-e-208-51-2025 (7,4 kW 1-fasig: twee rijen "geen winst")/fr-be/borne-pour/renault-zoe-r135-52-2023 (22 kW, Wallonië: geen piekblok)/design-lab (alle componenten met voorbeelddata)supabase/migrations/0001_init.up.sql uit (idempotent; down-migratie ernaast)..env.example.pnpm seed laadt data/seed/*.json; pnpm recalc-pages zet pages.status volgens het indexatiebeleid (CLAUDE.md 4.3) en triggert revalidate.Regels en tarieven met TODO(verify in notes houden alle afhankelijke pagina's op noindex. Verwijder de TODO pas na controle bij de bron.
| Map | Inhoud |
|---|---|
lib/calc/ | Pure rekenfuncties + tests, zie lib/calc/README.md |
lib/rules/ | Zod-schema's voor rules.params, regelselectie op datum |
lib/copy/ | Alle tekst per locale (nl-BE, fr-BE, nl-NL) |
lib/seo/ | hreflang (alternates.ts), interne links (related.ts) |
lib/db/ | Repo-interface, Supabase-implementatie, lokale seed-implementatie, gecachte loaders met tags |
lib/pages/ | Indexatiebeleid (status.ts), assemblage P1-pagina (charger.ts), route-helper |
lib/lead/ | Zod-schema, installateursmatching, rate-limit, Resend-mails |
components/ | UI-componenten volgens DESIGN.md; alleen LeadForm is client-side |
app/[locale]/(pseo)/ | laadpaal-voor/[slug] (nl) en borne-pour/[slug] (fr) |
app/api/revalidate | On-demand revalidate, Authorization: Bearer <REVALIDATE_SECRET> |
scripts/ | seed, import-specs, recalc-pages, audit-sources, screenshot |
PowerShell:
Invoke-RestMethod -Method Post -Uri "$env:NEXT_PUBLIC_SITE_URL/api/revalidate" `
-Headers @{ authorization = "Bearer $env:REVALIDATE_SECRET" } -ContentType "application/json" `
-Body '{"tags":["rules:BE","tariffs:BE","pages"]}'
Bash:
curl -X POST $NEXT_PUBLIC_SITE_URL/api/revalidate \
-H "authorization: Bearer $REVALIDATE_SECRET" -H "content-type: application/json" \
-d '{"tags":["rules:BE","tariffs:BE","pages"]}'
Tags: version:{slug}, rules:{BE|NL}, tariffs:{BE|NL}, pages:{locale}, pages, versions.
Open bronnen landen in spec_candidates (migratie 0002), nooit rechtstreeks in versions. Zonder Supabase-env schrijven de scripts naar data/import/candidates/.
pnpm fetch-open-ev-data # laatste release naar data/import/
pnpm import-open-ev-data data/import/open-ev-data-v1.24.0.json # github.com/open-ev-data/open-ev-data-dataset
pnpm review-candidates --make tesla # of zonder filter
review-candidates schrijft data/import/review/report.txt (matches en conflicten per bestaande versie, drempel 3 %, fasen exact) en data/import/review/new-versions.csv voor onbekende modellen. Die CSV heeft het formaat van import-specs, maar zonder spec_source_url en spec_source_date: die vul je in vanuit de fabrikantenprijslijst voor je importeert. De dataset bevat geen WLTP-verbruik; dat veld blijft leeg tot de prijslijst het invult. De kolom oem_source_url_suggested is de fabrikantenbron die de dataset opgeeft: een startpunt om te controleren, geen bewijs.
pnpm fetch-eea --min 5 # via de EEA Discodata SQL-endpoint, geen download nodig
pnpm review-candidates
fetch-eea laat de EEA-server zelf tellen per variant voor BE en NL (tabelnaam met --table, standaard co2cars_2025Pv31; de naam staat op de Datahub-pagina onder "SQL Rest Endpoint"). Het oudere import-eea leest hetzelfde uit een gedownload CSV-jaarbestand. review-candidates gebruikt die tellingen om new-versions.csv op volume te sorteren en vult de kolommen registrations_be en registrations_nl. Kolomnamen wijken per jaargang af; pas ze zo nodig aan in lib/specs/eea.ts.
Regelpagina's (template rule) bestaan alleen als er een entry staat in lib/content/rules.ts; de tekst is handgeschreven, met bronnen en datum. Over, contact en privacy staan in lib/content/static.ts.
Een lead wordt altijd opgeslagen in leads (status new) met het tijdstip van toestemming. Daarna:
installers.regions: postcodeprefix of gewest), dan gaat de lead meteen naar maximaal drie installateurs en krijgt status forwarded.new staan. De aanvrager krijgt een bevestiging dat de aanvraag binnen vier weken doorgestuurd wordt. De toestemmingstekst dekt dat uitstel.LEAD_NOTIFY_EMAIL, met de status erbij.Wachtrij doorsturen zodra er installateurs zijn:
pnpm forward-leads --dry # toont wie wat zou krijgen
pnpm forward-leads # verstuurt en zet status forwarded
pnpm forward-leads --max-age-days 42
Leads ouder dan --max-age-days (standaard 42) krijgen status expired en worden niet meer doorgestuurd. Zonder RESEND_API_KEY worden mails alleen gelogd. De testinstallateur in de seed staat op inactief; activeer nooit een installateur met een niet-bestaand e-mailadres, want een doorgestuurde lead komt niet terug in de wachtrij.