Mehdi Tmimi Mobile

Course · Bachelor, software engineering

Mobile development, with knowledge.

How a mobile app really works, in fourteen short capsules. One question each. Read one in five minutes, try it on your phone in ten. Then build the app with an AI, and know why it behaves as it does.

The rule of this course

An assistant will type most of the code. Every decision is yours. Every behaviour is tested by you.

If you cannot say why your app behaves as it does, it is not yours yet.

Someone who builds with an AI and knows how the thing works is an engineer with a fast tool. Someone who does not is a passenger.

Offline or online, where the data lives, what the cache promises, what happens when the system kills the app: these are decisions. The capsules give you what you need to make them.

How a capsule works

  1. 1

    Read, 5 minutes.

    One question, one short answer, a few pictures you can touch.

  2. 2

    Try it, 10 minutes.

    On your own phone: you see it happen.

  3. 3

    Build, in class.

    Tell the AI what you decided. Then check what it built.

One question each, in the order of the course.

  1. How an app is built and run01 – 03available now
  2. 01 · The four families

    Who draws the pixels of a mobile app?

    Native, cross-platform, hybrid, PWA: told apart by who draws and who talks to the OS.

    5-min read · 10 min on your phone · film coming

  3. 02 · Android

    How does Android run an app?

    No main() of yours. The system starts the app, calls it, and may kill it.

    5-min read · 10 min on your phone · film coming

  4. 03 · iOS

    How does iOS run an app?

    The same shape as Android. But Apple decides what runs, and how it gets in.

    5-min read · 10 min on your phone · film coming

  5. How it talks, and what it keeps04 – 07as the course advances
  6. 04Is a mobile app a client like any other?

    The same HTTP as a browser, the same server that decides. What the app must never be trusted with.

  7. 05Where does the app's data live, and who is the source of truth?

    On the phone, on the server, or both. SQLite, key-value stores, the keychain, and the one copy that wins.

  8. 06What does the app do when the network is gone?

    Offline-first or online-only, queues, sync and conflicts. The airplane-mode test.

  9. 07What does a cache promise?

    Fresh or stale, revalidated or fetched again: a time to live on every copy, like DNS. Why the app shows yesterday's data, and when that is right.

  10. What the system does to it08 – 09as the course advances
  11. 08What may an app still do once the user leaves?

    Background work on Android and iOS: what the system lets continue, what must be declared, and the upload that has to finish.

  12. 09Why does the app ask, and who decides?

    The sandbox, runtime permissions, the user who says no, and the app that must still work.

  13. How it ships10 – 12as the course advances
  14. 10How does an app reach phones?

    Signing, the stores and their review, test tracks, updates, and the over-the-air update that skips the store.

  15. 11When is the browser enough?

    Manifest, service worker, installation, offline. What a PWA can and cannot do, especially on an iPhone.

  16. 12How does a notification reach a phone the server cannot see?

    For a notification, your server never talks to the phone: a push service does, Apple's or Google's, or the browser's for a PWA. Tokens, payloads, and what arrives when the app is closed.

  17. Proving it13 – 14as the course advances
  18. 13What do you test when an AI wrote the code?

    Not the lines: the behaviours. Airplane mode, kill and reopen, rotate, revoke a permission, slow network, a server that answers 500.

  19. 14What do you decide before the first prompt?

    One page to fill before asking an AI for anything: family, data, offline, cache, permissions, delivery, tests.

In class: one app, four ways

One small app, specified once, built four times with an AI assistant. One family per lab block. Every build goes through the same seven tests. At the end you know which family you would choose, and why.

The app, provisionally: a campus timetable that works offline and syncs with a small Node.js API you write yourselves.

The test sheet

Seven tests, four builds, twenty-eight boxes. These tests are the course's real exam. With each test, the capsule that prepares it.

Your test sheet: each test, for each build
NativeAndroid Studio, Kotlin, Jetpack Compose ExpoReact Native, TypeScript, Expo Go on your phone IonicCapacitor: a web app in a native shell PWAReact, npm, installable from the browser
Airplane mode 06
Kill the app, reopen it 02 · 03
Rotate the screen 02
Revoke a permission 09
Slow network 06
The server answers 500 04
Change the data on the server 05 · 07
Native
Android Studio, Kotlin, Jetpack Compose
Expo
React Native, TypeScript, Expo Go on your phone
Ionic
Capacitor: a web app in a native shell
PWA
React, npm, installable from the browser

In each icon, the ringed layer draws the pixels. The sheet is saved in this browser only.

Bring an Android phone if you have one: every family runs on it without a Mac.

This week I build with:

The capsules will show your family's lines first.