[{"data":1,"prerenderedAt":236},["ShallowReactive",2],{"i-circle-flags:fr":3,"project-en-\u002Fprojects\u002Fgosim":8,"projects-nav-en":208,"i-mdi:android":229,"i-mdi:apple":232,"i-mdi:google-play":234},{"left":4,"top":4,"width":5,"height":5,"rotate":4,"vFlip":6,"hFlip":6,"body":7},0,512,false,"\u003Cmask id=\"SVGqdEcMdXs\">\u003Ccircle cx=\"256\" cy=\"256\" r=\"256\" fill=\"#fff\"\u002F>\u003C\u002Fmask>\u003Cg mask=\"url(#SVGqdEcMdXs)\">\u003Cpath fill=\"#eee\" d=\"M167 0h178l25.9 252.3L345 512H167l-29.8-253.4z\"\u002F>\u003Cpath fill=\"#0052b4\" d=\"M0 0h167v512H0z\"\u002F>\u003Cpath fill=\"#d80027\" d=\"M345 0h167v512H345z\"\u002F>\u003C\u002Fg>",{"id":9,"title":10,"appStore":11,"body":12,"company":161,"cover":162,"description":163,"extension":164,"gallery":165,"illustration":175,"kind":176,"links":175,"live":177,"meta":178,"metrics":179,"navigation":183,"order":184,"ownership":185,"path":186,"platforms":187,"playStore":190,"role":191,"seo":192,"stack":193,"stem":204,"summary":205,"year":206,"__hash__":207},"projects_en\u002Fprojects\u002Fgosim.md","GoSIM — eSIM app rebuilt in React Native","https:\u002F\u002Fapps.apple.com\u002Fus\u002Fapp\u002Fgosim-esim-unlimted-internet\u002Fid6749241521",{"type":13,"value":14,"toc":144},"minimark",[15,20,24,28,31,35,64,68,73,76,80,83,87,90,94,102,106,113,117,126,130],[16,17,19],"h2",{"id":18},"context","Context",[21,22,23],"p",{},"GoSIM sells travel eSIMs inside the Goubba ecosystem: pick a destination, pay, and install a data plan without visiting a shop. The first version was a Vue 3 app wrapped in Capacitor. As the product grew — top-ups, partial payments, guest checkout, loyalty points, marketing campaigns — the WebView shell reached its limits: janky transitions on mid-range Android phones, payment SDKs with partial Capacitor support, and a custom bridge for every native feature.",[16,25,27],{"id":26},"role","Role",[21,29,30],{},"Main contributor on the mobile rewrite (~90% of commits): app architecture, migration plan and most features. Backend contributions in Laravel for the same features — points, maintenance mode and payment flows — so each one shipped end to end.",[16,32,34],{"id":33},"challenge","Challenge",[36,37,38,46,52,58],"ul",{},[39,40,41,45],"li",{},[42,43,44],"strong",{},"Replace a live app without a feature freeze"," — v2 had to reach parity while v1 kept shipping fixes.",[39,47,48,51],{},[42,49,50],{},"Native payments"," — Stripe, PayPal and Airwallex each require their official SDK and confirmation flow.",[39,53,54,57],{},[42,55,56],{},"Data for marketing"," — campaigns need attributed installs and purchases, and links that open the right screen.",[39,59,60,63],{},[42,61,62],{},"Device compatibility"," — a wrong \"yes\" means a paid plan the user cannot install.",[16,65,67],{"id":66},"approach","Approach",[69,70,72],"h3",{"id":71},"expo-router-with-thin-routes","Expo Router with thin routes",[21,74,75],{},"File-based routing on Expo, with logic in feature folders (auth, destinations, checkout, eSIMs, points). The same structure later made GoSIM a mini-app package of the Go super-app, in a pnpm + Turborepo monorepo.",[69,77,79],{"id":78},"three-payment-providers-one-checkout","Three payment providers, one checkout",[21,81,82],{},"Stripe, PayPal and Airwallex integrated through their native SDKs behind a single checkout flow; partial payments and top-ups reuse the same path.",[69,84,86],{"id":85},"gopoints-loyalty-system","GoPoints loyalty system",[21,88,89],{},"Points earned on every purchase and redeemed for coupons — app screens (balance, coupon codes, results) and the backend rules that grant and spend points.",[69,91,93],{"id":92},"deep-links-appsflyer-and-meta","Deep links, AppsFlyer and Meta",[21,95,96,97,101],{},"Custom ",[98,99,100],"code",{},"gosim:\u002F\u002F"," scheme, universal\u002Fapp links and AppsFlyer OneLink route campaign links to the exact destination or offer; AppsFlyer and the Meta (Facebook) SDK provide install and purchase attribution.",[69,103,105],{"id":104},"running-a-live-app","Running a live app",[21,107,108,109,112],{},"Remote ",[42,110,111],{},"maintenance mode"," without an app-store release, Firebase push notifications and in-app messaging, and centralised error handling with recoverable states.",[69,114,116],{"id":115},"compatibility-check-before-checkout","Compatibility check before checkout",[21,118,119,120,125],{},"A native iOS\u002FAndroid module reads the device's own eSIM signals, published as ",[121,122,124],"a",{"href":123},"\u002Fprojects\u002Fesim-compatibility-checker","react-native-esim-compatibility-checker",".",[16,127,129],{"id":128},"results","Results",[36,131,132,135,138,141],{},[39,133,134],{},"Native-feeling iOS and Android app from one TypeScript codebase.",[39,136,137],{},"Three payment providers, loyalty points and campaign deep links in production.",[39,139,140],{},"Attribution data used by the marketing team to run campaigns.",[39,142,143],{},"Fewer \"my eSIM doesn't work\" support cases.",{"title":145,"searchDepth":146,"depth":146,"links":147},"",2,[148,149,150,151,160],{"id":18,"depth":146,"text":19},{"id":26,"depth":146,"text":27},{"id":33,"depth":146,"text":34},{"id":66,"depth":146,"text":67,"children":152},[153,155,156,157,158,159],{"id":71,"depth":154,"text":72},3,{"id":78,"depth":154,"text":79},{"id":85,"depth":154,"text":86},{"id":92,"depth":154,"text":93},{"id":104,"depth":154,"text":105},{"id":115,"depth":154,"text":116},{"id":128,"depth":146,"text":129},"Goubba","\u002Fimages\u002Fprojects\u002Fgosim.webp","Rebuild of Goubba's travel eSIM app from Vue + Capacitor to React Native (Expo) — native Stripe, PayPal and Airwallex payments, a loyalty points system, deep links and marketing attribution, with contributions to the Laravel backend.","md",[166,169,172],{"src":167,"alt":168},"\u002Fimages\u002Fprojects\u002Fgosim\u002Fapp-1.webp","Choosing a data plan for Italy",{"src":170,"alt":171},"\u002Fimages\u002Fprojects\u002Fgosim\u002Fapp-2.webp","My eSIMs screen with remaining data and top-up",{"src":173,"alt":174},"\u002Fimages\u002Fprojects\u002Fgosim\u002Fapp-3.webp","Installing a new eSIM for Turkey",null,"mobile","https:\u002F\u002Fgowallet.money\u002FgoSim",{},[180,181,182],"3 native payment SDKs","Loyalty points, deep links & attribution","~30% faster app performance",true,1,"company","\u002Fprojects\u002Fgosim",[188,189],"ios","android","https:\u002F\u002Fplay.google.com\u002Fstore\u002Fapps\u002Fdetails?id=com.gosim.app","Main mobile developer · backend contributor",{"title":10,"description":163},[194,195,196,197,198,199,200,201,202,203],"React Native","Expo Router","TypeScript","Laravel","Stripe","PayPal","Airwallex","AppsFlyer","Meta SDK","Firebase","projects\u002Fgosim","React Native rebuild of a live eSIM app with native payments, loyalty points and deep links.","2026","punxWTA26nEpWlOhW2fjH_O8pNGintUZ40bpyI9945Y",[209,210,213,214,217,220,223,226],{"path":186,"title":10},{"path":211,"title":212},"\u002Fprojects\u002Fpresalio","Presalio — field sales & distribution suite",{"path":123,"title":124},{"path":215,"title":216},"\u002Fprojects\u002Fefficy","Efficy — store audits & performance scoring",{"path":218,"title":219},"\u002Fprojects\u002Fgosim-landing","GoSIM website — browse and buy eSIMs on the web",{"path":221,"title":222},"\u002Fprojects\u002Fadele-invest","Adele Invest — off-market real-estate platform",{"path":224,"title":225},"\u002Fprojects\u002Fgo-landing","GO — the super-app's website",{"path":227,"title":228},"\u002Fprojects\u002Fcall360","Call360 — multi-tenant CRM, call center & clinic module",{"left":4,"top":4,"width":230,"height":230,"rotate":4,"vFlip":6,"hFlip":6,"body":231},24,"\u003Cpath fill=\"currentColor\" d=\"M16.61 15.15c-.46 0-.84-.37-.84-.83s.38-.82.84-.82s.84.36.84.82s-.38.83-.84.83m-9.2 0c-.46 0-.84-.37-.84-.83s.38-.82.84-.82s.83.36.83.82s-.37.83-.83.83m9.5-5.01l1.67-2.88c.09-.17.03-.38-.13-.47c-.17-.1-.38-.04-.45.13l-1.71 2.91A10.15 10.15 0 0 0 12 8.91c-1.53 0-3 .33-4.27.91L6.04 6.91a.334.334 0 0 0-.47-.13c-.17.09-.22.3-.13.47l1.66 2.88C4.25 11.69 2.29 14.58 2 18h20c-.28-3.41-2.23-6.3-5.09-7.86\"\u002F>",{"left":4,"top":4,"width":230,"height":230,"rotate":4,"vFlip":6,"hFlip":6,"body":233},"\u003Cpath fill=\"currentColor\" d=\"M18.71 19.5c-.83 1.24-1.71 2.45-3.05 2.47c-1.34.03-1.77-.79-3.29-.79c-1.53 0-2 .77-3.27.82c-1.31.05-2.3-1.32-3.14-2.53C4.25 17 2.94 12.45 4.7 9.39c.87-1.52 2.43-2.48 4.12-2.51c1.28-.02 2.5.87 3.29.87c.78 0 2.26-1.07 3.81-.91c.65.03 2.47.26 3.64 1.98c-.09.06-2.17 1.28-2.15 3.81c.03 3.02 2.65 4.03 2.68 4.04c-.03.07-.42 1.44-1.38 2.83M13 3.5c.73-.83 1.94-1.46 2.94-1.5c.13 1.17-.34 2.35-1.04 3.19c-.69.85-1.83 1.51-2.95 1.42c-.15-1.15.41-2.35 1.05-3.11\"\u002F>",{"left":4,"top":4,"width":230,"height":230,"rotate":4,"vFlip":6,"hFlip":6,"body":235},"\u003Cpath fill=\"currentColor\" d=\"M3 20.5v-17c0-.59.34-1.11.84-1.35L13.69 12l-9.85 9.85c-.5-.25-.84-.76-.84-1.35m13.81-5.38L6.05 21.34l8.49-8.49zm3.35-4.31c.34.27.59.69.59 1.19s-.22.9-.57 1.18l-2.29 1.32l-2.5-2.5l2.5-2.5zM6.05 2.66l10.76 6.22l-2.27 2.27z\"\u002F>",1791726330176]