Job Openings Front-End Developer Rich Text Editor

About the job Front-End Developer Rich Text Editor

Voor ICTU zoeken wij een Front-End Developer Rich Text Editor. Je werkt aan het ontwikkelen van een gebruiksvriendelijke content management interface en rich text editor, waarmee contentmakers eenvoudig toegankelijke content kunnen publiceren volgens de componenten en richtlijnen van het NL Design System.

Met jouw inzet help je mee om de digitale toegankelijkheid in Nederland te verbeteren met de hulpmiddelen die het expertteam ontwikkelt. Je draagt bij aan de doorontwikkeling van het NL Design System als overheidsbreed open source white-label design system.

Jouw verantwoordelijkheden omvatten:
  • Ontwikkelen van een toegankelijke front-end applicatie met een rich-text editor.
  • Ontwikkelen van herbruikbare front-end webcomponenten.
  • Ontwikkelen van een rich-text editor variant, gebaseerd op TipTap en CKEditor, waarmee je een editor kunt bouwen op basis van NL Design System componenten die content opslaat volgens een strikt schema voor CMS-en zoals Drupal, TYPO3 en WordPress.
  • Opstellen van definities voor content, zoals JSON Schema's of TipTap node types, voor componenten zoals Image, Table en Accordion.
  • Ontwikkelen van server-side templates, bijvoorbeeld Twig templates, om de content te tonen voor verschillende componenten.
  • Implementeren van gebruiksvriendelijke foutherkenning voor ontoegankelijke content.
  • Uitvoeren van transformaties van datastructuren om ontoegankelijke content met één druk op de knop te verbeteren, zoals het converteren van Bold Table Cells naar Table Heading Cells, Table Row naar Table Caption, Paragraph naar Heading, en Paragraphs naar List Items.
  • Realiseren van real-time client side validatie van content om toegankelijkheid te meten.
  • Ontwikkelen volgens de architectuur van het NL Design System.
  • Opstellen van testplannen en testscenario's om de software te testen met veelvoorkomende content.
  • Maken van een koppeling met de REST API van content-management systemen.
  • Ontwikkelen van geautomatiseerde tests, zowel end-to-end als unit tests.
  • Verbeteren van de software op basis van feedback van toegankelijkheidsspecialisten, het kernteam en gebruikersonderzoek.
  • Documenteren van kansen voor verbetering en technical debt in de backlog.
  • Up-to-date houden van de front-end applicatie door maandelijks code dependencies te updaten.
  • Samenwerken met professionals uit het Expertteam Digitale Toegankelijkheid bij het ontwikkelen en begeleiden van (online) workshops over toegankelijke huisstijl.
  • Uitvoeren van activiteiten voor valideren en uitbreiden van templates, patronen en documentatie in overleg met het expertteam.
  • Deelnemen aan sprint planningen (eens per twee weken).
  • Waar nodig, deelnemen aan refinements in een privé Slack Huddle van het team.
  • Reviewen van pull requests van andere experts om vroegtijdig feedback te geven.
  • Voortgang delen in het privé Slack kanaal van het team en tijdens de NL Design System Heartbeat.
  • Deelnemen aan publieke Huddles om gezamenlijk nieuwe aanpakken voor templates, patronen of componenten te bepalen.

Je behaalt tijdens de opdracht de volgende deelresultaten:
  • Contentdefinities en validatieregels per component om toegankelijkheid te testen en ontoegankelijke content te herkennen.
  • User stories voor scenario’s rondom het maken en herstellen van toegankelijke content, inclusief implementatie van de rich text editor en testautomatisering voor veelvoorkomende variaties van ontoegankelijke content.
  • Geautomatiseerde tests om de kwaliteit van de software te meten.
  • User stories voor het controleren van content op toegankelijkheid aan de hand van previewschermen, waarmee je specifieke aspecten zoals koppenstructuur, linkteksten, alt-teksten en kleurgebruik controleert.

Aan het einde van de opdracht lever je de volgende eindresultaten op:
  • Een website met een rich-text editor waarmee gebruikers de meestgebruikte rich-text componenten van het NL Design System kunnen inzetten, en begeleid worden naar een toegankelijk resultaat.
  • Een open source rich-text editor als npm package, te integreren met CMS-en zoals Drupal, TYPO3 en WordPress.
  • Open source packages voor validatielogica.
  • Werkende plugins voor ten minste twee CMS-en (Drupal, Typo3 of WordPress).
  • Werkende acceptatieomgeving van twee CMS-en voor de betreffende plugins.
  • Duidelijke documentatie zodat CMS-developers zelfstandig de plugins kunnen implementeren.
  • Documentatie waarmee het beheer van de referentie-implementatie en packages kan worden overgedragen.

De opdracht wordt afgerond zodra de opdrachtgever de opgeleverde resultaten heeft geaccepteerd en alle activiteiten en instrumenten van het Expertteam Digitale Toegankelijkheid zijn overgedragen aan de beheerpartij en nazorg is uitgevoerd.

Voor deze opdracht heb je specialistische kennis nodig over rich-text editors, CMS-en en Component Libraries. De gewenste kennis en ervaring vind je hieronder terug.

Jouw profiel
  • Je beschikt over uitgebreide ervaring met toegankelijke content in HTML, zoals koppenstructuur, alternatieve teksten, video- en audiocontent met ondertitels en transcriptie, linkteksten, complexe tabellen, lijststructuren en content in meerdere talen.
  • Je hebt ervaring met veelvoorkomende soorten ontoegankelijke content, zoals het gebruik van semantische elementen voor opmaak of andersom.
  • Je hebt ervaring met de verantwoordelijkheid dragen voor toegankelijkheid van een website, waarbij de content door anderen wordt gemaakt.
  • Je weet hoe je de toegankelijkheid van content meetbaar verbetert, ook wanneer die content door anderen is aangemaakt.
  • Je hebt ervaring met het aanpassen van rich text editors via JavaScript API’s.
  • Je kunt schema’s maken voor rich text data.
  • Je hebt ervaring met het renderen van content uit een CMS met toegankelijke templates.
  • Je bent vaardig in het ontwikkelen van client-side meerstapsformulieren met state management in JavaScript.
  • Je hebt ervaring met het builden van front-end code met TypeScript en ES Modules, en tools zoals Vite.
  • Je kunt herbruikbare componenten uit Design Systems of Component Libraries toepassen.
  • Je werkt pragmatisch en deelt werk op in kleine stappen en fases.
  • Je benut zonder code-duplicatie bestaande onderdelen, zodat verbeteringen in zowel bestaande als nieuwe websites bruikbaar zijn.
  • Je hebt uitgebreide ervaring met moderne JavaScript (ECMAScript), waaronder ES Modules, import(), URL, async/await, Map, Set, map/filter/reduce, nullish coalescing, class, import.meta, Promises, Object entries en destructuring.
  • Je hebt ervaring met het gebruik van npm packages, werken met monorepositories en het publiceren van npm packages met semantic versioning.
  • Je hebt ervaring met TypeScript in Node.js.
  • Je weet REST APIs te gebruiken voor het vullen van webpagina’s met data.
  • Je hebt ervaring met unit tests en end-to-end tests voor front-end code, bijvoorbeeld met Jest, Vitest, Cypress of Playwright.
  • Je beschikt over goede mondelinge en schriftelijke communicatieve vaardigheden.
  • Je werkt zelfstandig en bewaakt je eigen voortgang als onderdeel van scrum planning.
  • Je werkt accuraat, gedisciplineerd en kunt een diversiteit aan werkzaamheden ordenen, prioriteren en hierover afstemmen met de Product Manager.
  • Je hebt ervaring met open source werken en vindt het vanzelfsprekend om alles, inclusief het proces, open en transparant te delen.

Competenties
  • Goede mondelinge en schriftelijke communicatieve vaardigheden.
  • Zelfstandig werken en eigen voortgang bewaken binnen scrum.
  • Nauwkeurigheid, disciplinair werken en prioriteren van werkzaamheden.
  • Pragmatisch en oplossingsgericht.

Organisatie
ICTU

Functie-eisen

  • Je beschikt over een goede schriftelijke beheersing van de Nederlandse taal
  • Je kunt goed mondeling samenwerken tijdens online en fysieke bijeenkomsten
  • Je beschikt over een goede schriftelijke beheersing van de Engelse taal
  • Je bent bereid bij te dragen aan het NL Design System
  • Je hebt concrete ervaring opgedaan in de context van deze aanvraag, afgestemd op het gewenste aantal jaren of projecten

Functie-wensen

  • Je hebt aantoonbare relevante ervaring met het aanpassen van het datamodel en de user interface van een rich text editor, zoals TipTap of CKEditor
  • Je hebt in de afgelopen 5 jaar aantoonbare relevante ervaring met het ontwikkelen, documenteren en onderhouden van open source projecten
  • Je hebt aantoonbare relevante ervaring met de W3C Authoring Tool Accessibility Guidelines (ATAG)
  • Je hebt aantoonbare relevante ervaring met de ontwikkeling van plugins in een of meer van de volgende CMS-en:
    1. Drupal
    2. WordPress
    3. Typo3
  • Het is een pre als je ervaring hebt met het NL Design System, bijvoorbeeld door het toepassen van design tokens in JSON, het documenteren van componenten in Storybook, deelname aan de Slack-community en het hergebruiken van communitycomponenten
  • Je werkt pragmatisch en oplossingsgericht om tot goede resultaten te komen
  • Je werkt nauwkeurig om tot een toegankelijk en onderhoudbaar resultaat te komen