Overview
MeXanet is the customer-facing mobile app for a Mexican fiber-optic ISP that runs a nationwide fiber network spanning dozens of states, letting subscribers run their whole relationship with the company from their phone — check service and data usage, pay their bill, recharge and buy plans, and control their home WiFi. I built it in Flutter as a white-label product: the same codebase ships as two branded apps, Mexanet and Lulunet.
The problem
Mexanet was a brand-new ISP launching from scratch, and it needed a customer app to go live alongside the business itself — there was no existing product to iterate on, so the app had to be built from zero as part of standing up the company. It didn’t start out white-label; that came gradually, as the codebase was adapted over time until the same app could ship under a different name and identity — which is what eventually let it become Lulunet.
What I built
- Service dashboard — a five-tab home that surfaces the customer’s accounts, current plan, and data-consumption summary, with promo banners and quick actions.
- In-app payments — a Stripe flow for paying bills and buying services: saved cards, payment confirmation screens, and fully localized (Spanish) error handling for declines, expired cards, and timeouts.
- Buy & contract services — guided flows to hire mobile data plans and eSIM, and to contract residential internet with map-based address validation.
- Home WiFi control — rename the network, change the password, view connected devices, and run a speed test straight from the app.
- Maps & location — Google Maps for the address selector and for finding physical payment centers nearby.
- White-label, two brands — the same codebase ships as Mexanet and Lulunet through build flavors: brand-aware theming, assets, app IDs, and deep-link hosts — four build variants from one UI.
- Navigation & deep links — declarative routing with
go_router(nested routes, auth redirects) plus deep-link handling into specific screens, including cold-start. - Production hardening — Sentry crash and performance reporting with masking of sensitive screens (password/recovery), secure token storage, and push notifications via Firebase.
Impact
MeXanet shipped as part of launching the ISP itself — it gave a brand-new company a customer-facing app from day one, where subscribers could pay, recharge, and manage their own connection without waiting on a person. And because the codebase grew into a white-label product, all of that work carried straight over when the brand became Lulunet — the same app relaunched under a new identity instead of being rebuilt.