Description
Build a real, offline-first Android app in Elixir with Mob, from mix mob.new to an APK in your testers' hands, without leaving the BEAM.
You know Elixir. You've built things with Phoenix and LiveView. Then your users ask for an app on their phone, and the usual answer is to step out of the BEAM: Kotlin, Swift, or React Native and a JavaScript toolchain, plus a second codebase to keep in step.
This book takes the other road. Mob puts the BEAM itself on the phone and draws a real native UI from your Elixir code: no server round trip for a tap, no JavaScript bridge.
We use it to build one app from an empty screen to production: Risiti, an expense app for teams in Kenya. Risiti photographs receipts, reads them on the phone, checks them against the Kenya Revenue Authority, works offline, and syncs with a Phoenix and Ash server where managers approve expenses, refunds and payment requests.
Along the way you will learn to
set up an Android workbench and run Elixir on your own phone;
build screens, navigation, layouts, themes and lists with Mob, tied at every step to what you already know from LiveView;
keep data on the phone with SQLite and Ecto, and test screens without a phone attached;
use the camera, a fingerprint lock, on-device OCR and QR scanning;
write your own native plugin in Zig and Kotlin when Mob doesn't have what you need;
build the server with Phoenix and Ash: accounts, multi-tenant teams, approvals, background jobs and a web dashboard;
sync both ways over a bad connection, and send push notifications;
ship a signed release APK, and deploy the server to your own domain.
Every chapter ends with something you can run on your phone, and the code for each one is in the book's repository, with tests. Where something broke on a real phone, the chapter says so and shows the fix.
It's written for Elixir developers who have never shipped a mobile app. Words like APK, ADB or "back stack" are explained the first time they appear. If you have written a LiveView, you are closer to writing a mobile screen than you think.
WPrasetyo
17
,
JohnPalmer
13
,
a2jaume
7
,
kirillshaman
4
and
vampirep
1
upvoted this post.
