FaceUp: 1,3 milionu uživatelů ve 70+ zemích. A vývojový tým, který musí držet krok.
FaceUp je globální whistleblowing platforma z Brna. Když produkt začal růst rychleji než engineering, převzali jsme roli CTO as a Service, sjednotili vývoj a po zhruba roce předali zdravý tým internímu CTO.
FaceUp začínal jako studentský projekt Nenech To Být, appka na anonymní hlášení šikany na školách. Dnes je z něj globální whistleblowing a compliance platforma, které věří 1,3 milionu uživatelů ve víc než 70 zemích. Jak produkt a prodej akcelerovaly, engineering přestával stíhat tempo. Přišli jsme jako CTO as a Service, abychom vývoji dali řád a připravili ho na další růst.
„Sjednotili jsme s Cookielabem vývoj a nastavili procesy, na kterých dnes staví náš interní tým. Přesně ta pomoc, kterou jsme v dané fázi potřebovali.“
Příběh spolupráce
FaceUp rostl raketově. Expanze na všechny kontinenty, Series A financování, klienti jako Mercedes-Benz, Heineken nebo KFC. Takové tempo ale tlačí na tým, který produkt staví. Vývoj se štěpil, plánování nesedělo s realitou a část energie se pálila jinde, než produkt potřeboval.
Nastoupili jsme jako CTO as a Service. Ne doplnit ruce, ale převzít technické vedení. Nejdřív jsme pochopili, kde to drhne: jak tým plánuje, jak měří velocity, kde se ztrácí čas. Pak jsme začali narovnávat proces, prioritizaci i architekturu.
Zlomový byl hackathon, na kterém jsme sjednotili codebase. FaceUp měl v jedné codebase tři různé generace kódu vedle sebe. Sloučili jsme je do jednoho standardu a přepsali na něj to staré. Vývoj se tím zrychlil a zjednodušil pro celý tým.
Od začátku jsme počítali s tím, že naším cílem není zůstat navždy. Když FaceUp dozrál k vlastnímu internímu CTO, předali jsme mu uklizený engineering, na kterém může dál stavět.
Výzvy
Nejtěžší nebyla technika, ale lidé a procesy. Narovnat delivery v týmu zvyklém na svůj způsob práce, a přitom nezastavit vývoj, který musí běžet dál pro globální klienty. Bylo potřeba tým získat na svou stranu, ne nařizovat shora.
Co dál
FaceUp pokračuje pod vedením vlastního interního CTO na základech, které jsme postavili společně. Přesně tak má CTO as a Service vypadat. Přijdeme, když to dává smysl, a odejdeme, až je klient silnější než předtím.
Technicky šlo o zralý SaaS ve fázi hypergrowthu. GraphQL, TypeScript, React, běh na AWS ve více regionech včetně Middle East. Frontend se za roky několikrát přepsal, backend nesl větší technický dluh. Úkol: zrychlit delivery, aniž bychom zastavili vývoj produktu pro globální klienty.
Co jsme dodali
„FaceUp je přesně ten typ projektu, který máme rádi. Zdravě rostoucí produkt, reálný dopad a technická výzva v podobě codebase, kterou bylo potřeba sjednotit. Nešli jsme do velkého přepisu, krok po kroku jsme uklidili základy, na kterých teď staví jejich vlastní tým.“
Technologie
Příběh spolupráce
FaceUp používá GraphQL na frontendu tak, jak se má. Backend na to ale nebyl uzpůsoben, což vytvářelo výkonnostní strop. Zatímco frontend se několikrát přepsal, na backendu se dluh nabaloval. Nešli jsme cestou velkého "big bang" přepisu. Místo toho jsme začali zavádět abstrakce, které vývoj odblokují, a postupně tlačit k modulární architektuře.
Nejviditelnějším krokem bylo sjednocení codebase na hackathonu. V jedné codebase koexistovaly tři generace kódu. Zavedli jsme jeden standard, přepsali na něj to staré a na frontendu přešli na Suspense queries. Výsledek je codebase, ve které se noví i stávající vývojáři zorientují mnohem rychleji.
Souběžně jsme řešili provozní zralost. Feature flags pro bezpečné vydávání, oddělený staging ve vlastním AWS účtu, čistší práci s Gitem. A protože jde o whistleblowing platformu, všechno v rámci end-to-end šifrování a bez kompromisů v bezpečnosti. Poslední vrstvou byla adopce AI-assisted codingu, přechod na Claude Code jako součást každodenního workflow.
Co dál
Dokončení modulární architektury a "Abstract Forms" přebírá interní CTO. Základ, tedy sjednocená codebase, feature flags, multi-region AWS a AI-assisted workflow, je připravený škálovat dál.


