DEV Community

NXTL eSIM
NXTL eSIM

Posted on

Four small travel-data web tools we open-sourced (static PWAs, no sign-up, shareable by URL)

Written by the NXTL team. We make a pay-as-you-go travel eSIM, and these tools come from questions our customers ask. They work whatever provider you use, and everything is MIT-licensed on GitHub.

Most "how much data do I need?" answers online are a single number with no workings. We wanted small tools that show their assumptions, run entirely in the browser, and give you a link you can send to whoever you're travelling with. Here are the four we've shipped so far, plus a few build notes in case you're making something similar.

1. Trip Data Budget Planner

Live: nxtlsim.github.io/trip-data-budget · Code: github.com/nxtlsim/trip-data-budget

Pick destinations and days, choose a preset (Light, Normal, Heavy, Remote work) or set hours per activity, and you get a per-day and per-trip estimate in MB/GB. Every assumption is in a table on the page, with a 10% buffer for background use, so you can see exactly why the number is what it is.

The whole state lives in the query string, so a plan is just a link:

https://nxtlsim.github.io/trip-data-budget/?d=Turkey:7,Japan:5&p=normal
Enter fullscreen mode Exit fullscreen mode

The figures are rounded estimates, not measurements. If your usage is different, change the hours and the total follows.

2. eSIM Compatibility Check

Live: nxtlsim.github.io/esim-compatibility-check · Code: github.com/nxtlsim/esim-compatibility-check

"Does my phone support eSIM?" sounds simple until you hit regional variants. The checker covers 407 phones, tablets, laptops and routers, and each entry links to the manufacturer's own documentation, so you can check the source rather than trust us.

The interesting part was detection without permission prompts:

  • Android Chromium: navigator.userAgentData.getHighEntropyValues(['model']) returns the model code (for example SM-S921B), which we match to its device family. If that isn't available we fall back to the user-agent string.
  • iPhone/iPad: iOS doesn't expose the model to websites at all, so the page shows iPhone guidance and lets you pick your model, with per-SKU exceptions flagged (some mainland-China models use two physical SIMs instead of eSIM).

It also shows the on-device way to confirm: dial *#06# and look for an EID.

3. Team & Hotspot Data Planner

Live: nxtlsim.github.io/team-data-planner · Code: github.com/nxtlsim/team-data-planner

For teams and device fleets: add laptops, work phones, backup routers, GPS trackers, cameras or POS terminals, set quantities and days, and get data per day, per 30 days and in total, with a per-item breakdown. The presets (for example 1,500 MB/day for a remote-work laptop, 3 MB/day for a GPS tracker) are labelled as rough starting points, and every one is editable. Replace them with your real usage stats when you have them.

?i=laptop:3,router:1:500&c=Germany&days=30
Enter fullscreen mode Exit fullscreen mode

4. travel-connection-check (CLI)

Code: github.com/nxtlsim/travel-connection-check

Is the hotel Wi-Fi good enough for a video call, or should you switch to mobile data? One command gives latency, jitter, packet loss and download speed, and appends a row to a CSV, so you build up a log of every network you've tested across countries.

git clone https://github.com/nxtlsim/travel-connection-check
cd travel-connection-check
python3 travel_connection_check.py --country JP --network "hotel wifi"
Enter fullscreen mode Exit fullscreen mode

It's standard-library Python 3.8+ only, so it runs on macOS, Linux, Windows and Termux on Android. Because speed tests on metered data aren't free, it also prints roughly how much data the test itself used, and you can pass --no-download for a latency-only check that uses about 0.05 MB.

Build notes

  • Static and installable. The three web tools are plain HTML/JS on GitHub Pages with a manifest and service worker, so they install to a phone home screen and keep working on flaky connections, which is exactly when you need them.
  • State in the URL. No accounts and no database. Sharing a result is sharing a link, and preview cards come from static Open Graph tags.
  • Show the assumptions. Each estimate sits next to the table that produced it. People trust a number more when they can argue with it.
  • Live data with a fallback. The cost line in the two planners reads per-country rates from a public endpoint and falls back to a bundled JSON snapshot if that request fails, so the planners still work offline.
  • No trackers. Nothing is stored and there's no analytics script on the pages.

Where NXTL fits

The planners show an optional cost line at NXTL's pay-as-you-go per-GB rate for the country you pick. That's the only NXTL part, and current prices are on nxtlsim.com/pricing. The data estimates themselves are provider-neutral.

Issues and pull requests are welcome, especially corrections to the device list (with a manufacturer source) and better usage figures for specific apps.

Top comments (0)