One membership list, not two
Person and membership sit in one form, because in a board member's head they are one thing. Member numbers are drawn gaplessly; application, admission, pause and resignation are states with permitted transitions rather than a free-text field.
The membership application online
A public page where somebody can apply without printing a PDF. What it creates is explicitly an APPLICATION — the board decides on admission, exactly as your statutes say. It arrives in the membership list with a counter beside it.
The fee schedule as data
Adults, youth, family, supporting, honorary — with your amounts and your billing rhythm. Raise a fee and one row changes. Invoices already issued keep their amount, because the invoice copies it.
The fee run in three steps
Look, issue invoices, create the direct debit file. The preview says in advance who gets what, and it costs nothing. Pressing the button twice creates nothing twice — and that is not just in the code, it is a unique key in the database.
SEPA mandates checked before the bank sees them
Every IBAN is checked against its check digits as it is entered; a transposed digit never reaches the bank. The mandate reference carries the member number, so a returned debit can be traced without a database. An account change creates a new mandate and starts again as a first collection — exactly what the payer's bank expects.
Returned debits as counter-entries
When money comes back, the payment is not deleted but reversed: the invoice is open again, and the record that a collection happened stays. Without it, the return fee has nothing to attach to.
Divisions and teams
Two levels — a division, and beneath it a team or group. Coaches who are not members themselves still sit in the squad and see the dates. In the admin panel a coach sees only their own teams, plus the dates that concern the whole club.
Attendance that says something
After training the coach ticks who came. Whoever is ticked nowhere is explicitly recorded as absent — a missing row would mean "not recorded", which is something else. Responses and attendance stay separate: whoever says yes and does not turn up is exactly the case a coach wants to see.
Resignation takes the mandate with it
When a resignation is recorded, an existing SEPA mandate is revoked in the same operation. A direct debit without a mandate is the most expensive mistake in this area — and the easiest one to forget.