Hoe we de marketing, communicatie en offertes van Limsolar in één cloud-architectuur hebben samengebracht
Een diepgaande blik op de techstack achter het geïntegreerde lead- tot offerteplatform van Limsolar, aangedreven door Next.js, Prisma, PostgreSQL, Resend en client-side PDF-generatie.
Kutlu Taskin Tuna
15 juni 2026 · 6 min leestijd

In dit artikel bespreken we
Als installateur van zonnepanelen, thuisbatterijen, laadpalen en HVAC-oplossingen verkoopt Limsolar geen standaardpakketten, maar maatwerk en technische expertise. Net daarom botste Limsolar op een herkenbaar probleem in de sector: hoe converteer je een online lead of prijsaanvraag naar een uiterst nauwkeurige, technisch correcte offerte, zonder dat de sales-afdeling verzandt in een eindeloze cyclus van bellen, handmatige Excel-berekeningen, en het knutselen van PDF's?
Er bestaan natuurlijk generieke CRM- en ERP-tools zoals Teamleader of Salesforce. Alleen merkte Limsolar dat zulke platformen vaak te rigide zijn voor de specifieke, dynamische berekeningen die nodig zijn bij zonne-energie en klimaattechnologie. Voor je het weet ben je uren bezig met het handmatig overtypen van simulatorgegevens van de website naar je CRM, om vervolgens handmatig de juiste omvormers, montagematerialen en zonnepanelen samen te stellen in een aparte PDF-editor.
Het resultaat? Een offerteproces dat al snel uren tot dagen in beslag nam. Dit moest anders. Als innovatieve partner heeft For the Dream daarom één centrale cloud-architectuur ontwikkeld die de volledige stroom—van nieuwsbrief (marketing) en simulator (lead) tot de uiteindelijke factuur of offerte—schaalbaar, foutloos en razendsnel digitaliseert.
In deze blogpost nemen we je mee achter de schermen van Limsolar Flow: de bliksemsnelle cloud-omgeving die we voor hen hebben ontworpen en die het offerteproces heeft gereduceerd tot minder dan 10 minuten.
Van lead tot offerte in 10 minuten?
Ontdek hoe Limsolar Flow de administratieve overhead minimaliseert en de verkoop versnelt.
Bekijk de website
In dit artikel bespreken we
Bij het ontwerpen van de cloud-architectuur keken we samen met Limsolar kritisch naar de knelpunten die dagelijks tijd en leads kostten. Het resultaat is een geïntegreerd platform waar marketing, CRM en calculaties hand in hand gaan.
Potentiële klanten vullen op de website een simulator in over hun dakoppervlakte, energieverbruik en gewenste systemen. In traditionele systemen komen deze gegevens binnen via mail, waarna een sales-collega de technische parameters handmatig moet overtypen.
De website-simulator praat rechtstreeks met de PostgreSQL-database. Zodra een lead verzonden wordt, maakt Prisma een Lead-record aan. De technische parameters worden als een gestructureerd Json-object (energyNeeds) opgeslagen. De sales-admin opent de lead in het dashboard en ziet direct de exacte dakinformatie, geschatte jaarlijkse opbrengst en geselecteerde apparatuur. Geen datakoppelingen, geen fouten.
Om een offerte op te stellen, moet de calculator de prijzen van zonnepanelen, de juiste omvormer (bijv. SMA of Enphase) en montagematerialen (bijv. Esdec of Valk) combineren. Dit kostte vroeger veel tijd aan bellen, opzoeken in Excel-sheets en het exporteren naar PDF.
We bouwden een dynamische offertebuilder direct in het Next.js admin-dashboard. De admin selecteert de producten (die up-to-date zijn in de database). Het systeem berekent automatisch de B2B- of B2C-tarieven inclusief toepasbare btw-percentages. Met één druk op de knop genereert de browser via html2pdf.js en jspdf een prachtig gepersonaliseerd PDF-voorstel en verzendt dit via de Resend-API naar de klant. De status van de lead verandert instant naar QUOTE_SENT.
Om nieuwsbrieven of updates te sturen, moeten contacten handmatig geëxporteerd worden naar Mailchimp of ActiveCampaign. Dit leidt tot verouderde lijsten, GDPR-risico's en synchronisatiefouten tussen B2B- en B2C-klanten.
De database bevat een Campaign-tabel gekoppeld aan de geïntegreerde e-mailmotor. Via een ingebouwde Rich Text Editor (aangedreven door Tiptap) kan de marketingafdeling direct e-mails opstellen. Er kan gefilterd worden op doelgroep (B2B, B2C of ALL) rechtstreeks op de live productiedata. Resend verstuurt de e-mails betrouwbaar en snel, waarna statistieken direct in het dashboard verschijnen.
Swipe om alle schermen te bekijken ➔
Professionele installateurs (B2B-klanten) willen snel hun eigen prijzen inclusief discounts kunnen inzien, bestellingen plaatsen en technische fiches downloaden.
We hebben een dedicated B2B-omgeving gebouwd met **Next-Auth** en **Prisma**. Installateurs zien gepersonaliseerde netto-prijzen op basis van hun kortingsprofiel (discountendiscountTypevia deUser-tabel). Ze kunnen bestellingen plaatsen, de status realtime volgen (READY_FOR_PICKUP, SHIPPED, etc.) en direct communiceren met support via een ingebouwd chatsysteem (Ticket&ChatMessage`).
Limsolar Flow is gebouwd om schaalbaar en extreem snel te presteren. Door te kiezen voor een moderne JavaScript/TypeScript-stack is er geen onnodige server-overhead en reageert de interface vlijmscherp.
graph TD
A["Next.js Frontend (React 19)"] <-->|Prisma ORM| B[PostgreSQL Database]
A <-->|Next-Auth v5| C[Beveiligde Sessies]
A <-->|Vercel AI SDK & OpenAI| D[Slimme CRM Co-pilot]
A -->|Client-side rendering| E["html2pdf.js & jsPDF"]
A <-->|Tiptap Editor & Resend API| F[E-mailcommunicatie & Campagnes]Next.js fungeert als het hart van de applicatie. De marketing- en blogpagina's profiteren van bliksemsnelle server-side rendering, wat zorgt voor een uitstekende organische vindbaarheid. Zodra een admin of klant inlogt, zorgt React 19 voor een vloeiende app-ervaring zonder laadschermen. Gegevensuitwisseling verloopt direct via beveiligde Next.js Server Actions.
Onder de motorkap draait een krachtige PostgreSQL-database. Dankzij Prisma ORM schrijven we uiterst veilige, type-safe queries. Dit is cruciaal om complexe simulatorgegevens (zoals dakhelling, obstakels en verbruik) flexibel op te slaan in een Json-kolom (energyNeeds), terwijl transactionele data (zoals bestellingen, orders en offertes) in een strikt relationeel model bewaard blijven.
Voor alle e-mailcommunicatie—van offertes tot grootschalige nieuwsbrieven—is gekozen voor Resend. Resend garandeert een extreem hoge afleverratio en arriveert in milliseconden. De e-mail templates worden beheerd via een geïntegreerde WYSIWYG-editor op basis van Tiptap Starter Kit, waardoor beheerders zonder HTML-kennis prachtige, responsive e-mails kunnen ontwerpen.
In plaats van zware pdf-generatoren op de server te draaien die kostbare rekenkracht verbruiken, genereert de browser de offerte direct aan de client-zijde. De combinatie van html2canvas en jspdf zet de dynamische HTML-offerte in minder dan een seconde om in een officiële PDF van hoge kwaliteit, klaar om direct verzonden te worden.
Via @ai-sdk/openai is een CRM co-pilot ingebouwd. De AI helpt sales-medewerkers bij het automatisch samenvatten van klantinformatie, het genereren van e-mailantwoorden en het interpreteren van de complexe JSON-parametergegevens van binnenkomende leads.
De database is ontworpen rondom een relationele PostgreSQL-structuur om leads efficiënt te converteren naar offertes en bestellingen.
erDiagram
User ||--o{ Order : places
User ||--o{ Quote : requests
User ||--o{ Ticket : opens
Lead ||--o{ Quote : receives
Lead ||--o{ EmailMessage : receives
Quote ||--|{ QuoteItem : contains
Product ||--o{ QuoteItem : included_in
Product ||--o{ OrderLine : included_in
Order ||--|{ OrderLine : contains
Ticket ||--|{ ChatMessage : contains
User {
string id PK
string email
string company
float discount
enum role
}
Lead {
string id PK
string firstName
string lastName
string email
json energyNeeds
enum status
}
Quote {
string id PK
string quoteNumber
string leadId FK
string userId FK
date validUntil
enum status
}
QuoteItem {
string id PK
string quoteId FK
string productId FK
string description
int quantity
float unitPrice
}
Product {
string id PK
string name
string sku
float price
enum category
}
Campaign {
string id PK
string subject
string content
string targetAudience
}-
Lead: Het startpunt van de verkoopcyclus. Bevat klantgegevens en deenergyNeeds(JSON-data uit de simulator). Gekoppeld aan offertes en e-mailgeschiedenis. -
Quote&QuoteItem: Slaat de gegenereerde offertes op met een unieke nummering (YYYY/Nummer). De status verloopt vanDRAFTnaarSENT,ACCEPTED,REJECTEDofEXPIRED. -
User: Beheert zowel interne admins als B2B-klanten. B2B-klanten hebben directe kortingsregels (discountendiscountType) die doorrekenen in hun portaal. -
Campaign: Beheert de nieuwsbrieven en marketingcampagnes. E-mails worden gesegmenteerd en rechtstreeks naar de geselecteerde e-mailadressen gepusht. -
EmailMessage: Registreert alle inkomende en uitgaande e-mails (inclusiefresendId), waardoor het volledige communicatiedossier per lead direct inzichtelijk is.
Is het de moeite waard om een op maat gemaakte cloud-architectuur te bouwen voor je marketing, leads en offertes? Voor veel installateurs is een standaard ERP-systeem voldoende.
But voor Limsolar heeft deze op maat gemaakte stack het verschil gemaakt tussen administratieve chaos en digitale perfectie. De combinatie van Next.js voor een vlijmscherpe interface, Prisma en PostgreSQL voor flexibele data-opslag, en Resend voor onfeilbare communicatie bewijst dat marketing en verkoop perfect in één cloud-architectuur kunnen samensmelten.
Het resultaat spreekt voor zich: van een onoverzichtelijke wirwar van telefoontjes en handmatige PDF's naar een gestructureerd, digitaal offerteproces in minder dan 10 minuten. Limsolar is klaar voor de toekomst van duurzame energie.
Klaar om je lead- en offerteprocessen te automatiseren?
Neem contact met ons op en ontdek hoe we een naadloze cloud-omgeving bouwen voor jouw onderneming.
Kennismaken?
Over de auteur
Kutlu Taskin Tuna deelt regelmatig zijn ervaringen over software architectuur, e-commerce-automatisering en het bouwen van performante platformen. Verder praten?
Klaar om je legacy te bouwen?
Ontvang elke week scherpe strategieën, praktijkvoorbeelden en nieuwe denkkaders. Direct in je inbox.
Geen spam. Uitschrijven kan altijd.




