Één slim platform, oneindig veel mogelijkheden
Bij Marsvaardig hebben we een krachtig multisite Software-as-a-Service (SaaS) platform ontwikkeld dat de basis vormt voor al onze websites en webapplicaties.
Dit platform stelt ons in staat om snel en efficiënt hoogwaardige websites te bouwen voor onze klanten, waarbij elke klant profiteert van continue verbeteringen en updates.
Ons platform is ontworpen volgens het 'shared codebase, separate data' principe. Dit betekent dat alle klantwebsites draaien op dezelfde moderne, goed onderhouden codebasis, terwijl de data en content van elke klant strikt gescheiden blijft. Deze aanpak biedt belangrijke voordelen:
- Kostenefficiënt: ontwikkelingen en verbeteringen komen direct beschikbaar voor alle klanten
- Schaalbaar: nieuwe websites kunnen snel worden opgezet
- Betrouwbaar: het platform is uitvoerig getest en continu in ontwikkeling
- Veilig: security updates worden centraal doorgevoerd
- Flexibel: maatwerk is mogelijk binnen het gestandaardiseerde framework
In dit document nemen we je mee onder de motorkap van ons platform en lichten we de technische infrastructuur toe die dit alles mogelijk maakt.
Inhoudsopgave
Basis Architectuur
Ons platform draait op een robuuste cloud infrastructuur die is opgezet met schaalbaarheid, betrouwbaarheid en prestaties als uitgangspunt.
We maken gebruik van Digital Ocean's cloud platform in hun Amsterdam datacenter (AMS3) voor maximale flexibiliteit en betrouwbaarheid. Deze strategische locatie zorgt voor:
- Optimale snelheid voor onze Benelux klanten
- Naleving van Europese privacywetgeving (GDPR/AVG)
- Uitstekende connectiviteit met belangrijke internetknooppunten
- Betrouwbare fysieke infrastructuur
Server Infrastructuur
De basis van ons platform bestaat uit meerdere gespecialiseerde servers:
Core Platform Servers (Digital Ocean Droplets)
- Frontend Servers (2x):
- 2GB RAM, 2 AMD vCPUs, 25GB Disk
- Geoptimaliseerd voor het serveren van webpagina's
- Redundante setup voor hoge beschikbaarheid
- Backend Servers (2x):
- 2GB RAM, 2 AMD vCPUs, 25GB Disk
- Gescheiden van frontend voor betere beveiliging
- Redundante setup voor continue beschikbaarheid
- Load Balancer:
- 4GB RAM, 2 AMD vCPUs, 25GB Disk
- Optimale verdeling van verkeer
- Automatische health checks
- Naadloze failover
Database Infrastructuur (Digital Ocean Managed MySQL)
- Productie Database:
- 8GB RAM, 2 vCPUn 40GB Disk
- Standby node voor instant failover
- Automatische backups en updates
- Staging Database:
- 2GB RAM, 1 vCPU, 40GB Disk
- Volwaardige ontwikkelomgeving
Specialistische Servers
- Laravel Service Droplet:
- 1GB RAM, 1 AMD vCPU, 25GB Disk
- Sitemap generatie
- PDF conversie
- Image Processing Server:
- 4GB RAM, 2 Intel vCPUs, 25GB Disk
- Eigen images.weserv.nl instantie
- Responsive image processing
Storage & Content Delivery
- Digital Ocean Spaces:
- S3-Compatible Object Storage
- Centrale opslag voor media en uploads
- Automatische backups
- Hoge beschikbaarheid
- Geoptimaliseerd voor content delivery
- Cloudflare CDN:
- Global edge caching
- DDoS bescherming
- SSL/TLS management
- DNS beheer
- Web Application Firewall
- Performance optimalisatie
Open Source Stack
Bij Marsvaardig geloven we sterk in de kracht van open source software.
Ons platform is gebouwd op de schouders van tientallen uitstekende open source projecten. We zijn dankbaar voor al deze tools en libraries die ons dagelijks helpen om betere en betaalbare websites te bouwen.
Frontend Development Tools
Build & Development Tools
- Grunt - JavaScript task runner voor automatisering
- Webpack - Module bundler voor moderne JavaScript applicaties
- Sass - De meest volwassen en stabiele CSS extension language
UI Components & Interactie
- Flickity - Touch-responsive carrousels
- PhotoSwipe - Moderne JavaScript lightbox library
- Micromodal - Toegankelijke modale vensters
- Tippy.js - Complete tooltip oplossing
- Plyr - Een eenvoudige, toegankelijke HTML5 mediaspeler
- HoudiniJS - Toegankelijke show/hide functionaliteit
- Balance Text - Verbeterde tekstopmaak voor headlines
- Menu Animation - Soepele menu animaties
- Draggabilly - Sleep-en-laat-vallen functionaliteit
- Pickadate - Mobiel-vriendelijke datum/tijd selector
Performance & Optimalisatie
- LazySizes - Lazy loading voor afbeeldingen
- SVGO - SVG optimalisatie tool
- Lite Vimeo - Lichtgewicht Vimeo embeds
CSS Frameworks & Utilities
- Illusion - Ons eigen SCSS framework
- Family.scss - Handige SCSS mixins
Backend Libraries
Application Architecture
- Kodekit Platform - Web Application Platform
Beeldverwerking
- Imagine - PHP beeldmanipulatie library
- PHP Image Resize - Eenvoudige image resizing
E-commerce & Betalingen
- VAT Calculator - BTW berekeningen
- SEPA QR - SEPA QR-code generatie
E-mail & Communicatie
- Swiftmailer - E-mail verzending
- Email Validator - E-mail validatie
Content & Media
- Parsedown - Markdown parser
- HTML to Markdown - HTML naar Markdown conversie
- DIDom - HTML/XML parser
- Embed - URL embed informatie
- mPDF - PDF generatie
- iCal - iCalendar bestanden
- QR Code - QR-code generatie
Utilities & Tools
- Hashids - Genereer korte unieke ID's
- Slugify - URL-vriendelijke strings
- UUID - UUID generatie
- PHP Geo - Geografische berekeningen
- PHP Domain Parser - Domain naam parsing
- CODA Parser - CODA bestand parsing
Security & Spam Prevention
- OTPHP - Twee-factor authenticatie
- Firebase JWT - JWT authenticatie
Development & Deployment
- PHPDotEnv - Laad .env bestanden
- Opis Closure - Serialisatie van closures
Alle bovenstaande libraries zijn open source en worden actief onderhouden door hun respectievelijke communities. We zijn dankbaar voor hun bijdragen aan het open source ecosysteem.
Waarom open source?
Door te bouwen op open source technologie kunnen we:
- Sneller innoveren
- Gebruik maken van bewezen oplossingen
- Transparant zijn over onze werkwijze
- Kosten effectief ontwikkelen
Component Architectuur
Platform Basis
Gebruikersbeheer
- Inloggen en rechten (acl, users)
- Beheer van rollen en groepen
- Sessiebeheer
- Twee-factor authenticatie (TOTP)
Inhoudsbeheer
- Pagina's en menustructuur
- Versiebeheer en revisies
- Meertalige content
- Bestandsbeheer
- Zoekmachine-optimalisatie
Bedrijfscomponenten
Webwinkel & Producten
- Uitgebreid productbeheer
- Categorieën en voorraad
- Bestellingen en betalingen
- Klantenbeheer
- Multi-shop ondersteuning
Horeca & Reserveringen
- Menu- en gerechtenkaarten
- Tafelreserveringen
- Zaalplannen
- Allergeneninformatie
Evenementen & Tickets
- Evenementenbeheer
- Kaartverkoop
- Filtermogelijkheden
Portfolio & Referenties
- Projectenpresentatie
- Klantervaringen
- Categorieën
Marketing & Communicatie
Nieuwsbrieven
- Abonneebeheer
- Campagne-opvolging
- Geautomatiseerde verzending
Beoordelingen & Sociale Media
- Recensiebeheer
- Platform koppelingen
- Instagram integratie
Formulieren & Contact
- Formulierenbouwer
- Inzendingenbeheer
- Openingstijden
Vastgoedbeheer
- Projectbeheer
- Pandenoverzicht
- Zoekfilters
- Statusopvolging
Development & Deployment
Ontwikkelomgevingen
Lokale Development:
- Docker containers
- Puppet configuratie
- Identiek aan productie
Staging:
- Volwaardige testomgeving
- Klantacceptatie
- Feature testing
Productie:
- Hoge beschikbaarheid
- Performance monitoring
- Automatische scaling
Git Workflow
- Feature branch strategie
- GitHub voor versiebeheer
- Pull Request reviews
- Capistrano deployments
Database Management
- PHPMig voor migraties
- Versiebeheer voor schema's
- Geautomatiseerde updates
- Zero-downtime changes
Externe Integraties
E-commerce
- Mollie betalingen
- Sendcloud verzending
- CCV terminals
- Teamleader CRM
Administratie
- Yuki boekhouding
- Octopus facturatie
- Postmark e-mail
Content Services
- Unsplash afbeeldingen
- Serper SEO tracking
- CleanTalk spam preventie
Monitoring & Beveiliging
Performance Monitoring
- New Relic applicatie monitoring
- Updown.io beschikbaarheid
- Error tracking
- Performance metrics
Security
- Cloudflare beveiliging
- SSL/TLS encryptie
- WAF protection
- DDoS mitigatie
Backup Strategy
- Snapshooter management
- Backblaze storage
- Google Cloud EU backup
- 30-dagen retentie
Alerting
- Slack notificaties
- SMS voor kritieke issues
- 24/7 monitoring
- Proactieve detectie
12-Factor App Methodologie
De 12-Factor App methodologie is een set van best practices voor het bouwen van moderne, schaalbare webapplicaties. Bij Marsvaardig volgen we deze principes om een robuust en onderhoudbaar platform te garanderen.
Codebase & Configuratie
We werken met één centrale codebase in Git, waarbij omgevingsspecifieke instellingen (zoals database credentials of API keys) worden beheerd via environment variables. Dit zorgt ervoor dat dezelfde code probleemloos kan draaien in verschillende omgevingen:
- Development (lokaal via Docker)
- Staging (voor testing)
- Productie
Dependencies & Services
Alle dependencies worden expliciet gedeclareerd en geïsoleerd. Bijvoorbeeld:
- PHP dependencies via Composer
- Frontend dependencies via npm
- Externe diensten (zoals Mollie of Postmark) worden behandeld als verwisselbare resources
Build & Deployment
We hanteren een strikte scheiding tussen build- en runtime-processen:
- SCSS compilatie en asset optimalisatie gebeurt tijdens de build fase
- Capistrano zorgt voor gecontroleerde deployments
- Docker garandeert consistente ontwikkelomgevingen
Schaalbaarheid & Betrouwbaarheid
Onze applicatie is ontworpen voor schaalbaarheid:
- Stateless design waarbij sessiedata wordt opgeslagen in de database
- Load balancing over meerdere frontend servers
- Snelle opstart en graceful shutdown van processen
Logging & Beheer
We behandelen logs als event streams:
- Centralized logging via New Relic
- Gestructureerde logging voor betere zoekbaarheid
- Admin processen draaien in dezelfde omgeving als de applicatie
Voordelen van deze Aanpak
- Consistente ontwikkelervaring
- Betrouwbare deployments
- Eenvoudige schaalbaarheid
- Verbeterde onderhoudbaarheid
- Hogere stabiliteit
Subprocessors & Service Providers
Infrastructuur
-
Digital Ocean
- Cloud hosting provider
- Datacenter: Amsterdam (AMS3)
- Droplets, Spaces, Managed Databases
-
Cloudflare
- DNS management
- CDN & Security
- DDoS protection
- SSL/TLS management
Monitoring & Performance
-
New Relic
- Application monitoring
- Error tracking
- Performance metrics
-
Updown.io
- Externe beschikbaarheidsmonitoring
- Uptime checks (elke minuut)
E-commerce & Betalingen
-
Mollie
- Payment service provider
- Online betalingen
- Transactieverwerking
-
Sendcloud
- Verzendlabel management
- Track & trace
-
CCV
- Betaalterminal integratie
- Offline betalingen
Boekhouding & Administratie
-
Yuki
- Factuurdoorstroming
- Boekhouding
-
Octopus
- Factuurdoorstroming
- Boekhouding
-
Teamleader
- CRM
- Product management
- Webshop integratie
E-mail & Communicatie
Spam Preventie
Content & Media
Development Tools
-
GitHub
- Code repository
- Version control
- Issue tracking
-
Docker
- Lokale development
-
Puppet
- Configuration management
-
Capistrano
- Deployment automation
-
Grunt
- Build tooling
- SCSS compilatie
Backup & Security
-
Snapshooter
- Backup management
-
Backblaze
- Backup storage
-
Google Cloud Storage
- Europese backup storage
-
Untangle
- VPN management
Domeinen
-
DNS Belgium
- Officiële .be registrar
- Domeinbeheer België
-
SIDN
- Officiële .nl registrar
- Domeinbeheer Nederland
-
Cloudflare & Gandi
- Andere top-level domeinen