Hoe we met AI bouwen.
Aan de hand van twee eigen producten: SolidQMS, waar AI er gaandeweg bij kwam, en SolidBowtie, waar het er vanaf dag één bij was.
SolidQMS bouwden we eerst zoals we altijd bouwden, en gaandeweg ging AI steeds meer meedoen. SolidBowtie bouwden we vanaf de eerste dag met AI. Op deze pagina lees je wat we bij die twee producten hebben geleerd.
Wat er gebouwd wordt, bepalen onze engineers samen met mensen die het vak kennen. AI helpt bij het uitzoeken, het bouwen en het nakijken van code. Hieronder staat hoe dat in de praktijk gaat, en welke techniek we daarbij gebruiken.
Kwaliteitsmanagement voor gereguleerde industrie.
SolidQMS begon zoals de meeste software: een ervaren engineer en iemand met veel verstand van kwaliteitsmanagement aan één tafel. We bouwden eerst een stevige basis: een Ruby on Rails-monoliet, een domeinmodel dat inmiddels meer dan 140 modellen telt, en multi-tenancy, zodat elke organisatie een eigen afgeschermde omgeving heeft. Daarna groeide het product mee met wat kwaliteitsmanagers nodig hadden: non-conformiteiten, audits, risicobeheer, trainingen en documentbeheer.
Het product zelf veranderde in die tijd niet zo veel. De manier waarop we het bouwden wel. Naarmate de codebase groeide, werd AI van een handig hulpje een vast onderdeel van het werk. Eerst om code aan te vullen, later om hele stukken te schrijven. Claude Code werd onderdeel van de dagelijkse ontwikkeling. Het schrijft nieuwe code, herstructureert bestaande code en zoekt dingen uit in de codebase, en er kijkt altijd een engineer mee.
Dat ging door tot in de pipeline. Claude Code draait mee in CI en doet op elke pull request een code-review, naast de automatische tests. Nieuwe functies ontwerpen en bouwen we steeds vaker samen met AI. De engineer en de domeinexpert bepalen de architectuur, maken de keuzes en beslissen wanneer iets af is. De AI doet een groot deel van het bouwwerk.
Het product kreeg zelf ook AI-functies, maar alleen waar het de kwaliteitsmanager echt werk scheelt: bij 8D-analyses, leveranciersbeoordelingen en het nakijken van documenten. De grootste verandering zat in hoe we bouwen. Wie de beslissingen neemt, is hetzelfde gebleven.
De volledige stack van SolidQMS
| Backend | Ruby on Rails 8.1, Ruby 3.3, Puma |
|---|---|
| Frontend | Hotwire (Turbo + Stimulus), Bootstrap 5, esbuild, Sass, ViewComponent |
| Data & multitenancy | PostgreSQL 17, ros-apartment (schema-based), Redis, Sidekiq, CarrierWave, AWS S3 |
| AI-ondersteund ontwikkelen | Claude Code als vaste ontwikkelpartner (code genereren, refactoren, codebase verkennen) onder supervisie van de engineer |
| AI in het product | Gericht ingezet: ruby-anthropic + ruby-openai (provider-agnostisch), Claude Sonnet 4.6, alleen waar het de kwaliteitsmanager werk uit handen neemt |
| Auth & security | Devise, TOTP 2FA, WebAuthn passkeys, OmniAuth (Google / OIDC), Action Policy, Brakeman, bundler-audit, secure_headers, rack-attack |
| Visualisatie & documenten | Chart.js, Highcharts, D3, Frappe Gantt, chartkick, ProseMirror, Trix, Grover (PDF), caxlsx |
| Testing & kwaliteit | Minitest, Capybara, Cuprite, FactoryBot, SimpleCov, RuboCop |
| Deploy & infra | Capistrano, Ansible, Nginx, systemd, VPS |
| Monitoring & analytics | Sentry, Ahoy, PaperTrail, lograge |
| Dev-proces | GitHub Actions met AI-code-review op elke pull request, naast de geautomatiseerde tests |
Een platform voor bowtie-risicoanalyses, waarin je met meerdere mensen tegelijk werkt.
Bij SolidBowtie draaiden we de volgorde om. Bij SolidQMS kwam AI pas nadat de basis er stond. SolidBowtie bouwden we er vanaf de eerste regel code mee. Brainstorm, specificatie, architectuur en implementatie liepen allemaal via Claude Code en het superpowers-framework. In de commits staat Claude als co-auteur.
Omdat we opnieuw begonnen, konden we ook de stack anders kiezen. In plaats van Redis en losse Node-processen draait SolidBowtie volledig op de Solid-stack: Solid Queue, Solid Cache en Solid Cable, alles op PostgreSQL. Dat scheelt een proces om te beheren. Voor deployment kozen we Kamal met Docker in plaats van Capistrano. De interface is Hotwire waar het kan. Alleen de bowtie-editor zelf, waarin je met meerdere mensen tegelijk werkt, is gebouwd in React (React Flow).
In SolidBowtie is AI een kernfunctie. Je beschrijft je risico in gewone taal en Claude Opus 4.8 maakt er een complete bowtie van, met dreigingen, gevolgen, barrières en escalatiefactoren. Die werk je daarna zelf verder uit. Achter de schermen houden we de AI kort. We parsen de JSON-output defensief, controleren alle waarden tegen whitelists, begrenzen de output en geven elke gebruiker een rate limit.
Bij SolidQMS voegden we AI toe aan software die er al was. SolidBowtie hebben we er vanaf het begin omheen ontworpen. Daar kwamen we uit na alles wat we bij SolidQMS hadden geleerd.
De volledige stack van SolidBowtie
| Backend | Ruby on Rails 8.1, Ruby 3.3, Puma |
|---|---|
| Frontend | Hotwire (Turbo + Stimulus), React 19, React Flow (@xyflow/react), Tailwind CSS v4, esbuild, ViewComponent, html-to-image |
| Data & multitenancy | PostgreSQL 17, row-level multitenancy (Organization), Solid Queue, Solid Cache, Solid Cable |
| AI | anthropic (officiële SDK), Claude Opus 4.8, adaptive thinking, defensieve parsing & sanitisatie, rate-limiting |
| Auth & security | Rails 8 authenticatie, bcrypt, Google OAuth, Pundit, honeypot + rate-limiting, Brakeman, bundler-audit |
| Realtime & multiplayer | Solid Cable (ActionCable), presence-tracking, gedeelde live canvas |
| Billing & analytics | Stripe (abonnementen + webhooks), Plausible (cookieloos) |
| Testing & kwaliteit | Minitest, Capybara, Selenium, FactoryBot, RuboCop |
| Deploy & infra | Kamal, Docker, ghcr.io, Hetzner, Nginx, Let’s Encrypt, Resend (e-mail) |
| Dev-proces | Claude Code + superpowers, GitHub Actions (scan / lint / test / system-test) |
Twee aanpakken naast elkaar
| SolidQMS | SolidBowtie | |
|---|---|---|
| Ontstaan | Eerst zonder AI gebouwd, later met | AI-first vanaf dag één |
| Rol van AI | Vooral in het ontwikkelproces; in het product alleen waar het echt helpt | Kernfunctie en uitgangspunt van het ontwerp |
| Dev-proces | AI gaandeweg vast onderdeel: coding, CI en code-review | Brainstorm → spec → bouw met Claude Code / superpowers |
| Queue & cache | Sidekiq + Redis | Solid Queue / Cache / Cable (geen Redis) |
| Frontend | Hotwire + Bootstrap | Hotwire + React Flow-eiland + Tailwind v4 |
| Multitenancy | Schema-based (ros-apartment) | Row-level (Organization) |
| Deployment | Capistrano + Ansible op VPS | Kamal (Docker) op Hetzner |
| AI-model | Claude Sonnet 4.6 (provider-agnostisch) | Claude Opus 4.8 |
In beide gevallen bepalen een ervaren engineer en een domeinexpert wat er gebouwd wordt en waarom. AI zorgt dat het sneller gaat. Zo werken we ook in projecten voor klanten.
Zelf met AI aan de slag?
Wil je weten wat deze aanpak voor jouw product kan betekenen? Bel 020-240.02.71 of mail menno@bonaroo.nl
Plan een kennismaking