GjirafaMall — Mobile App
The GjirafaMall e-commerce mobile app — built with React Native, serving customers across multiple countries with full shopping, checkout, and account management.
The Brief
GjirafaMall is a multi-country e-commerce platform. The mobile app needed to handle the full shopping experience — browsing, search, product details, cart, checkout, order tracking, and account management — while supporting multiple countries with different currencies, languages, and product catalogs. I've been a core contributor since joining the mobile team, building features and maintaining the app through its growth from single-country to multi-country.

Home

Product

Cart
The full shopping experience — home, product details, and cart on iOS and Android
What I Owned
I was a core contributor on the mobile team, working across the app from catalog browsing to post-purchase. My primary ownership was the purchase experience — cart, checkout, and the screens users land on after placing an order. I also contributed to shared foundations: reusable UI patterns, forms, and the visual language that keeps the app feeling cohesive across flows.

The Cart
The cart is where shopping intent crystallizes — and where small friction compounds. I focused on making it feel responsive and trustworthy: quantity changes reflect instantly, totals recalculate without flicker, promo codes give clear feedback, and items that aren't ready to ship are grouped separately so the user always knows what's actually in the box. The goal was a cart that reads like a clear, honest summary of the decision — not a form to fight with.

One-Click Buy
For users who already know what they want, a full cart-and-checkout journey is overkill. I contributed to a streamlined single-product purchase flow that opens as a modal directly from the product page — no navigation, no tab switches. Returning users see their saved preferences pre-filled; new users get a lightweight entry path. The guiding principle: the smallest number of taps between 'I want this' and 'it's ordered'.

Checkout
Checkout guides the user through delivery, payment, optional notes, and a final confirmation. Each step validates as you go and only unlocks the next once it's valid. Saved addresses, remembered payment preferences, and smart defaults reduce the number of decisions a returning user has to make. The hardest part wasn't any single form — it was making the whole flow feel like one coherent decision instead of a series of walls.
Post-Purchase
The moments right after a user taps 'Place order' shape how the whole purchase feels in hindsight. I worked on both the success and failure screens — confirming what happened, setting expectations for what comes next (email, delivery), and giving a clear path forward whether the order went through or didn't. Back navigation is guarded so users don't accidentally return to a stale checkout state.

Success

Failure
Browsing the calendar
Seasonal Moments — The Advent Calendar
Beyond the everyday purchase flow, I worked on seasonal features that gave shoppers a reason to keep coming back. The advent calendar is a good example: 24 days, one reveal each day, each with its own state — locked and waiting, ready to open, or already opened. The design had to communicate all three at a glance without feeling cluttered, and the motion had to make opening a door feel like a moment worth waiting for. Small feature on paper, but a reminder that product surfaces aren't just about efficiency — sometimes they're about anticipation, ritual, and delight.
Adapting to Multi-Country
The purchase flow was originally built for a single market. When the product expanded internationally, I contributed to adapting it: currencies, localized pricing, and region-specific delivery and payment options. The challenge wasn't swapping values — it was making sure every branch, every validation, every fallback behaved correctly across all regions without forking the codebase.
Working on a Live Product
This app serves real customers every day, which shapes how you work. Changes ship incrementally. Features are validated on real devices across a wide performance spectrum — not just the one on your desk. Bug reports come from actual users with actual carts, and fixing them means being careful about what you touch and why. Most of what I'm proud of on this project isn't any single feature; it's the discipline of being a reliable contributor to something that can't break.
What This Taught Me
This is the project that made me a mobile engineer rather than a web developer using React Native. I learned the difference between building for a phone and building a phone app — the gesture expectations, the navigation patterns, the performance realities that don't exist on web. I learned to think about offline states, about battery, about the user who's on a bus with three bars of signal. And I learned how to contribute to a long-lived codebase where my work will be maintained by others long after I've moved to the next thing.
Next project
GjirafaMall App — Redesign
A design-led overhaul of the GjirafaMall mobile app — from Figma concepts to production code, adding micro-interactions, animations, and the kind of polish that makes an app feel alive.