# PRD: Mobile Client

**Module:** `mobile/` | **Namespace:** TBD
**Status:** Deferred (v2+) | **Last updated:** 2026-02-17

---

## 1. Overview

Mobile client is deferred to a future version. The architecture supports it via the same Auth GW + SSE pattern used by the web and TUI clients.

## 2. Options to Evaluate

| Option | Pros | Cons |
|--------|------|------|
| **PWA (web-sm)** | Zero extra work — web UI works on mobile browsers. Add manifest + service worker for installability. | Limited push notifications, no native feel. |
| **ClojureDart** | Stay in Clojure ecosystem. Compiles to Dart/Flutter. | Immature ecosystem, debugging harder. |
| **React Native + API** | Mature ecosystem, native feel, large talent pool. | Separate language (JS/TS), not Clojure. |

## 3. Recommended Path

Start with **PWA** (progressive web app from web-sm) for mobile access in v1. Evaluate native options for v2 based on user feedback.

**PWA requirements (P2, not v1):**
- Add web app manifest to web-sm
- Add service worker for offline caching
- Responsive CSS for mobile viewports
- Touch-friendly interaction sizes

## 4. Architecture (Future Native)

Same pattern as TUI client:
```
Mobile App ←─ SSE (JSON) ──→ Mobile SM ──→ NATS
           ←─ HTTP POST ───→           ──→ API
```

A dedicated Mobile SM would handle push notification routing and mobile-specific optimizations (battery-aware polling, data compression).

## 5. No Test Cases

No test cases defined for the mobile client as it is deferred. Test cases will be created when a specific implementation approach is chosen.
