[{"data":1,"prerenderedAt":270},["ShallowReactive",2],{"profile":3,"project-its-never-too-late":133,"projects":241},{"id":4,"about":5,"aboutTitle":6,"availability":7,"availabilityShort":8,"contact":9,"dummy":12,"education":13,"email":25,"extension":26,"focus":27,"links":28,"meta":31,"name":32,"portrait":33,"qualities":34,"site":47,"skills":50,"stem":107,"study":108,"tagline":109,"taglineHighlights":110,"terminal":113,"work":116,"__hash__":132},"profile\u002Fprofile.yml","Ik ben Jesse, tweedejaars HBO-ICT-student aan de Hogeschool van Amsterdam met de specialisatie Software Engineering. Ik ben gemotiveerd, leergierig en ondernemend: naast mijn studie bouw ik aan een eigen SaaS-product voor vakmensen. Sportief ben ik ook: ik gaf een seizoen ski- en snowboardles in Oostenrijk. Ik werk het best in een team, waar ideeën scherper worden omdat je ze deelt.\n","Ik leer het snelst door te bouwen, liefst samen met anderen.","Stage vanaf februari 2027","feb 2027",{"title":10,"text":11},"Op zoek naar een stagiair met energie?","Ik zoek een stage vanaf februari 2027. Stuur gerust een bericht.",true,[14,19],{"period":15,"current":12,"title":16,"org":17,"text":18},"2024 – heden","Bachelor HBO-ICT · Software Engineering","Hogeschool van Amsterdam","Focus op backend en AI, scrum en werken in projectteams.",{"period":20,"current":21,"title":22,"org":23,"text":24},"2018 – 2023",false,"Havo","Bonhoeffer College, Castricum","Dubbelprofiel: Natuur & Techniek en Natuur & Gezondheid.","Wilffertjesse@gmail.com","yml","Full-stack · backend & AI",{"linkedin":29,"github":30},"https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjesse-wilffert-1410b0448\u002F","https:\u002F\u002Fgithub.com\u002Fjessewilf1209",{},"Jesse Wilffert","Portrait.jpg",[35,38,41,44],{"title":36,"text":37},"Energiek","Ik breng tempo en zin in een project.",{"title":39,"text":40},"Samenwerken","Ik deel wat ik weet en vraag actief om feedback.",{"title":42,"text":43},"Loyaliteit","Ik maak af waar ik aan begin, ook als het lastig wordt.",{"title":45,"text":46},"Flexibel","Ik schakel snel tussen taken, rollen en tools.",{"version":48,"updated":49},"1.1.1","9 nov 2026",[51,67,82,95],{"group":52,"items":53},"Programmeertalen",[54,57,59,62,64],{"name":55,"note":56},"Java","2 jr",{"name":58,"note":56},"JavaScript",{"name":60,"note":61},"TypeScript","1 jr",{"name":63,"note":56},"SQL",{"name":65,"note":66},"HTML & CSS","3 jr",{"group":68,"items":69},"Frameworks",[70,73,76,79],{"name":71,"note":72},"Spring Boot","backend",{"name":74,"note":75},"Vue.js","frontend",{"name":77,"note":78},"Pinia","state",{"name":80,"note":81},"Tailwind CSS","styling",{"group":83,"items":84},"Tools",[85,87,89,91,93],{"name":86},"Git",{"name":88},"GitLab & GitHub",{"name":90},"Vercel",{"name":92},"Docker",{"name":94},"Claude Code",{"group":96,"items":97},"Talen",[98,101,104],{"name":99,"note":100},"Nederlands","moedertaal",{"name":102,"note":103},"Engels","vloeiend",{"name":105,"note":106},"Duits","basis","profile","HBO-ICT · Software Engineering, HvA","Software engineering-student die bouwt wat echt gebruikt wordt, van Java- en Python-backend tot AI-toepassing in Next.js.",[111,112],"Java- en Python-backend","AI-toepassing in Next.js",{"whoami":114,"stack":115},"jesse wilffert · student software engineering @ HvA","java  python  typescript  next.js  vue",[117,122,127],{"period":118,"current":12,"title":119,"org":120,"text":121},"2022 – heden","Keukenmedewerker","Cafetaria Family, Uitgeest","Snel en nauwkeurig werken onder tijdsdruk in een klein team.",{"period":123,"current":21,"title":124,"org":125,"text":126},"2022 – 2023","Ski- en snowboardleraar","Leverreizen, Oostenrijk","Les gegeven aan groepen van verschillende niveaus.",{"period":128,"current":21,"title":129,"org":130,"text":131},"2020 – 2022","Vakkenvuller","Albert Heijn","Eerste bijbaan: zelfstandig werken en verantwoordelijkheid nemen.","jw6i42pGEeH8DW__j6MrFUtKXp_mA51RIq34MFRkiGI",{"id":134,"title":135,"approach":136,"body":166,"cover":173,"description":170,"details":174,"dummy":21,"extension":178,"learnings":179,"links":188,"meta":190,"navigation":12,"order":191,"path":192,"problem":193,"results":206,"seo":227,"slug":228,"status":229,"statusLabel":230,"stem":231,"summary":232,"tags":233,"terminalStack":238,"year":239,"__hash__":240},"projects\u002Fprojects\u002Fits-never-too-late.md","It’s Never Too Late",{"title":137,"text":138,"flow":139,"steps":156},"Van statische HTML naar een eigen child theme.","Ik heb de site overgezet naar een WordPress child theme op Astra, met eigen PHP-templates per pagina. Zo breekt een update van het parent theme de site niet meer. Het voorinschrijfformulier heb ik zelf gebouwd, zonder plugin, omdat de templates wp_head() en wp_footer() niet aanroepen en plugins daardoor niet werkten. Daarna volgde een redesign van de hele site in CSS.",[140,144,148,152],{"kind":141,"title":142,"detail":143},"Bezoeker","QR-code of link","?bron=poster · flyer · social",{"kind":145,"title":146,"detail":147},"Pagina","Boekpagina","page-boek.php · formulier",{"kind":149,"title":150,"detail":151,"highlight":12},"Server","Eigen verwerking","nonce · honeypot · rate limit",{"kind":153,"title":154,"detail":155},"Beheer","WordPress + mail","custom post type · CSV · SMTP",[157,160,163],{"title":158,"text":159},"Formulierverwerking zonder plugin","De inschrijving loopt via admin-post.php en wordt in lagen beschermd: een nonce, een honeypot, een tijdcontrole, een rate limit per IP (een transient met een hash van het adres), validatie en een check op dubbele inschrijvingen. Na het versturen volgt een Post\u002FRedirect\u002FGet, zodat vernieuwen geen tweede inschrijving oplevert. De CSV-export beschermt tegen CSV-injectie en bevat een BOM, zodat Excel het bestand goed opent.",{"title":161,"text":162},"Cache-busting en centrale helpers","Een helper zet de wijzigingstijd van elk CSS- en JS-bestand achter de URL. Na een upload via FTP ziet de bezoeker dus meteen de nieuwe versie in plaats van een oude uit de cache. Andere helpers zorgen dat alle templates dezelfde navbar-configuratie gebruiken en nooit naar een pagina linken die nog niet bestaat.",{"title":164,"text":165},"Een robuust navbar-component","De navigatie is één JavaScript-component voor alle pagina’s. Het is beveiligd tegen dubbel laden, laadt de lettertypes zelf als een template dat niet doet en bepaalt de actieve pagina op page_id of pad, zodat Home niet altijd als actief oplicht.",{"type":167,"value":168,"toc":169},"minimark",[],{"title":170,"searchDepth":171,"depth":171,"links":172},"",2,[],"\u002Fits-never-too-late-cover.png",{"role":175,"period":176,"team":177},"Solo developer · design en development","Feb 2026 – nov 2026","Solo, met AI als hulp bij ontwerpkeuzes","md",{"title":180,"items":181},"Design dat er professioneel uitziet, en mail die aankomt.",[182,185],{"title":183,"text":184},"Een professioneel design uitwerken","Hoe je ontwerpkeuzes voor typografie, kleur en layout maakt en die consequent doorvoert in code.",{"title":186,"text":187},"Werken met webmail","De SMTP-koppeling instellen, zodat het formulier betrouwbaar bevestigings- en meldingsmails verstuurt.",{"demo":189},"https:\u002F\u002Fitsnevertoolate.nl",{},3,"\u002Fprojects\u002Fits-never-too-late",{"title":194,"text":195,"points":196},"Een site die bleef breken, en een boek dat eraan kwam.","De eerste versie bestond uit losse statische HTML-pagina’s. Die waren lastig te onderhouden en een update van het Astra-theme liet de site breken. Daarnaast kwam er een boek aan, en daarvoor moesten bezoekers zich vooraf kunnen inschrijven, zonder dat er een plugin nodig was die op deze templates niet werkte.",[197,200,203],{"title":198,"text":199},"Onderhoudbaar","Eén plek voor de navigatie en de stijl, in plaats van paden en opmaak die in elke pagina apart staan.",{"title":201,"text":202},"Voorinschrijving","E-mailadressen verzamelen voor het boek, met bevestiging aan de inschrijver en een melding aan de schrijver.",{"title":204,"text":205},"Professionele uitstraling","Een eigen ontwerp dat past bij een spreker, zonder de standaard template- of AI-look.",{"title":207,"items":208},"Live, en klaar voor het boek.",[209,212,215,218,221,224],{"title":210,"text":211},"Vijf eigen pagina’s","Home, Mijn verhaal, Referenties, Diensten en Media, met een roterende hero-slideshow op de homepage.",{"title":213,"text":214},"Voorinschrijving voor het boek","Formulier met een bevestigingsmail aan de inschrijver en een melding aan de schrijver.",{"title":216,"text":217},"Beheeroverzicht met export","Alle inschrijvingen in WordPress met extra kolommen en een CSV-export die direct in Excel opent.",{"title":219,"text":220},"Bron-tracking","Via ?bron= is te zien of een inschrijving van de poster, de flyer of social media komt. De QR-codes op poster en flyer linken daar al naar.",{"title":222,"text":223},"Privacy vastgelegd","Een eigen privacyverklaring, en bij elke inschrijving worden het tijdstip en de versie van de toestemmingstekst opgeslagen.",{"title":225,"text":226},"Volledig redesign","Nieuwe typografie (Archivo en Source Serif 4), haarlijnen en een vast kleurenpalet in CSS-variabelen, volledig responsive.",{"title":135,"description":170},"its-never-too-late","done","Afgerond en live · eigen project","projects\u002Fits-never-too-late","Volledig herbouwde website voor een spreker en ervaringsdeskundige, als eigen WordPress child theme. De site vertelt zijn verhaal, toont zijn diensten en referenties, en heeft een voorinschrijvingspagina voor zijn aankomende boek.",[234,235,58,236,237],"PHP","WordPress","CSS","HTML","wordpress · php · vanilla js","2026","IfH7J_joz1i-mTHXKcynbc1KRMJRmXiqMjtRAZK0rVc",[242,257,268],{"slug":243,"title":244,"order":245,"year":239,"status":246,"statusLabel":247,"summary":248,"tags":249,"terminalStack":256},"offerte-agent","Offerte-Agent",1,"wip","In ontwikkeling · eigen project","AI-chatwidget die hoveniers op hun eigen website plaatsen. De widget voert het intakegesprek met een potentiële klant, verzamelt alles voor een offerte (ook foto’s van de tuin) en geeft elke aanvraag een leadscore in een eigen dashboard.",[60,250,251,252,253,254,255],"Next.js","React","Supabase","PostgreSQL","Amazon Bedrock","Zod","nextjs · supabase · bedrock",{"slug":258,"title":259,"order":171,"year":239,"status":246,"statusLabel":260,"summary":261,"tags":262,"terminalStack":267},"ai-profile","AI Profile","In ontwikkeling · schoolproject","Interactieve AI-booth die eruitziet als een vriendelijke chatbot, maar ongemerkt een profiel van de bezoeker opbouwt en dat aan het einde laat zien en uitprint. Voor de opdracht GenAI Exposed van het Lectoraat Responsible IT (HvA).",[263,264,60,251,80,265,266],"Python","FastAPI","Ollama","Claude API","python · fastapi · ollama",{"slug":228,"title":135,"order":191,"year":239,"status":229,"statusLabel":230,"summary":232,"tags":269,"terminalStack":238},[234,235,58,236,237],1794297410572]