Én applikation til landets frivillige indsamlere
Én applikation til landets frivillige
"Hej, jeg samler ind for Røde Kors. Vil du give et bidrag?"
Hvert år engagerer Røde Kors tusinder af frivillige indsamlere over hele landet, for at hjælpe mennesker i nød over hele planeten. Landsindsamlingen er Danmarks største humanitære indsamling og involverer flere end 20.000 frivillige – og en enkelt applikation.
Det hele sker den første søndag i oktober, og planlægningen foregår mange mange måneder inden. Frivillige koordinatorer kontakter indsamlerne fra året før, rekrutterer nye indsamlere, skriver en masse mails og forklarer, hvad der skal ske hvornår.
Det giver sjældent mening at bygge det samme
Der skal tildeles ruter, der skal aftales mødesteder og tidspunkter, indsamlingsbøsser skal bestilles og uddeles. Kort sagt: Milliarder af detaljer skal på plads. En oplagt opgave for en applikation.
Allerede tilbage i 2005 – før både iPhone og twitter kom til verden – byggede vi da også en skræddersyet applikation til at styre Røde Kors’ årlige landsindsamling. Vi har udviklet på den lige siden, men i 2017 måtte vi give op. Den gamle applikation kunne ikke længere udvides.
"Så byg en ny. Den skal bare kunne det samme som den gamle,” sagde Røde Kors. Og her måtte vi bare svare, at “beskeden om ‘bare at bygge det samme’ har vi fået mange gange før, men det bør næsten altid ende med noget nyt”. For den digitale verden flytter sig hurtigt, og der er tusinde gode grunde til at lave nye systemer bedre end de gamle.
Brugeroplevelsen i fokus
Sammen investerede vi derfor tid i at definere behovet – og derefter endnu mere tid på at give brugerne en rigtig god oplevelse. Brugeroplevelsen var vigtig, fordi applikationen skal betjenes af hundreder af frivillige, hvoraf de fleste er plus 50, og de må selv vælge, om de vil bruge det. Så enten blev det godt – eller også blev det lige meget.
Samtidig ønskede foreningen at kunne styre kommunikationen, således at sprogtonen, frekvensen og Call to Actions i de enkelte mails fra koordinator til indsamlere, lever op til Røde Kors’ standard. Færre opkald til supporten stod også på ønskesedlen. Og det lykkedes alt sammen.
De frivillige indsamlingsledere har bogstavelig talt kastet sig over systemet. De er glade for det gode overblik, de har fået over indsamlere, materialer og mødesteder.
Tine Brendstrup, konsulent hos Røde Kors.
Deler omkostninger til udvikling
Røde Kors inviterer nu andre store NGO’er, som også samler ind over hele landet, til at bruge systemet. Dels fordi det er godt at deles om en god ting, men naturligvis også for at dele udgifterne til den videre udvikling.
Fællesnævneren blandt beslægtede organisationer er nemlig stor, og nuancerne er til at fikse. Det samme så vi hos TV 2’s mange regionale stationer, som i dag deles om en fælles CMS platform, som dækker ret forskellige behov hos de enkelte – til en brøkdel af prisen.
Tænk engang. Et it-projekt der holder deadline!
Ingrid Falkenham, Projektleder – Fundraising & Marketing, Røde Kors.
Vi glæder os til at arbejde videre med platformen for Røde Kors og andre, ikke mindst til at samle endnu flere data op og analysere dem for at effektivisere indsamlingen til glæde for nødstedte medmennesker på hele planeten.
Den 1. oktober 2017 indsamlede de mange frivillige mere end 18 millioner kroner.
Sådan blev applikationen til
Applikationen er skrevet i PHP 7 og er baseret på MVC-framework’et Symfony og en underliggende MySQL database med replikering.
Core applikationen er bygget op omkring en datamodel med 24 entiteter. Den eksponerer en web-frontend, to Restful API’er og en række Commands, som typisk køres i baggrunden. Setuppet er tilpasset til vores eksisterende driftsplatform bestående af loadbalancer + webnoder. Derfor gemmes sessions i en Redis cache som kan tilgås fra alle webnoder.
Vi har fået langt bedre data, meget bedre styr på kommunikationen og færre opkald til vores support.
Tine Brendstrup, konsulent hos Røde Kors
Den primære grænseflade er web-interfacet som benyttes af Administratorer, indsamlingsledere og telemarketingmedarbejdere, som alle har forskellige privilegier i systemet der indeholder informationer om de næsten 100.000 indsamlere som har deltaget siden 2000.
API’er
Røde Kors håndterer deres mange ruter i et eksternt system, hvorfra vi henter data via en API-klient, således at informationerne altid er lige ved hånden.
Udsendelse af mails til indsamlerne sker via API-kald til PeytzMail som er et helt separat system. PeytzMail henter modtagerlister på udsendelsestidspunktet via et enkelt API-endpoint i core applikationen.
Indsamlere kan melde sig til via en side, som Røde Kors selv vedligeholder. Tilmeldingen modtages i systemet via et API, som i høj grad er baseret på RestBundle fra Friends of Symfony.
Asynkron afvikling
Nogle rapporter er tunge at generere, og afvikles derfor asynkront i baggrunden vha. et databasebaseret egenudviklet message-queue system. Når rapporten er klar, sendes den til brugeren i Excel format.
Generelt er koden skrevet efter alle Symfony’s og PHP community’ets best practices – PSR-specifikationerne, og vi har i videst muligt omfang anvendt eksisterende pakker, for bedst muligt at sikre
Docker med compose
Frontend’en er bygget med twig templates. For at kunne tilbyde auto-complete, realtime søgning, filtrering og sortering har vi yderligere suppleret med javascript.
Under hele udviklingsforøbet har vi anvendt docker og docker-compose hvilket har givet os gode muligheder for at teste et real-world lignende miljø med redis, databaseserver,graylog, mailtest, js- og css minification osv.