EU-only, GDPR-first
Servers in the EU, lead DPA is CNPD Luxembourg. Per-club Fernet encryption for medical notes, IBANs and chat. No Schrems-II surprise.
Attendance on the mat, substitutes cascaded in minutes, routes catalogued with UIAA + French grades, and every membership fee reconciled to your bank. All in one place.
Servers in the EU, lead DPA is CNPD Luxembourg. Per-club Fernet encryption for medical notes, IBANs and chat. No Schrems-II surprise.
Federation licences (FLERA · DAV · FFME · BMC), belay-card expiry dates, equipment inspections, trainer substitute cascade, frozen year-end snapshots. Built for climbers, not a generic club tool.
Trainers mark attendance in the hall on iOS/Android. Committee does books at the desk on web. App is free on both stores. No IAP, no surcharge.
Each feature below exists because a real climbing club actually needed it. From 20-member village crags to 500-member urban gyms, from volunteer-run groups to federation-affiliated competition squads. No checkbox features, no bolted-on modules.
Each tenant gets its own Fernet key, wrapped by a master KEK. A leak in one club cannot decrypt another's medical notes, IBANs, or chat history. Key rotation is per-club too.
Crypto-shredding ready for Art. 17 erasureTrainer cancels → app offers the slot to the next qualified trainer → 20-min timeout → escalates. Parents see resolution, not chaos. Measured at under two minutes median.
Web Push + email fallbackEvery route carries both. Walls get section overlays with position x/y. Ascents log as flash / redpoint / top-rope. Session statistics per member out of the box.
Immutable GL. Fiscal-year close is one-way. Corrections via Stornobuchung, never silent edits. Chart of accounts ships the LU PCN. Balance sheet + P&L + budget-vs-actual reconcile to GL entries.
CAMT.053, CSV, or MT940 in, fuzzy-match to open membership fees out. Confidence under 0.65 stays in the review queue. No silent auto-matches against members who didn't pay.
Core modules always on. Opt-in bundles (Advanced Finance, Competitions Club, Communication+) toggle atomically. Small clubs don't pay for what big clubs need.
Ship on <slug>.verticalmonkey.eu by default. Bring your own domain via CNAME + TXT ownership record; TLS issued and renewed automatically.
Members under the digital-consent age (13–16 by country) auto-land with photo-publishing off, DM restrictions on, and a parental-consent checkpoint. UK-GDPR compliant out of the box.
FLERA, DAV, FFME, BMC: member licences, renewal dates, expiring insurance certificates, belay-card status, all flagged before they cost you a course cancellation.
Every rope, harness, helmet and hardware gets a next-inspection date with cascading alerts. Expired equipment is auto-flagged out of lending. Audit-trail is soft-delete only.
Close a season, freeze the numbers. Year-over-year reporting that actually reconciles. No revisionist edits six months later.
Most climbing halls have terrible cell signal. Trainers mark attendance and log hours on the mat, offline. The app queues changes and syncs automatically when reception returns. No lost sessions, no "we'll do it later".
Attendance + trainer hours, offline-firstPrices excl. VAT. EU-VAT is added at checkout based on your club's country, handled automatically by Stripe. Pay for 10 months and get 12 (save 2 months with annual billing).
GDPR, UK-GDPR and the Age Appropriate Design Code, enforced server-side, not hand-waved in a privacy policy. Privacy is a feature here, not a checkbox.
/consentscountry = GBFour launch locales live. Adding a new locale is a single JSON file. More EU languages land as we onboard clubs in new countries.
ingress.verticalmonkey.eu plus a one-time TXT record for ownership verification. TLS is issued automatically and renewed before expiry.