BankBird
Aan de slag →
🛠️ Vibe Development

Bouw zelf verder
met AI

BankBird is open-source en ontworpen om uitgebreid te worden. Op deze pagina vind je tools, hints en praktijkvoorbeelden om het systeem zelf verder te ontwikkelen — met of zonder diepgaande programmeerkennis.

🤖
🚀

Bereid je voor — wat heb je nodig?

Vibe Development werkt het best als je de juiste tools klaarstaan. Dit is wat je nodig hebt voordat je begint — ook als je nog nooit code hebt geschreven.

① Kies je AI coding tool
🤖
Claude Code
claude.ai/code
  • Desktop app + terminal
  • Werkt met elke editor
  • Aanrader voor beginners
  • Gratis te starten
💬
ChatGPT / Codex
chatgpt.com
  • In de browser, geen installatie
  • Codex werkt via de API
  • Handig als je al ChatGPT Plus hebt
  • Gratis basisversie beschikbaar

Beide werken prima voor BankBird. Kies wat je al kent, of probeer Claude Code als je helemaal nieuw bent.

② Maak een lege projectmap aan

Maak eerst een lege map aan op je computer (bijv. op je bureaublad of in je Documenten-map). Open die map daarna in je AI-tool.

🪟
Windows
Rechtermuisknop op je bureaublad → Nieuw → Map. Naam: bankbird. Sleep de map naar Claude Code, of open de map via Bestand → Map openen.
🍎
Mac
Open Finder → ga naar je gewenste locatie → Cmd+Shift+N voor een nieuwe map. Open de map in Claude Code via het menu of door hem erin te slepen.
🐧
Linux
Gebruik mkdir ~/bankbird in je terminal, en open de map daarna in je AI-tool.
③ Je bent klaar om te installeren!

Je hebt een AI-tool en een lege projectmap. Volg nu de installatiestappen om BankBird op te zetten.

Naar de installatie →
🛠️

Wat is Vibe Development?

Vibe Development betekent dat je met behulp van AI — zoals Claude of ChatGPT — zelf nieuwe functies toevoegt aan BankBird, zonder dat je een doorgewinterd PHP-developer hoeft te zijn. Je beschrijft wat je wilt, de AI schrijft de code, en jij past het aan totdat het werkt.

✅ Wat werkt goed
  • Nieuwe bankimport toevoegen
  • Extra rapportfilters bouwen
  • Eigen exportformaten
  • Integraties met andere tools
⚠️ Waar je op let
  • Core-bestanden aanpassen
  • Database-schema's wijzigen
  • Authenticatie aanraken
  • Updates kunnen je wijzigingen overschrijven
🏦

Praktijkvoorbeeld: eigen bankimport

Stel: ABN AMRO import staat nog niet in BankBird, maar jij hebt een ABN-rekening. Je kunt de import zelf bouwen. Hier is hoe je dat aanpakt met AI.

1
Download je bankafschrift
Ga naar je bank-app en download een CSV of MT940 export van je transacties. Sla dit bestand op — je gaat het als voorbeeld gebruiken in je prompt.
2
Geef je AI de context
Open Claude (claude.ai) of ChatGPT (chatgpt.com) en geef het systeem uitleg mee. Gebruik de prompt hieronder als startpunt.
prompt voor Claude / ChatGPT
Ik werk met BankBird, een Laravel 11 + Filament 5 applicatie
voor persoonlijke financiële administratie. Ik wil een nieuwe
bankimport toevoegen voor ABN AMRO CSV-bestanden.

Het ABN AMRO CSV-formaat heeft deze kolommen:
[plak hier de eerste 3-5 regels van je CSV-bestand]

De bestaande ING CSV-import staat in:
app/Services/Importers/IngCsvImporter.php

Maak een vergelijkbare klasse AbnAmroCsvImporter die:
- hetzelfde ImporterInterface implementeert
- de ABN AMRO kolomnamen correct mapt
- het bedrag omzet naar een positief/negatief getal

Geef mij de volledige PHP-klasse terug.
3
Zet het bestand op de juiste plek
Sla de door AI gegenereerde klasse op in app/Services/Importers/AbnAmroCsvImporter.php. BankBird detecteert importers automatisch als ze het ImporterInterface implementeren.
4
Test met een klein bestand
Ga in het admin panel naar Imports > Nieuw en upload een klein CSV-bestand (5–10 regels). Controleer of de transacties correct worden ingelezen.
⚠️

Conflicten met toekomstige updates

🔔
Belangrijk om te weten: als jij zelf een ABN AMRO import bouwt en wij later ook een officiële ABN AMRO import uitbrengen, kunnen die twee met elkaar botsen — met dubbele of foutieve imports als gevolg.
📌 Scenario: Jouw import vs. de officiële versie

Stel: je hebt AbnAmroCsvImporter.php zelf gebouwd. Na een update brengen wij een officiële versie uit. Er zijn drie opties:

Jouw versie deactiveren
Verwijder of hernoem je eigen importer. De officiële versie neemt het over. Kies dit als de officiële versie alles doet wat jij nodig hebt.
🔀
Jouw versie houden
Hernoem je klasse naar bijv. MijnAbnAmroCsvImporter zodat er geen botsing is. Beide importers bestaan naast elkaar.
🔧
Samenvoegen
Vergelijk jouw versie met de officiële en neem de beste aanpak over. Gebruik een diff-tool of vraag Claude of ChatGPT om de twee versies samen te voegen.
💡 Tip: vraag het aan Claude of ChatGPT
prompt
Ik heb zelf een ABN AMRO importer gebouwd [plak jouw code].
BankBird heeft nu ook een officiële versie uitgebracht [plak
nieuwe code]. Welke aanpak raad je aan? Zijn er conflicten?
Kun je de beste versie samenvoegen?
🔄

Git & updates — hoe werkt dat?

BankBird wordt bijgewerkt via Git. Als je veel zelf hebt aangepast, kan een git pull voor problemen zorgen. Hier zijn de drie meest gebruikte aanpakken:

🟢 Aanpak 1: Eigen bestanden, kern ongewijzigd
Laag risico
De veiligste manier. Voeg alleen nieuwe bestanden toe (nieuwe importers, widgets, etc.) zonder bestaande bestanden aan te passen. Updates van BankBird zullen jouw toevoegingen niet overschrijven.
🟡 Aanpak 2: Fork op GitHub
Gemiddeld risico
Fork de BankBird repository op GitHub. Doe jouw aanpassingen op je eigen fork. Haal updates binnen via git merge upstream/main. Conflicts los je op in je eigen branch.
🔴 Aanpak 3: Directe aanpassingen zonder fork
Hoog risico
Je past core-bestanden aan zonder fork. Updates overschrijven je wijzigingen bij een git pull als er geen conflicts zijn — of ze blokkeren de update. Maak altijd eerst een backup.
💡
Gouden regel: hoe meer je werkt met nieuwe bestanden in plaats van bestaande aan te passen, hoe makkelijker updates verlopen. Gebruik Laravel's extension points: maak nieuwe Service-klassen, nieuwe Filament-pagina's, nieuwe Importers.
🔒

Hoe staat je IBAN veilig in de database?

Een IBAN is gevoelige financiële informatie. BankBird slaat dit versleuteld op via Laravel's ingebouwde encryptie. Hier is het volledige plaatje — van database tot PHP-code.

1. Wat staat er letterlijk in de database?
database · accounts tabel
-- Wat je ziet als je de database opengooit:
id  | name            | iban
----+-----------------+---------------------------------------------------
1   | ING Betaalrek.  | eyJpdiI6IkZwVXZGME...(lange versleutelde string)
2   | Spaarrekening   | eyJpdiI6InhkdDFQQ3...(lange versleutelde string)

-- Je echte IBAN (NL59INGB...) is nergens in klare tekst zichtbaar.
2. Hoe werkt de versleuteling in de code?
app/Models/Account.php
protected function casts(): array
{
    return [
        'iban' => 'encrypted', // ← Laravel versleutelt automatisch
        'type' => AccountType::class,
        'balance' => 'decimal:2',
    ];
}

// Opslaan: Laravel versleutelt automatisch
Account::create([
    'iban' => 'NL59INGB0653592555',  // jij geeft klare tekst
]);

// Uitlezen: Laravel ontsleutelt automatisch
$account = Account::find(1);
echo $account->iban; // → 'NL59INGB0653592555' (klare tekst)
🔑 De sleutel: APP_KEY

De versleuteling werkt via de APP_KEY in je .env-bestand. Dit is een unieke 32-byte sleutel die Laravel genereert bij installatie. Bewaar deze goed — zonder die sleutel kun je je eigen data niet meer lezen.

.env
APP_KEY=base64:jouw-unieke-sleutel-hier...

# Nieuwe sleutel genereren (bij eerste installatie):
php artisan key:generate
📋 Samenvatting beveiliging
IBAN is versleuteld opgeslagen — niet leesbaar in de database
Versleuteling gebeurt automatisch via Laravel's encrypted cast
Ontsleuteling ook automatisch — jij werkt altijd met klare tekst in de code
Elke installatie heeft een unieke APP_KEY (AES-256-CBC encryptie)
⚠️ Verlies je APP_KEY? Dan kun je versleutelde data niet meer lezen
⚠️ Maak regelmatig een backup van je .env-bestand op een veilige plek
🗂️

Backup als datasource voor development

De backup-functie (bereikbaar via het gebruikersmenu → Backup) exporteert al je data als een gestructureerd JSON-bestand. Voor vibe-developers is dat een goudmijn: je ziet precies hoe de datastructuur eruitziet, kun je lokaal testen met echte data en een nieuwe installatie snel vullen.

// bankbird-backup-2026-05-05.json
{
"version": 1,
"created_at": "2026-05-05T...",
"accounts": [ ... ] // IBAN, naam, type
"categories": [ ... ] // hiërarchisch, met children[]
"merchants": [ ... ] // inclusief match_patterns[]
"transactions": [ ... ] // alle velden, refs op ID
}
🧪 Lokaal testen
Download je backup en gebruik hem als testdata bij het bouwen van een nieuwe parser of feature. Geen nep-data nodig.
🚀 Nieuwe installatie vullen
Zet BankBird op een nieuwe server? Importeer je backup en al je categorieën, merchants en transacties staan er meteen in.
🔍 Datastructuur inspecteren
Open de JSON in VS Code of een JSON-viewer en zie exact welke velden elke entiteit heeft — handig als referentie bij het schrijven van code.
📤 Eigen exports bouwen
Gebruik de backup als basis om je eigen export-scripts te schrijven. Alle data staat erin, in een voorspelbaar formaat.
⚠️
Let op: het backup-bestand bevat gevoelige data (rekeningnummers, transacties). Behandel het bestand als privé en sla het niet op in een publieke map of Git-repository.

Klaar om te bouwen?

Bekijk de technische documentatie voor de architectuur en service-interfaces, of open een issue op GitHub als je vastloopt.