
U prošlom postu smo napisali tri principa koja vode Crolingo. Principi su jedno, izvođenje drugo. Ovdje je tehnički behind-the-scenes — šest faza razvoja, konkretan stack, trade-offovi i što je puklo.
Prvi prototip: flashcards, multiple choice, streak brojač. Klasična gamifikacija. Wafa ga koristi dva tjedna, prestaje. Problem nije bila tehnika — problem je bio što nije osjećala napredak prema konkretnom cilju: A1.1 HEP ispit za obnovu boravka.
XP score ne znači ništa kad trebaš naručiti pizzu telefonom. Ljudi ne uče jezik radi gamifikacije, uče ga radi situacija iz života.
Bacili smo lekcije tipa "Lekcija 5: pridjevi". Umjesto toga: "Scenarij: razgovor s najmodavcem", "Scenarij: naručivanje u restoranu". Svaki scenarij je dijalog koji se stvarno dogodio.
Korisnik prolazi kroz dijalog, sluša, ponavlja, AI mentor ispravlja. Supabase s JSON poljima za dijaloge (fleksibilno za česte izmjene). EU regija Frankfurt jer GDPR nije opcija, već minimum.
Bez slušanja i govora učenje jezika ne funkcionira. Snimili smo native speakere u Splitu — ne generičke snimke, već lokalni naglasak. Konobarica u Dioklecijanovoj palači ne priča kao HRT voditeljica. Taj naglasak je bitan.
Za prepoznavanje govora: OpenAI Whisper API. Alternativa je bio Google Speech-to-Text, ali Whisper ima bolju točnost za hrvatski. Za AI feedback: Anthropic Claude. GPT-4 je bio previše verbose, Claude daje konciznije ispravke koje se lakše pamte.
Trade-off: API troškovi rastu s brojem korisnika. Svaki audio request košta. Riješili smo caching na Supabase Storage za često korištene fraze + rate limiting (max 50 requestova dnevno za free tier).
Rezultat: Wafa je za šest tjedana mogla naručiti pizzu telefonom.
Većina jezičnih appova ima sučelje na 1-2 jezika. Crolingo treba 24 jer korisnici dolaze iz cijelog svijeta. Ako učiš hrvatski a materinji ti je arapski, sučelje mora biti na arapskom.
Stack: next-intl (React library za internacionalizaciju) + JSON fileovi za prijevode + dinamičko detektiranje materinjeg jezika preko browser locale i user preference. RTL support za arapski i farsi (Tailwind directionality utilities).
Wafa je bila prva testerica — arapski + francuski + engleski paralelno. Našla je 14 bugova gdje se arapski tekst overlap-ao s buttonima. Testirati na stvarnom RTL user accountu, ne samo mijenjati CSS.
Trebali smo iOS i Android. Tim od tri ljudi ne može maintainati dvije native codebases (Swift i Kotlin). React Native je alternativa, ali Next.js stack je već bio tu.
Odabir: Capacitor + Next.js + React Server Components. Jedna codebase, dvije aplikacije. Capacitor wrappa Next.js app u native container s pristupom native API-jima (mikrofon, notifikacije, storage).
Trade-off: nešto je sporiji od pravog native-a. Animacije nisu toliko smooth. Ali brzina iteracije je 5x — deployamo fix na web, iOS i Android odjednom. Za tim od tri ljudi, to je razlika između shippanja featurea za tjedan ili mjesec.
Što je puklo: OAuth flow na Androidu (koristimo Magic Link). Capacitor otvara email link u external browseru, token se gubi. Riješili smo custom deep link handling + session cookie sharing između browsera i app contexta. Jedan sat debuga, jedan red koda za fix.
Tri hotela u Splitu su nas kontaktirala: "Možemo li kupiti paket za 30 radnika?" Nije bilo planirano, ali tržište je tražilo.
Gradimo B2B layer: admin dashboard za poslodavce (pregled svih korisnika u organizaciji), group licensing (bulk kupovina preko Stripe Checkout), progress tracking i certifikati za HZZ. Launch planiran 2026.
Stack extension: Supabase Row Level Security za multi-tenant (svaka organizacija vidi samo svoje korisnike), Stripe webhooks za automatsko dodjeljivanje licenci, PDF generiranje za certifikate (react-pdf).
Frontend: Next.js 16 (App Router + RSC), Tailwind CSS, next-intl
Backend: Supabase (Postgres + Auth + Storage), EU regija Frankfurt
AI: OpenAI Whisper API, Anthropic Claude
Mobile: Capacitor (iOS + Android wrapper)
Payment: Stripe Checkout + webhooks
Hosting: Vercel (auto-scaling, EU edge)
Svaka tehnologija je odabrana iz konkretnog razloga, ne zato što je hype. Next.js jer daje SSR + RSC + mobile kroz Capacitor. Supabase jer je Postgres s ugrađenim auth i EU hostingom. Whisper jer radi s hrvatskim bolje od Googlea. Claude jer je konciziniji od GPT-a.
U sljedećem postu — priče prvih korisnika. Što su nas naučili da im je stvarno bitno.
Trebaš pomoć s projektom?
Razgovaraj s nama — direktno, bez sales pitcha.

Pet postova, jedna priča. Od splitske kuhinje do 200.000+ stranih radnika. Crolingo je sad na Google Playu. Evo gdje ga probati i što dolazi sljedeće.

Engleski kao posrednik ne radi za većinu stranih radnika u Hrvatskoj. Evo zašto materinji jezik nije luksuz nego nužnost.