Zo bouwen we met AI.
Twee producten, veel lessen. Ontdek hoe AI onderdeel werd van ons werk aan SolidQMS en SolidBowtie.
Bij SolidQMS groeide AI stap voor stap mee in ons ontwikkelproces. Bij SolidBowtie werkten we er vanaf het begin mee. Beide producten laten zien wat we onderweg hebben geleerd.
Onze engineers en de mensen die het vak kennen, bepalen wat er nodig is. AI helpt bij het uitzoeken, bouwen en beoordelen van code. Hieronder lees je hoe dat er in de praktijk uitziet, met de technieken die we gebruiken.
Kwaliteitsmanagement voor gereguleerde industrie.
SolidQMS begon zoals software al decennia begint: een ervaren engineer en een domeinexpert in kwaliteitsmanagement, samen aan tafel. Stap voor stap bouwden we het fundament op: een robuuste Ruby on Rails-monoliet, een domeinmodel dat inmiddels meer dan 140 modellen telt, en multi-tenancy zodat elke organisatie haar eigen geïsoleerde omgeving heeft. De functionaliteit groeide mee met wat kwaliteitsmanagers écht nodig hadden: non-conformiteiten, audits, risicobeheer, trainingen en documentbeheer.
Wat in de loop van het project veranderde, was niet zozeer het product, maar de manier waaróp we het bouwden. Naarmate de codebase groeide, schoof AI op van handig hulpmiddel naar vast onderdeel van de engineering. Eerst als slimme code-assistentie, daarna als volwaardige meewerkende kracht: Claude Code werd onderdeel van de dagelijkse ontwikkeling (code genereren, refactoren en de codebase verkennen, steeds onder supervisie van de engineer).
Die werkwijze trok door tot in de pijplijn. Claude Code draait mee in de CI/CD en voert op elke pull request een code-review uit, naast de geautomatiseerde tests. Nieuwe functionaliteit ontwerpen en implementeren ging zo steeds meer in samenspel met AI: full-scale design en development waarin de ervaren engineer en de domeinexpert de architectuur, de keuzes en de acceptatiecriteria bepalen, en de AI het bouwwerk versnelt.
Het product zelf kreeg gaandeweg óók AI-ondersteuning, maar gericht en spaarzaam: alleen waar het de kwaliteitsmanager echt werk uit handen neemt, zoals hulp bij 8D-analyses, leveranciersbeoordeling en documentreview. De grootste verschuiving zat in het ontwikkelproces: van klassiek handwerk naar steeds verder AI-ondersteunde ontwikkeling, met de mens onveranderd aan het roer.
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 modern, multiplayer platform voor bowtie-risicoanalyse.
SolidBowtie is het vervolg op alles wat we bij SolidQMS leerden, maar omgekeerd aangepakt. Waar bij SolidQMS de AI ná het fundament kwam, vertrok SolidBowtie er juist mee. Vanaf de eerste regel code was de ontwikkeling AI-first: brainstorm, specificatie, architectuur en implementatie liepen via Claude Code en het superpowers-framework, met commits die Claude als co-auteur vermelden.
Die werkwijze maakte ruimte voor scherpe, bewuste keuzes in de stack. 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 en één proces minder om te beheren. Voor deployment koos het Kamal met Docker in plaats van Capistrano. De interface is Hotwire waar dat kan, met een React-eiland (React Flow) voor het enige onderdeel dat een rijke canvas vraagt: de bowtie-editor zelf, met realtime multiplayer.
AI is hier geen toevoeging maar een kernfunctie: beschrijf je risico in gewone taal en Claude Opus 4.8 schetst een complete bowtie (dreigingen, gevolgen, barrières en escalatiefactoren) die je daarna verfijnt. Onder de motorkap zit degelijk vakwerk: defensieve JSON-parsing, sanitisatie van alle waarden tegen whitelists, limieten op de output en rate-limiting per gebruiker. AI die genereert, maar binnen strakke, controleerbare kaders.
SolidBowtie laat zien waar de leercurve uitkomt: niet ‘AI toevoegen aan software’, maar software ontwerpen ván de grond af mét AI.
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 | Klassiek gebouwd, daarna AI-geïntegreerd | AI-first vanaf dag één |
| Rol van AI | Vooral in het ontwikkelproces; in het product alleen waar het echt helpt | Kernfunctie én ontwerpprincipe |
| 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 |
Geen van beide vervangt het vakmanschap. De engineer met ervaring en de domeinexpert bepalen wát er gebouwd wordt en waaróm. AI versnelt het bouwen. Dat is precies hoe wij software maken: 50 jaar engineering-ervaring als kompas voor AI-agents.
Software bouwen mét AI?
Benieuwd wat een AI-first aanpak voor je product betekent? Bel 020-240.02.71 of mail menno@bonaroo.nl
Vertel ons je plan