Dienst · Web-ontwikkeling

Vue website laten maken.

Maatwerk websites en webapplicaties op basis van Vue 3 met de Composition API, Nuxt voor SSR en SSG, en Pinia voor state. Voor productteams die snel willen itereren, voor klantportalen, dashboards en e-commerce, en voor Nederlandse stacks die Vue combineren met Laravel via Inertia.js.

Vue 3 & Composition APINuxt 3PiniaInertia.js

Vue als pragmatische default voor Nederlandse teams.

Vue is in Nederland verrassend dominant. Veel agency-teams die uit een PHP- en jQuery-traditie komen pakken Vue sneller op dan React: de template-syntax oogt als HTML met directives, single-file-components houden markup, logica en styling visueel bij elkaar, en de leercurve is voor een back-end-ontwikkelaar lager dan bij een JSX-gebaseerd framework. Vue voelt vertrouwd voor mensen die met Blade-, Twig- of Smarty-templates hebben gewerkt, en dat verklaart waarom u het zo vaak terugziet in onderwijs-, overheid- en MKB-portfolios.

Een Vue-stack is daarmee geen exotische keuze maar een stevige standaard. Het ecosysteem is volwassen, de release-cyclus voorspelbaar en de tooling rond Vite, Nuxt, Pinia en VueUse hangt in dezelfde geesteshouding: kleine API-oppervlakken, expliciete defaults, zo min mogelijk magie. Voor productteams die snel iteratie-tempo willen aanhouden zonder elke twee jaar van paradigma te wisselen, is dat een prettige basis. We bouwen Vue-projecten als onderdeel van ons bredere palet web-ontwikkeling, naast Astro-, React- en Laravel-projecten.

De vraag die in onze eerste gesprekken altijd terugkomt is niet of Vue technisch geschikt is — dat is het bijna altijd — maar of het de juiste keuze is voor uw team en uw product. Soms is Vue inderdaad de pragmatische default. Soms past React beter, wanneer Next.js of het bredere React-ecosysteem doorslaggevend zijn. Soms is Svelte interessanter, en heel soms blijft Angular het juiste antwoord bij een bestaande Angular-base. Dat eerlijke gesprek voeren we voordat er een regel code wordt geschreven.

Drie typische Vue-trajecten.

De Vue-aanvragen die wij ontvangen vallen meestal in één van drie patronen. Welke past, hangt af van of u een interactieve webapplicatie wilt, een marketing- of content-site die als statische export draait, of een hybride product met server-side-rendering en routing. We adviseren over de juiste vorm in de scoping-fase.

Compact traject · vast sprintbudget

Vue-webapplicatie of klantportaal

Een ingelogde Vue-app voor een afgebakende doelgroep: een klantportaal, een dashboard, een planning-tool of een interne werkomgeving. Vue 3 met de Composition API als front-end, een REST- of GraphQL-API daaronder, Pinia voor state, Vue Router 4 voor de navigatie en een component-library zoals PrimeVue, Naive UI of Vuetify voor de bouwstenen. Geschikt voor B2B-portalen, vendor-dashboards en interne tooling.

Vue 3 + VitePiniaVue RouterPrimeVue / Naive UI
Middelgroot traject · vast sprintbudget

Nuxt-website met SSR of SSG

Een marketing-site, productcatalogus of content-platform op basis van Nuxt 3. Server-side-rendering voor SEO en eerste-paint-performance, statische generatie voor pagina's die zelden wijzigen, en hybrid rendering voor combinaties — statisch voor de homepage, server-rendered voor de zoekresultaten, client-side voor het ingelogde dashboard. Edge-deploy via Cloudflare Pages, Vercel of Netlify houdt de TTFB laag.

Nuxt 3Hybrid renderingNitro server-routesEdge-deploy
Groter traject · vast sprintbudget

Laravel + Vue via Inertia.js

De combinatie die in Nederland heel veel wordt gevraagd: een Laravel-backend voor data, auth en business-rules, met Vue als front-end zonder dat u een aparte API-laag hoeft te schrijven. Inertia.js stuurt props direct vanuit de controller naar Vue-pagina's, behoudt de SPA-ervaring en houdt het mentale model dichtbij een klassieke server-rendered app. Ideaal voor SaaS-producten, e-commerce en bedrijfsapplicaties waar Laravel al de keuze is.

LaravelInertia.jsVue 3Eloquent + Pinia

De technologie-keuzes die we maken.

Een Vue-project is meer dan alleen het framework. Elk van de onderstaande keuzes heeft impact op de bouwsnelheid, de beheerbaarheid en hoe uw team de codebase over een paar jaar nog kan onderhouden. Een korte rondleiding door wat we typisch inzetten en waarom.

Framework

Vue 3 met Composition API

Vue 3 is de huidige major-versie en is de standaard voor nieuwe projecten. We werken consequent met de Composition API en <script setup>-syntax: minder boilerplate, betere TypeScript-inferentie en composables die u tussen projecten kunt hergebruiken. Options API ondersteunen we in legacy-projecten waar migratie geen prioriteit heeft, maar we starten nieuwe codebases nooit zo.

Meta-framework

Nuxt 3 voor SSR en SSG

Nuxt 3 is voor Vue wat Next.js is voor React: file-based routing, ingebouwde server-routes via Nitro, auto-imports, hybrid rendering en data-fetching-utilities die het standaardiseren wat anders zelfbouw zou zijn. Voor sites die SEO of een server-rendered first-paint nodig hebben is Nuxt de default. Voor pure ingelogde SPA's pakken we Vue 3 met Vite zonder Nuxt om de architectuur eenvoudiger te houden.

State-management

Pinia als opvolger van Vuex

Pinia is sinds 2022 de officieel aanbevolen state-library van het Vue-team en de feitelijke standaard. De API is type-safe, de devtools-integratie is excellent en de stores zijn composables onder de motorkap — dat past naadloos op de Composition API. Vuex zetten we niet meer in voor nieuwe projecten; bestaande Vuex-codebases migreren we incrementeel naar Pinia waar dat zinvol is.

UI-componenten

Vuetify, PrimeVue, Naive UI of Vueform

Vuetify is de oude bekende met Material-design, geschikt wanneer brand-uniformiteit geen harde eis is. PrimeVue biedt een breed palet en is sterk voor enterprise-dashboards. Naive UI is licht en flexibel voor projecten die hun eigen design-system willen voeden. Vueform reserveren we voor formulier-zware applicaties — offerte-flows, lange aanmeldformulieren, configuratoren. Voor volledig op maat starten we met Headless UI Vue plus Tailwind.

Forms en validatie

VeeValidate of Formkit

Forms zijn waar veel webapplicaties op vastlopen: validatie die uit sync raakt met de backend, slechte error-states, ontoegankelijke labels. We werken met VeeValidate gecombineerd met Zod- of Yup-schema's die we delen tussen client en server. In Vueform- of Formkit-trajecten gebruiken we de eigen schema-laag, met dezelfde regel: één bron van waarheid, gebruikt door zowel client-validatie als server-validatie.

Testing

Vitest plus Playwright

Vitest is de Vite-native test-runner, snel en met dezelfde configuratie als uw bouw. Voor unit-tests van composables en utilities is dat de juiste tool. Voor componenten zetten we Vue Test Utils in op Vitest. End-to-end-tests draaien op Playwright, soms aangevuld met Cypress wanneer een team daar al ervaring mee heeft. De CI draait beide suites op elke pull request — regressies vangen we daar af, niet bij de demo.

Utilities

VueUse als zwitsers zakmes

VueUse is een collectie van honderden composables voor browser-API's, sensoren, klembord, geolocatie en netwerk-detectie. Bijna elk project dat we doen leunt erop. De composables zijn tree-shakeable, dus alleen wat u gebruikt komt in de bundle terecht. Voor utilities die VueUse niet heeft, schrijven we eigen composables met dezelfde conventies.

Styling en hosting

Tailwind plus Vercel, Netlify of Cloudflare Pages

Tailwind is voor de meeste projecten onze default voor styling: snelle iteratie en goede co-locatie met de template. Voor Nuxt 3 zijn Vercel en Netlify de meest voor de hand liggende deploy-targets — first-class ondersteuning en preview-URL's per pull request. Cloudflare Pages kiezen we wanneer edge-distributie of een lage TTFB in Europa belangrijk is. Zelf hosten kan ook: Nuxt achter een Node-server in Docker, naast uw bestaande infrastructuur.

Wat u krijgt aan het einde.

Een productieklare Vue-applicatie, plus alles eromheen om het zelf te beheren, uit te bouwen of door een andere bouwpartij te laten overnemen. Geen black-box.

  • De Vue-applicatie in productie + stagingTwee environments, draait in uw cloud (GCP, AWS, Azure, Cloudflare) of bij ons. CI/CD-pipeline klaar voor doorontwikkeling met preview-builds per pull request.
  • TypeScript-codebase plus design-systemVolledige source met TypeScript van begin tot eind, gedocumenteerde single-file-components, een Histoire- of Storybook-catalogus, en design-tokens die uw merk in code vastleggen.
  • Server- of API-laagNuxt-server-routes, een aparte REST- of GraphQL-API, of een Laravel-backend wanneer we voor Inertia.js kiezen. OpenAPI- of GraphQL-schema, met een typed client zodat front-end en back-end nooit uit sync raken.
  • Test-suite en performance-budgetVitest-unit-tests, Playwright-end-to-end-tests, accessibility-checks tegen WCAG 2.2 AA en duidelijke Core Web Vitals-doelen die we per release toetsen via Lighthouse en webpagetest.
  • Documentatie en runbookArchitectuur-overzicht, deployment-instructies, een runbook voor incidenten en een korte ontwikkelaars-onboarding die laat zien hoe iemand op dag één productief is in de codebase.
  • Beheer-contract (optioneel)Monitoring, dependency-updates, security-patches en doorontwikkeling. Vaste maandprijs, verschillende reactietijd-niveaus, en de garantie dat de codebase niet stilstaat in de tijd.

Wanneer Vue de juiste keuze is.

Vier patronen waarin een Vue-stack echt waarde toevoegt. Herkent u uw situatie hierin, dan praten we graag verder — en als Vue niet past, zeggen we dat ook in het eerste gesprek.

Nederlandse team-context

Vanuit PHP en jQuery naar SPA

Uw eigen team komt uit een PHP- of Laravel-wereld en heeft jaren met server-rendered templates gewerkt. De stap naar een SPA voelt groot. Vue's template-syntax, single-file-components en lagere learning-curve maken die overstap zacht. Veel Nederlandse agency-teams kiezen om die reden Vue boven React.

Productontwikkeling

Snel iteratie-tempo houden

U heeft een product dat continu evolueert — nieuwe features per sprint, A/B-tests, copy-aanpassingen. De Composition API en hot-module-replacement van Vite maken de feedback-loop kort, en Vue's reactiviteit voorkomt veel boilerplate die u in andere frameworks wel zou schrijven. Het tempo waarin u kunt itereren is direct merkbaar.

Klantportalen en dashboards

Ingelogde tooling met state

U bouwt een omgeving waarin gebruikers langere sessies doorbrengen: een klantportaal, een dashboard, een planningstool. Vue 3 met Pinia handelt complexe client-state elegant af, en de component-libraries voor enterprise (PrimeVue, Vuetify) bieden alle tabellen, formulieren en widgets die u typisch nodig heeft.

Laravel + Vue via Inertia

Geen aparte API-laag

Uw backend is Laravel en u wilt een rijke front-end zonder een aparte REST- of GraphQL-laag te schrijven. Inertia.js geeft u een SPA-ervaring waarbij de Laravel-controller direct props naar Vue-pagina's stuurt. U behoudt de mentale eenvoud van een klassieke server-rendered app, maar krijgt de UX van een SPA. In Nederland populair, en terecht.

En wanneer Vue niet de beste keuze is.

Vue is geen universele oplossing. In deze situaties adviseren we vaker iets anders — we leveren liever een eerlijk advies dan automatisch ons eigen voorkeurs-framework.

Enterprise-context

Wanneer het React-ecosysteem doorslaggevend is

Bij enterprise-projecten waar diepe integratie met Next.js, het React-ecosysteem of een React-monorepo-strategie centraal staat, is React vaak de pragmatischere keuze. U vindt makkelijker capaciteit op de markt, third-party-libraries hebben React eerst en Vue later, en uw team kan overstappen naar React Native voor mobile zonder opnieuw te beginnen.

Legacy-stack

Bestaande Angular-codebase

Heeft u al een productie-Angular-app waar uw team productief in is? Migreren naar Vue is zelden de juiste investering. Angular is een volwassen framework met een actieve roadmap, en de migratie-pijn weegt bijna nooit op tegen de winst. We helpen graag met modernisering binnen Angular zelf — nieuwe Angular-versie, signals, standalone components — in plaats van een framework-switch.

Bleeding edge

React Server Components-patterns

Wilt u expliciet werken met React Server Components, Server Actions of een Next.js App Router-patroon dat op de bleeding edge zit? Dat ecosysteem leeft in React. Vue heeft eigen sterke server-rendering via Nuxt en Nitro, maar als u specifiek de RSC-aanpak nodig heeft, kies dan React. We zijn daar eerlijk over.

Pure content-site

Een marketing-site zonder veel interactie

Voor een puur content-gedreven site — blog, brochure, kennisbank zonder ingelogde flow — is Astro of een klassieke server-rendered stack vaak een betere fit dan Nuxt. Vue ingelogde tooling bovenop een Astro-publieke site is een werkbare combinatie die we regelmatig leveren, en die meestal goedkoper is dan alles in Nuxt te bouwen.

Nog niet zeker over een groot traject?

Test je idee eerst — werkend prototype in 1 dag

Met OneDayBuild maken we je idee in één dag tastbaar voor €950, zodat je weet of verdere ontwikkeling de investering waard is. Besluit je door te gaan met de volledige bouw? Dan verrekenen we de kosten volledig.

Bekijk OneDayBuild →

Vue tegenover React en Svelte.

De drie frameworks die u realistisch overweegt voor een nieuw web-project zijn Vue, React en Svelte. Elk heeft sterke punten en eerlijke nadelen. Geen van drieën is universeel beter — de context bepaalt welke past. Hier in één adem.

Sterk in · leesbaarheid en NL-adoptie

Vue 3

Sterk in: leesbaarheid van de template-syntax, lagere learning-curve voor back-end-developers, kleinere bundle dan React standaard, naadloos met Laravel via Inertia, en sterke aanwezigheid in het Nederlandse onderwijs- en agency-veld. Minder sterk in: enterprise-marktaandeel in NL is kleiner dan React, en het Engelstalige ecosysteem is dunner.

Composition APINuxt 3Inertia.jsPinia
Sterk in · ecosysteem en talentpool

React

Sterk in: het grootste ecosysteem van alle drie, de meeste third-party-libraries, de grootste talentpool en daarmee de laagste capaciteits-risico's, plus directe overstap naar React Native voor mobile via gedeelde componenten. Minder sterk in: JSX en de complexere mental-model voor mensen zonder front-end-historie, en grotere baseline-bundle dan Vue of Svelte.

Next.jsReact NativeGrootste ecosysteemTanStack Query
Sterk in · compile-time efficiency

Svelte

Sterk in: compile-time-aanpak betekent kleinere runtime, schonere syntax dan Vue en React, en SvelteKit als compleet meta-framework voelt heel productief. Minder sterk in: het ecosysteem is duidelijk dunner, third-party-component-libraries zijn beperkter, en in NL is de talentpool kleiner. Een prima keuze voor performance-kritische projecten of teams die het bewust kleinschalig willen houden.

SvelteKitCompile-timeKlein ecosysteemPerformance-focus

Hoe een Vue-traject bij ons loopt.

1

Kennismaking en scoping

Een vrijblijvend gesprek waarin we begrijpen welke flows de Vue-applicatie moet ondersteunen, hoe het in uw bestaande landschap past, en of een SPA, een SSR-site of een hybride aanpak het beste antwoord is. Vaak vergelijken we hier ook Vue tegenover React — en als React de eerlijke keuze is, zeggen we dat.

2

Tech-keuze en UX-workshop

We bepalen samen het framework (Vue 3 met of zonder Nuxt), de state-aanpak (Pinia of niet), de UI-component-library (PrimeVue, Naive UI, Vueform of headless), en de backend-strategie. Parallel werken we de eerste schermflow uit in Figma met u en een paar eind-gebruikers, zodat de bouw start vanaf een gedragen ontwerp. Voor stacks met Laravel maken we hier de keuze tussen Inertia.js en een aparte API-laag.

3

Bouw in sprints

Elke twee weken een werkende build die u kunt testen. We bouwen horizontaal: eerst een werkende end-to-end-flow met één rol, dan verdieping, dan extra rollen of modules. Performance-budget, accessibility-checks en TypeScript-strictheid lopen vanaf sprint één mee. Pull requests worden gereviewd, preview-builds rollen automatisch uit, en u kunt op elk moment bijsturen.

4

Hardening, uitrol en overdracht

In de laatste sprints draaien we een accessibility-audit (WCAG 2.2 AA), Lighthouse-rapport en penetratietest. Daarna gefaseerde uitrol naar uw gebruikers en formele oplevering met documentatie. Het beheer kunnen we voor u doen, of we dragen netjes over aan uw eigen team met een runbook, een overdracht-sessie en optionele achtervang voor de eerste maanden.

Fabian van Dijk Business developer · Appfront

Eerste aanspreekpunt voor Vue-trajecten bij Appfront. Bereikbaar op fabian.vandijk@appfront.nl voor een vrijblijvende kennismaking over wanneer Vue past in uw stack — en wanneer React, Svelte of een Laravel + Inertia-combinatie het eerlijke antwoord is.

Veelgestelde vragen over Vue.

De vragen die opdrachtgevers stellen voordat we beginnen aan een Vue-traject.

Vue of React — wat moeten we kiezen?
Kies Vue wanneer uw team uit een PHP- of Laravel-wereld komt, u Inertia.js wilt gebruiken, of u de template-syntax leesbaarder vindt dan JSX. Kies React wanneer u Next.js wilt, een groot React-ecosysteem nodig heeft, of later naar React Native voor mobile wilt overstappen met gedeelde componenten. Beide werken voor 90 procent van de projecten; de context bepaalt welke past.
Is Vue future-proof? Wordt het nog onderhouden?
Ja. Vue 3 is de huidige major-versie met voorspelbare release-cycli en LTS-versies. Pinia heeft Vuex officieel opgevolgd, Vue Router is op versie 4 en Nuxt 3 is een grondige rewrite. Het Vue-team werkt structureel samen met de maintainers van Vite, Vitest en Nuxt, waardoor het hele ecosysteem in dezelfde geesteshouding evolueert. In Nederland is Vue dominant bij agencies, onderwijsinstellingen en MKB, wat de talentpool stabiel houdt.
Wat is Inertia.js precies en wanneer kiezen jullie het?
Inertia.js koppelt Laravel (of een andere server-rendered backend) aan Vue zonder dat u een aparte REST- of GraphQL-API hoeft te schrijven. De Laravel-controller stuurt props direct naar Vue-pagina's, Inertia handelt de navigatie client-side af zoals een SPA, en u behoudt het mentale model van een klassieke server-rendered applicatie. We kiezen Inertia.js wanneer één team zowel front-end als back-end onderhoudt en een aparte API-laag voor één consument over-engineered zou zijn.
Hoe zit het met SEO bij een Vue-site?
SEO bij Vue is geen probleem mits u de juiste vorm kiest. Voor publieke pagina's die hoog moeten ranken zetten we Nuxt 3 in met server-side-rendering of statische generatie — dat geeft volledige HTML die Google direct kan indexeren. Per pagina-type wisselen we: prerender voor pagina's die zelden wijzigen, SSR voor pagina's die regelmatig wijzigen, client-side rendering voor het ingelogde dashboard. Een pure client-side SPA voor de publieke site raden we af — first-paint en consistentie blijven beter met SSR.
Kunnen jullie ook een bestaande Vue 2-applicatie migreren?
Ja. Vue 2 is sinds eind 2023 end-of-life en krijgt geen security-updates meer, dus migreren is op een gegeven moment onvermijdelijk. We doen het incrementeel: eerst naar Vue 2.7 (die de Composition API backport), daarna de Vue 3-migratie via de officiële Migration Build die beide versies parallel laat draaien. Vuex naar Pinia en Options API naar Composition API gebeurt in pagina's die we toch aanraken. Geen big-bang-rewrite.
Welk UI-component-library kiezen jullie?
Dat hangt af van het project. PrimeVue voor enterprise-dashboards met veel tabellen en complexe formulieren. Naive UI of Headless UI Vue plus Tailwind voor projecten waar uw merk-look strak moet zijn. Vuetify wanneer Material-design uw doel-aesthetic is. Vueform voor formulier-zware applicaties zoals offerte-flows. Vrijwel altijd combineren we de gekozen library met een eigen design-system-laag, zodat componenten vervangbaar blijven zonder de rest te raken.
Hoe regelen jullie state-management?
Pinia is de standaard. Voor server-state gebruiken we TanStack Query (Vue-versie) of de ingebouwde data-fetching van Nuxt 3 — die handelen caching, refetching en optimistic updates goed af. Vuex zetten we niet meer in voor nieuwe projecten. Het uitgangspunt: zo min mogelijk globale state, en wat er is hoort in Pinia, niet verspreid over composables.
Werken jullie samen met onze eigen ontwikkelaars?
Ja, dat doen we vaak. Sommige klanten willen de Vue-applicatie volledig door ons laten bouwen en daarna in beheer nemen; andere willen vanaf dag één co-development zodat hun eigen team de codebase straks kan overnemen. In beide setups zijn we productief, zolang we vooraf duidelijke afspraken maken over code-ownership, review-protocollen en de overdracht. Voor stacks waarbij we Vue combineren met een Laravel-backend kijken we ook naar capaciteit via full-stack-developer inhuren, zodat één persoon zowel Vue als Laravel kan oppakken.
Hoe regelen we auth in een Vue-applicatie?
Voor klantportalen kiezen we vaak een hosted IdP zoals Auth0 voor sociale logins, SAML en SSO. Voor privacy-gevoelige sectoren of on-premise-eisen zetten we Keycloak in. In Laravel + Inertia-stacks gebruiken we Laravel Sanctum voor session-based auth en Laravel Passport voor token-based, met aan Vue-zijde een composable die de auth-state via Pinia bijhoudt. Een eigen JWT-stack bouwen we alleen bij een sterke reden, omdat auth-fouten duur zijn.
Hoe zit het met accessibility en AVG?
Accessibility wordt vanaf dag één meegenomen: semantische HTML, ARIA waar nodig, focus-management bij client-side-routing en contrast-checks tegen WCAG 2.2 AA. Voor B2B-applicaties onder publieke aanbestedingen of EN 301 549 leveren we ook een toegankelijkheidsrapport. AVG-compliance is standaard: data blijft in de EU (Cloudflare EU, Vercel EU-regions of een eigen EU-cloud), privacy-by-design-architectuur, en DPIA waar relevant.
Wat bepaalt de kosten en de doorlooptijd?
Het aantal en de complexiteit van de schermen, het aantal rollen en rechten, de diepte van de integraties, en of we ook een server-laag of API moeten bouwen. Een afgebakend Vue-portaal met één rol is een ander gesprek dan een Nuxt-platform met meerdere rollen, SSR en drie integraties. We werken met vaste sprintbudgetten zodat u per sprint controle houdt over de uitgaven, en committen ons aan een sprint-cadans en heldere milestones in plaats van een vast getal dat de scope geweld zou aandoen. In het eerste gesprek schetsen we samen de scope en geven we een eerlijke indicatie.

Praat met ons over uw Vue-project.

Een kennismaking van een half uur, vrijblijvend. We luisteren naar wat u wilt bouwen, kijken hoe het in uw bestaande stack en team past, en geven een eerlijk advies — Vue, React, Svelte of een Laravel + Inertia-combinatie — in plaats van automatisch ons eigen voorkeurs-framework te verkopen.

Edit Content