Granice
Display border crossing points and their risk levels
Translation pending
AI summary · website content
Het juiste laadadvies voor jouw auto, jouw meter en jouw gewest, met de cijfers erbij.
Translation pending
LifestyleTypeScript · CSSGitHub @WoudjoXOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
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)Read the full 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.