eSimma: eSIM Card Storefront
Project Overview
A mobile app for seamless eSIM management enabling global connectivity for travelers.
Category
Links
Collaborators
Solo Project
Date
January 2024 - Present
My Role
The Challenge
Getting a local SIM before traveling shouldn't be so difficult. Who got the keys to my [global data plan]?
Traveling and staying connected can be a real headache, especially when you're dealing with confusing international data plans. I've always been curious about how to make this process easier, so I decided to create a tool that lets travelers manage their mobile data seamlessly across different countries.
The idea was simple: make it possible to purchase and top up travel data plans directly from your phone, no matter where you are in the world.
Main issues
- Travelers often face difficulties obtaining local SIM cards in foreign countries
- International roaming plans can be expensive and confusing
- Managing multiple SIM cards for different countries is cumbersome
The goal is to reduce the need to find these airport kiosks
The Solution
eSimma is a mobile application that simplifies the process of obtaining and managing eSIMs for international travel. Here's how it works:
- Browse and compare data plans for different countries or regions.
- Select and purchase the desired plan directly through the app via Apple Pay.
- After purchase, users receive a QR code they can scan in the iOS Settings page to instantly activate their eSIM.
- View, top up, or manage multiple eSIM plans from within the app.
[Webpage] Overview
Splash Screen
[Webpage] Activation
Implementation
I built the backend using Django and the eSIM Access API for all the eSIM magic. The app fetches plans, orders profiles, and keeps tabs on existing ones through custom endpoints.
Handling Payments and Orders
Stripe's my go-to for payments - their SDK makes life easy. I set up webhook handlers in Django to catch successful payments, then ping the eSIM Access API to get those profiles rolling.
Setting Up eSIMs and QR Codes
Getting an eSIM ready isn't instant, so I built a polling system using Django's celery tasks to check when it's good to go. Once it's ready, I whip up a QR code using CoreImage on the iOS side. Users just scan it, and boom - they're connected.
Managing Your eSIM
Need to pause your plan? Top up? Cancel? I've got you covered. The app lets users fiddle with their eSIMs as needed. I've also got some background tasks running in Django to keep everything up to date without users having to lift a finger.
System Design
Next
In the future I think it would be cool to develop partnerships with airlines, airports, and travel agencies for integrated offerings
Screenshots
Shop Screen
Your Plans Page
Country Detail Screen
Settings -> Cellular
Plan Selection Screen
Settings -> Cellular -> Add eSIM