
Recorder: inginerie pe aplicații native și platformă de donații pentru jurnalism independent
Inginerie continuă pe aplicații native iOS + Android și o platformă completă de donații pentru cea mai importantă redacție independentă din România — peste 3.000 de abonați recurenți, sute de mii de tranzacții și aproape 40.000 de formulare 230.
Rezultate
- Inginerie continuă pe aplicații native iOS și Android pentru peste 3.000 de abonați recurenți
- Serviciu de plăți care procesează sute de mii de tranzacții pe patru procesatori
- Migrare a mii de susținători recurenți de la Braintree la Stripe, cu continuitate a datelor de facturare și audit complet
- Peste 40.000 de trimiteri Form 230 (redirecționare 3,5% impozit) automatizate end-to-end pentru ANAF
- Cinci surse de plăți și donatori unificate într-un singur CRM Salesforce
- Audituri automate de sănătate a plăților și remediere clienți duplicați
Stack tehnic
abonați recurenți
tranzacții de plată
formulare 230 (aproape)
procesatori de plăți
Recorder este cea mai importantă redacție de jurnalism investigativ independent din România. Finanțată aproape în întregime din donații ale cititorilor, produce investigații video de lung format care modelează în mod repetat dezbaterea publică — după orice metrică rezonabilă, una dintre redacțiile cu cel mai mare impact din țară.
O platformă ca aceasta nu are voie să cadă duminică dimineața. Aplicațiile și stack-ul de donații trebuie să funcționeze pur și simplu.
Când am intrat în proiect, Recorder avea deja aplicații native iOS și Android în producție — dar avea nevoie de un partener de inginerie constant pentru mentenanță, livrare de funcționalități majore și sincronizarea ambelor platforme pentru peste 3.000 de abonați recurenți. Dedesubt, banii erau problema mai grea: un stack de plăți care gestiona sute de mii de tranzacții pe patru procesatori, cu Braintree în curs de închidere. Datele donatorilor erau fragmentate între Braintree, Stripe, PayPal, Patreon și Benevity, fără o singură sursă de adevăr pentru retenție sau raportare. Iar Formularul 230 — redirecționarea de 3,5% din impozitul pe venit către ONG-uri în România — generase deja aproape 40.000 de trimiteri printr-un proces manual, bogat în PII, care alimenta PDF-uri în lot către autoritatea fiscală (ANAF).
01 · Citește
Acasă și investigații
Un feed nativ de investigații, știri zilnice și videostory-uri — încărcări instant, categorii și căutare pe iOS și Android.
02 · Urmărește și ascultă
Articol, video și audio
Investigații complete cu video embedded și player audio pe capitole. Redarea supraviețuiește navigării — un mini player rămâne fix în timp ce cititorii continuă să navigheze.
03 · Susține
Donează în două tap-uri
Donații unice sau lunare prin Stripe PaymentSheet cu Apple Pay și Google Pay — fără să tastezi cardul.
04 · Gestionează
Istoric și abonament
Susținătorii revizuiesc fiecare donație trecută prin Apple Pay, Google Pay, Link și card, apoi actualizează sau anulează un cadou recurent în app — susținut de serviciul unificat de plăți.
05 · Donează mai mult
Formular 230, refăcut nativ
Românii pot redirecționa 3,5% din impozitul pe venit către o organizație non-profit. Majoritatea ONG-urilor îl colectează pe hârtie. Am livrat întreg fluxul ANAF în app — cinci pași, fiecare județ, semnătură pe ecran — acum cu aproape 40.000 de trimiteri.

aplicație nativă

aplicație nativă

aplicație nativă

aplicație nativă

aplicație nativă
01 · Native
Două aplicații native
Swift + SwiftUI pe iOS și Kotlin + Jetpack Compose pe Android — menținute cu paritate de funcționalități pe un contract mobile-api/v1 comun.
02 · API
Un API REST pe WordPress
Un mu-plugin mobile-api/v1 expune autentificare, conținut, donații și profile peste fluxul editorial în care redacția lucrează deja.
03 · Plăți
Un serviciu de plăți pe Render
Un serviciu Node/Express frontează Stripe, Braintree, PayPal și Patreon — sute de mii de tranzacții, contracte Form 230 în PostgreSQL și audituri automate de sănătate.
04 · CRM
O singură vedere a donatorului în Salesforce
Importatorii Apex consolidează fiecare sursă de plăți plus Form 230 și consimțământ într-o singură înregistrare de donator, cu exporturi segmentate pentru retenție.
05 · Conformitate
Form 230, automatizat
Un formular public de trimitere plus un generator de PDF-uri în lot — aproape 40.000 de formulare de redirecționare 3,5% procesate pentru ANAF, cu CNP eliminat înainte de importul în CRM.
06 · Ops
Garduri de sănătate a plăților
Audituri automate Stripe și remediere clienți duplicați mențin baza recurentă curată și raportarea onestă.
Echipa editorială Recorder lucrează în WordPress. Să le ceri să migreze la un CMS headless doar ca aplicațiile să aibă un API curat ar fi taxat oamenii care produc efectiv jurnalismul în fiecare zi.
În schimb, am livrat un mu-plugin WordPress care expune un namespace curat mobile-api/v1 — autentificare, articole, dashboard, FAQ, donații, profil și un log de consimțământ GDPR. Firebase verifică tokenul ID; serverul emite un JWT de aplicație; fiecare request autentificat poartă în plus headerul x-recorder-auth. Aplicațiile consumă același contract, astfel încât o funcționalitate livrată pe o platformă ajunge pe cealaltă în câteva zile.
Cea mai stresantă parte a întregului angajament. Tokenurile de metodă de plată nu se convertesc între procesatori, deci un lift-and-shift era exclus. Am construit o migrare tranzacțională care recreează fiecare abonament în Stripe mai întâi și anulează partea Braintree doar la succes — păstrând ancorele ciclului de facturare și lăsând o pistă auditabilă. Un flux WordPress self-service de re-colectare a cardului a acoperit subsetul care avea nevoie de o metodă de plată nouă.
Abonamente Braintree → CSV
Import Stripe idempotent
Braintree anulat doar dacă Stripe e ok
Fiecare succes și eșec logat
Mii
de susținători recurenți migrați
4
etape pipeline · continuitate facturare
Rezultat: mii de abonați mutați între procesatori cu continuitate a datelor de facturare, un pipeline tranzacțional import-apoi-anulare și un rezultat înregistrat pentru fiecare abonament — peste un strat de plăți care procesa deja sute de mii de tranzacții.
2024 · T2 · 01 / 07
Începe parteneriatul
Am preluat aplicațiile SwiftUI și Compose existente — mentenanță, release-uri și lucrări de platformă pe stack-ul WordPress al Recorder.
2024 · T4 · 02 / 07
Design migrare
Toolkit-ul de migrare mapează clienții Braintree la Stripe cu o strategie tranzacțională import-apoi-anulare.
2025 · T1 · 03 / 07
Serviciu de plăți live
Serviciul de plăți Node/Express se deployează pe Render, unificând Stripe, Braintree, PayPal și Patreon.
2025 · T2 · 04 / 07
Consolidare Salesforce
Importatorii Apex aduc fiecare sursă de plăți, Form 230 și consimțământ într-o singură vedere a donatorului.
2025 · T4 · 05 / 07
Întărire migrare
Remediere clienți duplicați, campanii de retenție și localizare facturi românești pe baza Stripe.
2026 · T1 · 06 / 07
Automatizare Form 230
Un generator de PDF-uri în lot pentru ANAF automatizează birocrația de redirecționare 3,5% — aproape 40.000 de trimiteri Form 230 și în creștere.
2026 · acum · 07 / 07
Lucru continuu pe produs
Release-uri continue pe aplicații, îmbunătățiri Stripe checkout și audituri automate de sănătate a plăților.
Două clienți native (iOS SwiftUI, Android Compose) comunică cu un backend WordPress REST (mobile-api/v1) pentru conținut, autentificare și profil, autentificându-se prin token Firebase ID → JWT de aplicație cu log de consimțământ GDPR. Plățile trec printr-un plugin WordPress Stripe plus un serviciu Node/Express standalone pe Render, care integrează Stripe, Braintree, PayPal și Patreon și stochează contractele Form 230 în PostgreSQL. Un CRM Salesforce consumă acel serviciu prin importatori Apex zilnici, consolidând fiecare sursă într-o singură vedere a donatorului și exportând liste segmentate pentru retenție. Lucrările în lot — migrarea Braintree→Stripe, localizarea facturilor și generarea PDF ANAF — rulează ca scripturi ops offline.
- Braintree→Stripe prin recreare-apoi-anulare (tranzacțional), nu lift-and-shift — tokenurile de metodă de plată nu se convertesc, deci recrearea abonamentelor a păstrat ancorele de facturare și a oferit o pistă auditabilă, la costul unui flux self-service de re-colectare pentru unii donatori.
- WordPress ca backend de conținut/autentificare mobilă — reutilizarea fluxului editorial existent, la costul modelării REST și autentificării ca mu-plugin-uri și menținerii plăților într-un serviciu separat.
- Un serviciu de plăți dedicat pe Render care frontează fiecare provider — ține logica multi-provider adiacentă PCI și integrarea CRM în afara WordPress, la costul unui alt deployable.
- Eliminarea CNP înainte de importul în CRM — minimizarea PII în Salesforce pentru GDPR, la costul păstrării reconcilierii ANAF în pipeline-ul dedicat Form 230.
- Un singur produs Stripe dinamic cu prețuri per sumă — sumele donațiilor variază continuu, deci asta evită un tabel fragil de lookup al planurilor, la costul multor obiecte Price.
- Două aplicații native menținute și extinse pe iOS și Android, deservind peste 3.000 de abonați recurenți
- Sute de mii de tranzacții de plată procesate pe patru procesatori printr-un serviciu de plăți dedicat
- Migrare completă Braintree → Stripe cu continuitate a datelor de facturare și importuri tranzacționale auditabile
- Aproape 40.000 de trimiteri Form 230 automatizate end-to-end — intake public plus PDF-uri în lot pentru ANAF
- Cinci surse de plăți și donatori unificate într-un singur CRM Salesforce cu segmentare automată pentru retenție
- Garduri operaționale: verificări automate de sănătate Stripe și remediere clienți duplicați
Jurnalismul real merită inginerie reală. Suntem mândri că acest proiect este în portofoliul nostru.
