Summary
✨ AI‑Generated
A hybrid software development assignment focused on stabilizing and modernizing an open-source web application used by researchers internationally. You will solve technical issues, implement new functionality, support architectural decisions, and ensure the application remains maintainable and well documented.
Highlights
Hybrid contract opportunity focused on stabilizing, modernizing, extending, and potentially rebuilding an open-source research web application used internationally across numerous research projects.
Description
Over de functie
In het kort: Je gaat M-Tool stabiliseren, doorontwikkelen en mogelijk herbouwen, technische problemen oplossen, nieuwe functionaliteiten realiseren, architectuurkeuzes onderbouwen en zorgen voor een onderhoudbare, goed gedocumenteerde en open-source webapplicatie.
Algemene informatie
Voor onze directe eindklant Universiteit Utrecht, waar wij middels een gewonnen aanbesteding preferred supplier zijn, zijn wij op zoek naar een Software ontwikkelaar voor de verdere ontwikkeling en modernisering van M-Tool.
Locatie: hybride
Opdrachtomschrijving
M-Tool is een open-source webapplicatie die aan de Universiteit Utrecht is ontwikkeld voor het in kaart brengen van mentale modellen.
De applicatie wordt momenteel gebruikt binnen meer dan 25 onderzoeksprojecten in meer dan 90 landen.
Onderzoekers gebruiken M-Tool om studies op te zetten waarin deelnemers causale kaarten maken van de relaties die zij zien tussen verschillende concepten.
De huidige applicatie is ontwikkeld in Clojure, met ClojureScript als frontend.
Een eerdere nieuwe versie heeft geleid tot regressies en een aantal functionaliteiten is nog niet volledig afgerond.
Daarom zoekt de Universiteit Utrecht een ontwikkelaar die de applicatie verder kan stabiliseren, ontwikkelen en toekomstbestendig kan maken.
Er Zijn Hierbij Twee Mogelijke Technische Richtingen
Het verder ontwikkelen en herstellen van de bestaande Clojure/ClojureScript-code; Het herschrijven van de applicatie naar een meer gangbare technologie, bijvoorbeeld TypeScript/React voor de frontend en Python of Node.js voor de backend.
Een herschrijving heeft de voorkeur, mits kan worden aangetoond dat de bestaande functionaliteit behouden blijft en de nieuwe oplossing op lange termijn beter onderhoudbaar is.
Verantwoordelijkheden
Als Softwareontwikkelaar ben je verantwoordelijk voor het stabiliseren, doorontwikkelen en toekomstbestendig maken van M-Tool.
Je werkzaamheden bestaan onder andere uit:
Stabilisatie en bestaande functionaliteit
Behouden en herstellen van de huidige functionaliteit van M-Tool.
Oplossen van regressies en technische problemen in de bestaande applicatie.
Oplossen van het probleem met conceptnamen waarin een koppelteken voorkomt, zodat data correct wordt verwerkt en geëxporteerd.
Zorgen dat de deelnemersinterface correct herschaalt bij verschillende schermformaten.
Waarborgen dat de applicatie betrouwbaar functioneert binnen de huidige onderzoeksprojecten.
Doorontwikkeling van bestaande functionaliteiten
Ontwikkelen van een betrouwbare offline versie waarmee onderzoekers data op tablets kunnen verzamelen.
Ondersteunen van offline opslag en synchronisatie zodra een tablet weer online is.
Zorgen dat gesynchroniseerde data beschikbaar komt in de online omgeving.
Implementeren van rich text voor consent-, welkomst- en afsluitteksten.
Mogelijk maken van herinneringen/pop-ups op het mapping-scherm.
Configureerbaar maken of deelnemers het doelicoon mogen verplaatsen.
Genereren van een downloadbare map met screenshots van ingediende mental maps.
Implementeren van tussentijds opslaan van een mental model via een Opslaan-knop.
Je Ontwikkelt Daarnaast Nieuwe Functionaliteiten, Waaronder
Een mappenstructuur voor studies en geüploade media.
Automatische herkenning van bestandstypen bij uploads.
Mogelijkheid voor onderzoekers om bestandsnamen te wijzigen.
Mogelijkheid voor deelnemers om zelf een icoon en bijbehorend label aan te maken, indien dit binnen een studie is toegestaan.
Een Practice Task Creator waarmee onderzoekers zelfstandig oefentaken kunnen configureren.
Automatische generatie van de bijbehorende begeleidende afbeelding.
Correcte werking van de browser Back/Vorige-knop zonder verlies van ingevoerde data.
Ondersteuning voor zowel drag-and-drop als klikinteractie bij het verbinden van concepten.
Een configureerbaar FAQ-paneel op het mapping-scherm.
Instellingen waarmee audio standaard uit kan staan.
Een optie om instructievideo’s per studie wel of niet beschikbaar te stellen.
Afhankelijk van prioriteit en beschikbare capaciteit kunnen aanvullende verbeteringen worden gerealiseerd, zoals:
Meerdere iconen tegelijk uploaden.
Instellen en zichtbaar maken van pijlgewichten.
Ondersteuning voor feedback loops.
Audio toevoegen aan het toestemmingsformulier.
Vastzetten van begin- en eindpunten op het canvas.
Richtingsvalidatie van verbindingen.
Configureerbare foutmeldingen.
In- en uitzoomen op het mapping-scherm.
Labels tonen bij het hoveren over iconen in de rechterzijbalk.
Technische verantwoordelijkheid
Adviseren over de meest geschikte technische architectuur.
Onderbouwen van de keuze tussen voortzetting van Clojure/ClojureScript en een eventuele herschrijving.
Waarborgen dat bij een eventuele migratie alle bestaande functionaliteiten behouden blijven.
Zorgdragen voor een onderhoudbare, goed gedocumenteerde en toekomstbestendige oplossing.
Samenwerken met de IT-afdeling van de Universiteit Utrecht rondom deployment.
Geschikt maken van de applicatie voor OpenShift/container deployment.
Zorgdragen dat de applicatie eenvoudig te back-uppen en herstellen is.
Testen van de applicatie en voorkomen van regressies.
Ondersteunen van een testperiode van minimaal twee weken tussen eerste oplevering en definitieve oplevering.
Zorgen dat de applicatie open-source beschikbaar en beheersbaar blijft via GitHub.
Eisen
Dienstverband: Detachering Meerdere jaren aantoonbare werkervaring met softwareontwikkeling van webapplicaties binnen een technisch complex en onderzoek gerichte omgeving.
Ervaring met Clojure en/of ClojureScript, óf aantoonbare ervaring met het analyseren, onderhouden en migreren van bestaande applicaties naar een andere technologie.
Ervaring met moderne frontendtechnologie, bij voorkeur TypeScript en React.
Ervaring met backendontwikkeling, bij voorkeur Python en/of Node.js.
Ervaring met het ontwikkelen en integreren van API’s.
Ervaring met dataverwerking en data-export.
Ervaring met responsive webapplicaties en verschillende browserformaten.
Ervaring met testen, debugging en het oplossen van regressies.
Ervaring met Git/GitHub en werken aan open-source software.
Ervaring met containerized deployments en bij voorkeur OpenShift.
Je bent in staat om bestaande code te beoordelen en op basis daarvan een onderbouwde technische aanpak te bepalen.
Je kunt zelfstandig werken en technische keuzes helder onderbouwen.
Je hebt oog voor stabiliteit, betrouwbaarheid en onderhoudbaarheid.
Wensen
Ervaring met onderzoekssoftware of tools voor dataverzameling.
Ervaring met applicaties die worden gebruikt binnen wetenschappelijk onderzoek.
Ervaring met offline-first applicaties en synchronisatie van data.
Ervaring met interactieve canvas- of mappingfunctionaliteit.
Ervaring met applicaties die internationaal en door grote aantallen gebruikers worden ingezet.
Ervaring met OpenShift en container deployment binnen een enterprise-omgeving.
Overige informatie
Optie tot verlenging: Ja, met optie op verlenging
Gespreksdatum: Onbekend
Dienstverband: Detachering
Over de opdrachtgever
De Universiteit Utrecht is een universiteit gelegen in de gelijknamige stad Utrecht.
Met meer dan 30.000 studenten en ruim 6.000 medewerkers behoort de Universiteit Utrecht tot de grotere universiteiten van Nederland.
De universiteit is bekend om haar breed scala aan opleidingen en onderzoeksgebieden.
Studenten kunnen hier terecht voor diverse bachelor- en masteropleidingen in uiteenlopende disciplines, variërend van sociologie en recht tot natuurwetenschappen en geesteswetenschappen.
De Universiteit Utrecht staat internationaal hoog aangeschreven en stimuleert grensoverschrijdende samenwerking en uitwisseling van kennis.
Het onderzoek dat aan de universiteit wordt verricht, draagt bij aan wetenschappelijke doorbraken en innovaties die de maatschappij ten goede komen.
De Universiteit Utrecht heeft een rijke academische traditie en biedt studenten en medewerkers een inspirerende omgeving om te leren, onderzoeken en groeien.
De sluitingsdatum van deze opdracht is de harde deadline van onze opdrachtgever.
Om je krachtig voor te kunnen dragen hebben wij minimaal één werkdag nodig om samen met jou alle bescheiden in orde te maken.
Wanneer je interesse hebt in deze opdracht en overtuigd bent van een sterke match, reageer dan direct! Naast een actueel en op de opdracht gericht CV zullen wij altijd vragen om een bondige persoonlijke motivatiebrief (inclusief een toelichting per functie-eis en -wens) en een indicatief uurtarief/maandloon.
Op basis van deze informatie kunnen wij voor je aan de slag! We nemen contact met je op om alle verdere details goed door te nemen en duidelijke afspraken met je te maken.