@jakkrichm/create-nexus-devflow 2.0.20 → 2.0.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (258) hide show
  1. package/dist/bin/create-nexus-devflow.js +73 -59
  2. package/dist/bin/create-nexus-devflow.js.map +1 -1
  3. package/dist/lib/ui.d.ts +36 -0
  4. package/dist/lib/ui.js +115 -0
  5. package/dist/lib/ui.js.map +1 -0
  6. package/dist/lib/update.js +19 -8
  7. package/dist/lib/update.js.map +1 -1
  8. package/package.json +1 -1
  9. package/template/.agents/skills/00-discover/SKILL.md +28 -116
  10. package/template/.agents/skills/40-execute/SKILL.md +1 -1
  11. package/template/.agents/skills/50-verify/SKILL.md +28 -161
  12. package/template/.agents/skills/60-report/SKILL.md +19 -92
  13. package/template/.agents/skills/70-release/SKILL.md +36 -11
  14. package/template/.agents/skills/check/SKILL.md +19 -7
  15. package/template/.agents/skills/complete/SKILL.md +21 -10
  16. package/template/.claude/skills/00-discover/SKILL.md +28 -116
  17. package/template/.claude/skills/40-execute/SKILL.md +1 -1
  18. package/template/.claude/skills/50-verify/SKILL.md +28 -161
  19. package/template/.claude/skills/60-report/SKILL.md +19 -92
  20. package/template/.claude/skills/70-release/SKILL.md +36 -11
  21. package/template/.claude/skills/check/SKILL.md +19 -7
  22. package/template/.claude/skills/complete/SKILL.md +21 -10
  23. package/template/AGENTS.md +1 -1
  24. package/template/devflow/context/coding-standards.md +40 -29
  25. package/template/.agents/skills/agent/SKILL.md +0 -165
  26. package/template/.agents/skills/api-and-interface-design/SKILL.md +0 -294
  27. package/template/.agents/skills/app-builder/SKILL.md +0 -75
  28. package/template/.agents/skills/app-builder/agent-coordination.md +0 -71
  29. package/template/.agents/skills/app-builder/feature-building.md +0 -53
  30. package/template/.agents/skills/app-builder/project-detection.md +0 -34
  31. package/template/.agents/skills/app-builder/scaffolding.md +0 -118
  32. package/template/.agents/skills/app-builder/tech-stack.md +0 -40
  33. package/template/.agents/skills/app-builder/templates/SKILL.md +0 -39
  34. package/template/.agents/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  35. package/template/.agents/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  36. package/template/.agents/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  37. package/template/.agents/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  38. package/template/.agents/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  39. package/template/.agents/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  40. package/template/.agents/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  41. package/template/.agents/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -122
  42. package/template/.agents/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -122
  43. package/template/.agents/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -169
  44. package/template/.agents/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -134
  45. package/template/.agents/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  46. package/template/.agents/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -119
  47. package/template/.agents/skills/architecture/SKILL.md +0 -55
  48. package/template/.agents/skills/architecture/context-discovery.md +0 -43
  49. package/template/.agents/skills/architecture/examples.md +0 -94
  50. package/template/.agents/skills/architecture/pattern-selection.md +0 -68
  51. package/template/.agents/skills/architecture/patterns-reference.md +0 -50
  52. package/template/.agents/skills/architecture/trade-off-analysis.md +0 -77
  53. package/template/.agents/skills/bash-linux/SKILL.md +0 -199
  54. package/template/.agents/skills/behavioral-modes/SKILL.md +0 -242
  55. package/template/.agents/skills/brainstorm/SKILL.md +0 -168
  56. package/template/.agents/skills/changelog/SKILL.md +0 -109
  57. package/template/.agents/skills/codebase-design/DEEPENING.md +0 -24
  58. package/template/.agents/skills/codebase-design/DESIGN-IT-TWICE.md +0 -28
  59. package/template/.agents/skills/codebase-design/SKILL.md +0 -58
  60. package/template/.agents/skills/commit/SKILL.md +0 -59
  61. package/template/.agents/skills/competitor-analysis/SKILL.md +0 -66
  62. package/template/.agents/skills/context-engineering/SKILL.md +0 -290
  63. package/template/.agents/skills/database-design/SKILL.md +0 -52
  64. package/template/.agents/skills/database-design/database-selection.md +0 -43
  65. package/template/.agents/skills/database-design/indexing.md +0 -39
  66. package/template/.agents/skills/database-design/migrations.md +0 -48
  67. package/template/.agents/skills/database-design/optimization.md +0 -36
  68. package/template/.agents/skills/database-design/orm-selection.md +0 -30
  69. package/template/.agents/skills/database-design/schema-design.md +0 -56
  70. package/template/.agents/skills/database-design/scripts/schema_validator.py +0 -172
  71. package/template/.agents/skills/deploy/SKILL.md +0 -63
  72. package/template/.agents/skills/documentation-and-adrs/SKILL.md +0 -278
  73. package/template/.agents/skills/domain-modeling/ADR-FORMAT.md +0 -47
  74. package/template/.agents/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  75. package/template/.agents/skills/domain-modeling/SKILL.md +0 -74
  76. package/template/.agents/skills/followup/SKILL.md +0 -83
  77. package/template/.agents/skills/frontend-ui-engineering/SKILL.md +0 -326
  78. package/template/.agents/skills/frontend-ui-engineering/accessibility-checklist.md +0 -159
  79. package/template/.agents/skills/goal/SKILL.md +0 -148
  80. package/template/.agents/skills/handoff/SKILL.md +0 -46
  81. package/template/.agents/skills/help/SKILL.md +0 -253
  82. package/template/.agents/skills/i18n-localization/SKILL.md +0 -154
  83. package/template/.agents/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  84. package/template/.agents/skills/insight/SKILL.md +0 -42
  85. package/template/.agents/skills/issue-triage/SKILL.md +0 -115
  86. package/template/.agents/skills/lint-and-validate/SKILL.md +0 -45
  87. package/template/.agents/skills/lint-and-validate/scripts/lint_runner.py +0 -184
  88. package/template/.agents/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  89. package/template/.agents/skills/mcp-builder/SKILL.md +0 -176
  90. package/template/.agents/skills/merge/SKILL.md +0 -76
  91. package/template/.agents/skills/mobile-design/SKILL.md +0 -394
  92. package/template/.agents/skills/mobile-design/decision-trees.md +0 -516
  93. package/template/.agents/skills/mobile-design/mobile-backend.md +0 -491
  94. package/template/.agents/skills/mobile-design/mobile-color-system.md +0 -420
  95. package/template/.agents/skills/mobile-design/mobile-debugging.md +0 -122
  96. package/template/.agents/skills/mobile-design/mobile-design-thinking.md +0 -357
  97. package/template/.agents/skills/mobile-design/mobile-navigation.md +0 -458
  98. package/template/.agents/skills/mobile-design/mobile-performance.md +0 -767
  99. package/template/.agents/skills/mobile-design/mobile-testing.md +0 -356
  100. package/template/.agents/skills/mobile-design/mobile-typography.md +0 -433
  101. package/template/.agents/skills/mobile-design/platform-android.md +0 -666
  102. package/template/.agents/skills/mobile-design/platform-ios.md +0 -561
  103. package/template/.agents/skills/mobile-design/scripts/mobile_audit.py +0 -670
  104. package/template/.agents/skills/mobile-design/touch-psychology.md +0 -537
  105. package/template/.agents/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  106. package/template/.agents/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  107. package/template/.agents/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  108. package/template/.agents/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  109. package/template/.agents/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  110. package/template/.agents/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  111. package/template/.agents/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  112. package/template/.agents/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  113. package/template/.agents/skills/nextjs-react-expert/SKILL.md +0 -286
  114. package/template/.agents/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
  115. package/template/.agents/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
  116. package/template/.agents/skills/nodejs-best-practices/SKILL.md +0 -333
  117. package/template/.agents/skills/package-json-generator/SKILL.md +0 -60
  118. package/template/.agents/skills/package-json-generator/scripts/generate.js +0 -120
  119. package/template/.agents/skills/package-json-generator/scripts/run.sh +0 -19
  120. package/template/.agents/skills/parallel-agents/SKILL.md +0 -144
  121. package/template/.agents/skills/performance-optimization/SKILL.md +0 -299
  122. package/template/.agents/skills/performance-optimization/performance-checklist.md +0 -113
  123. package/template/.agents/skills/powershell-windows/SKILL.md +0 -167
  124. package/template/.agents/skills/pr/SKILL.md +0 -93
  125. package/template/.agents/skills/prd/SKILL.md +0 -127
  126. package/template/.agents/skills/preview/SKILL.md +0 -42
  127. package/template/.agents/skills/python-patterns/SKILL.md +0 -441
  128. package/template/.agents/skills/research/SKILL.md +0 -143
  129. package/template/.agents/skills/review/SKILL.md +0 -71
  130. package/template/.agents/skills/roadmap-strategy/SKILL.md +0 -94
  131. package/template/.agents/skills/security-review/SKILL.md +0 -63
  132. package/template/.agents/skills/seo-fundamentals/SKILL.md +0 -129
  133. package/template/.agents/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  134. package/template/.agents/skills/server-management/SKILL.md +0 -161
  135. package/template/.agents/skills/simplify/SKILL.md +0 -70
  136. package/template/.agents/skills/skill-development/SKILL.md +0 -86
  137. package/template/.agents/skills/spec/SKILL.md +0 -39
  138. package/template/.agents/skills/spec-driven-development/SKILL.md +0 -207
  139. package/template/.agents/skills/tailwind-patterns/SKILL.md +0 -269
  140. package/template/.agents/skills/type-design/SKILL.md +0 -84
  141. package/template/.agents/skills/ui-ux-pro-max/SKILL.md +0 -75
  142. package/template/.claude/skills/agent/SKILL.md +0 -165
  143. package/template/.claude/skills/api-and-interface-design/SKILL.md +0 -294
  144. package/template/.claude/skills/app-builder/SKILL.md +0 -75
  145. package/template/.claude/skills/app-builder/agent-coordination.md +0 -71
  146. package/template/.claude/skills/app-builder/feature-building.md +0 -53
  147. package/template/.claude/skills/app-builder/project-detection.md +0 -34
  148. package/template/.claude/skills/app-builder/scaffolding.md +0 -118
  149. package/template/.claude/skills/app-builder/tech-stack.md +0 -40
  150. package/template/.claude/skills/app-builder/templates/SKILL.md +0 -39
  151. package/template/.claude/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  152. package/template/.claude/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  153. package/template/.claude/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  154. package/template/.claude/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  155. package/template/.claude/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  156. package/template/.claude/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  157. package/template/.claude/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  158. package/template/.claude/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -122
  159. package/template/.claude/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -122
  160. package/template/.claude/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -169
  161. package/template/.claude/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -134
  162. package/template/.claude/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  163. package/template/.claude/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -119
  164. package/template/.claude/skills/architecture/SKILL.md +0 -55
  165. package/template/.claude/skills/architecture/context-discovery.md +0 -43
  166. package/template/.claude/skills/architecture/examples.md +0 -94
  167. package/template/.claude/skills/architecture/pattern-selection.md +0 -68
  168. package/template/.claude/skills/architecture/patterns-reference.md +0 -50
  169. package/template/.claude/skills/architecture/trade-off-analysis.md +0 -77
  170. package/template/.claude/skills/bash-linux/SKILL.md +0 -199
  171. package/template/.claude/skills/behavioral-modes/SKILL.md +0 -242
  172. package/template/.claude/skills/brainstorm/SKILL.md +0 -168
  173. package/template/.claude/skills/changelog/SKILL.md +0 -109
  174. package/template/.claude/skills/codebase-design/DEEPENING.md +0 -24
  175. package/template/.claude/skills/codebase-design/DESIGN-IT-TWICE.md +0 -28
  176. package/template/.claude/skills/codebase-design/SKILL.md +0 -58
  177. package/template/.claude/skills/commit/SKILL.md +0 -59
  178. package/template/.claude/skills/competitor-analysis/SKILL.md +0 -66
  179. package/template/.claude/skills/context-engineering/SKILL.md +0 -290
  180. package/template/.claude/skills/database-design/SKILL.md +0 -52
  181. package/template/.claude/skills/database-design/database-selection.md +0 -43
  182. package/template/.claude/skills/database-design/indexing.md +0 -39
  183. package/template/.claude/skills/database-design/migrations.md +0 -48
  184. package/template/.claude/skills/database-design/optimization.md +0 -36
  185. package/template/.claude/skills/database-design/orm-selection.md +0 -30
  186. package/template/.claude/skills/database-design/schema-design.md +0 -56
  187. package/template/.claude/skills/database-design/scripts/schema_validator.py +0 -172
  188. package/template/.claude/skills/deploy/SKILL.md +0 -63
  189. package/template/.claude/skills/documentation-and-adrs/SKILL.md +0 -278
  190. package/template/.claude/skills/domain-modeling/ADR-FORMAT.md +0 -47
  191. package/template/.claude/skills/domain-modeling/CONTEXT-FORMAT.md +0 -60
  192. package/template/.claude/skills/domain-modeling/SKILL.md +0 -74
  193. package/template/.claude/skills/followup/SKILL.md +0 -83
  194. package/template/.claude/skills/frontend-ui-engineering/SKILL.md +0 -326
  195. package/template/.claude/skills/frontend-ui-engineering/accessibility-checklist.md +0 -159
  196. package/template/.claude/skills/goal/SKILL.md +0 -148
  197. package/template/.claude/skills/handoff/SKILL.md +0 -46
  198. package/template/.claude/skills/help/SKILL.md +0 -253
  199. package/template/.claude/skills/i18n-localization/SKILL.md +0 -154
  200. package/template/.claude/skills/i18n-localization/scripts/i18n_checker.py +0 -241
  201. package/template/.claude/skills/insight/SKILL.md +0 -42
  202. package/template/.claude/skills/issue-triage/SKILL.md +0 -115
  203. package/template/.claude/skills/lint-and-validate/SKILL.md +0 -45
  204. package/template/.claude/skills/lint-and-validate/scripts/lint_runner.py +0 -184
  205. package/template/.claude/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  206. package/template/.claude/skills/mcp-builder/SKILL.md +0 -176
  207. package/template/.claude/skills/merge/SKILL.md +0 -76
  208. package/template/.claude/skills/mobile-design/SKILL.md +0 -394
  209. package/template/.claude/skills/mobile-design/decision-trees.md +0 -516
  210. package/template/.claude/skills/mobile-design/mobile-backend.md +0 -491
  211. package/template/.claude/skills/mobile-design/mobile-color-system.md +0 -420
  212. package/template/.claude/skills/mobile-design/mobile-debugging.md +0 -122
  213. package/template/.claude/skills/mobile-design/mobile-design-thinking.md +0 -357
  214. package/template/.claude/skills/mobile-design/mobile-navigation.md +0 -458
  215. package/template/.claude/skills/mobile-design/mobile-performance.md +0 -767
  216. package/template/.claude/skills/mobile-design/mobile-testing.md +0 -356
  217. package/template/.claude/skills/mobile-design/mobile-typography.md +0 -433
  218. package/template/.claude/skills/mobile-design/platform-android.md +0 -666
  219. package/template/.claude/skills/mobile-design/platform-ios.md +0 -561
  220. package/template/.claude/skills/mobile-design/scripts/mobile_audit.py +0 -670
  221. package/template/.claude/skills/mobile-design/touch-psychology.md +0 -537
  222. package/template/.claude/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  223. package/template/.claude/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  224. package/template/.claude/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  225. package/template/.claude/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  226. package/template/.claude/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  227. package/template/.claude/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  228. package/template/.claude/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  229. package/template/.claude/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  230. package/template/.claude/skills/nextjs-react-expert/SKILL.md +0 -286
  231. package/template/.claude/skills/nextjs-react-expert/scripts/convert_rules.py +0 -222
  232. package/template/.claude/skills/nextjs-react-expert/scripts/react_performance_checker.py +0 -252
  233. package/template/.claude/skills/nodejs-best-practices/SKILL.md +0 -333
  234. package/template/.claude/skills/package-json-generator/SKILL.md +0 -60
  235. package/template/.claude/skills/package-json-generator/scripts/generate.js +0 -120
  236. package/template/.claude/skills/package-json-generator/scripts/run.sh +0 -19
  237. package/template/.claude/skills/parallel-agents/SKILL.md +0 -144
  238. package/template/.claude/skills/performance-optimization/SKILL.md +0 -299
  239. package/template/.claude/skills/performance-optimization/performance-checklist.md +0 -113
  240. package/template/.claude/skills/powershell-windows/SKILL.md +0 -167
  241. package/template/.claude/skills/pr/SKILL.md +0 -93
  242. package/template/.claude/skills/prd/SKILL.md +0 -127
  243. package/template/.claude/skills/preview/SKILL.md +0 -42
  244. package/template/.claude/skills/python-patterns/SKILL.md +0 -441
  245. package/template/.claude/skills/research/SKILL.md +0 -143
  246. package/template/.claude/skills/review/SKILL.md +0 -71
  247. package/template/.claude/skills/roadmap-strategy/SKILL.md +0 -94
  248. package/template/.claude/skills/security-review/SKILL.md +0 -63
  249. package/template/.claude/skills/seo-fundamentals/SKILL.md +0 -129
  250. package/template/.claude/skills/seo-fundamentals/scripts/seo_checker.py +0 -219
  251. package/template/.claude/skills/server-management/SKILL.md +0 -161
  252. package/template/.claude/skills/simplify/SKILL.md +0 -70
  253. package/template/.claude/skills/skill-development/SKILL.md +0 -86
  254. package/template/.claude/skills/spec/SKILL.md +0 -39
  255. package/template/.claude/skills/spec-driven-development/SKILL.md +0 -207
  256. package/template/.claude/skills/tailwind-patterns/SKILL.md +0 -269
  257. package/template/.claude/skills/type-design/SKILL.md +0 -84
  258. package/template/.claude/skills/ui-ux-pro-max/SKILL.md +0 -75
@@ -1,491 +0,0 @@
1
- # Mobile Backend Patterns
2
-
3
- > **This file covers backend/API patterns SPECIFIC to mobile clients.**
4
- > Generic backend patterns are in `nodejs-best-practices` and `api-patterns`.
5
- > **Mobile backend is NOT the same as web backend. Different constraints, different patterns.**
6
-
7
- ---
8
-
9
- ## 🧠 MOBILE BACKEND MINDSET
10
-
11
- ```
12
- Mobile clients are DIFFERENT from web clients:
13
- ├── Unreliable network (2G, subway, elevator)
14
- ├── Battery constraints (minimize wake-ups)
15
- ├── Limited storage (can't cache everything)
16
- ├── Interrupted sessions (calls, notifications)
17
- ├── Diverse devices (old phones to flagships)
18
- └── Binary updates are slow (App Store review)
19
- ```
20
-
21
- **Your backend must compensate for ALL of these.**
22
-
23
- ---
24
-
25
- ## 🚫 AI MOBILE BACKEND ANTI-PATTERNS
26
-
27
- ### These are common AI mistakes when building mobile backends:
28
-
29
- | ❌ AI Default | Why It's Wrong | ✅ Mobile-Correct |
30
- |---------------|----------------|-------------------|
31
- | Same API for web and mobile | Mobile needs compact responses | Separate mobile endpoints OR field selection |
32
- | Full object responses | Wastes bandwidth, battery | Partial responses, pagination |
33
- | No offline consideration | App crashes without network | Offline-first design, sync queues |
34
- | WebSocket for everything | Battery drain | Push notifications + polling fallback |
35
- | No app versioning | Can't force updates, breaking changes | Version headers, minimum version check |
36
- | Generic error messages | Users can't fix issues | Mobile-specific error codes + recovery actions |
37
- | Session-based auth | Mobile apps restart | Token-based with refresh |
38
- | Ignore device info | Can't debug issues | Device ID, app version in headers |
39
-
40
- ---
41
-
42
- ## 1. Push Notifications
43
-
44
- ### Platform Architecture
45
-
46
- ```
47
- ┌─────────────────────────────────────────────────────────────────┐
48
- │ YOUR BACKEND │
49
- ├─────────────────────────────────────────────────────────────────┤
50
- │ │ │
51
- │ ┌──────────┴──────────┐ │
52
- │ ▼ ▼ │
53
- │ ┌─────────────────┐ ┌─────────────────┐ │
54
- │ │ FCM (Google) │ │ APNs (Apple) │ │
55
- │ │ Firebase │ │ Direct or FCM │ │
56
- │ └────────┬────────┘ └────────┬────────┘ │
57
- │ │ │ │
58
- │ ▼ ▼ │
59
- │ ┌─────────────────┐ ┌─────────────────┐ │
60
- │ │ Android Device │ │ iOS Device │ │
61
- │ └─────────────────┘ └─────────────────┘ │
62
- └─────────────────────────────────────────────────────────────────┘
63
- ```
64
-
65
- ### Push Types
66
-
67
- | Type | Use Case | User Sees |
68
- |------|----------|-----------|
69
- | **Display** | New message, order update | Notification banner |
70
- | **Silent** | Background sync, content update | Nothing (background) |
71
- | **Data** | Custom handling by app | Depends on app logic |
72
-
73
- ### Anti-Patterns
74
-
75
- | ❌ NEVER | ✅ ALWAYS |
76
- |----------|----------|
77
- | Send sensitive data in push | Push says "New message", app fetches content |
78
- | Overload with pushes | Batch, dedupe, respect quiet hours |
79
- | Same message to all | Segment by user preference, timezone |
80
- | Ignore failed tokens | Clean up invalid tokens regularly |
81
- | Skip APNs for iOS | FCM alone doesn't guarantee iOS delivery |
82
-
83
- ### Token Management
84
-
85
- ```
86
- TOKEN LIFECYCLE:
87
- ├── App registers → Get token → Send to backend
88
- ├── Token can change → App must re-register on start
89
- ├── Token expires → Clean from database
90
- ├── User uninstalls → Token becomes invalid (detect via error)
91
- └── Multiple devices → Store multiple tokens per user
92
- ```
93
-
94
- ---
95
-
96
- ## 2. Offline Sync & Conflict Resolution
97
-
98
- ### Sync Strategy Selection
99
-
100
- ```
101
- WHAT TYPE OF DATA?
102
-
103
- ├── Read-only (news, catalog)
104
- │ └── Simple cache + TTL
105
- │ └── ETag/Last-Modified for invalidation
106
-
107
- ├── User-owned (notes, todos)
108
- │ └── Last-write-wins (simple)
109
- │ └── Or timestamp-based merge
110
-
111
- ├── Collaborative (shared docs)
112
- │ └── CRDT or OT required
113
- │ └── Consider Firebase/Supabase
114
-
115
- └── Critical (payments, inventory)
116
- └── Server is source of truth
117
- └── Optimistic UI + server confirmation
118
- ```
119
-
120
- ### Conflict Resolution Strategies
121
-
122
- | Strategy | How It Works | Best For |
123
- |----------|--------------|----------|
124
- | **Last-write-wins** | Latest timestamp overwrites | Simple data, single user |
125
- | **Server-wins** | Server always authoritative | Critical transactions |
126
- | **Client-wins** | Offline changes prioritized | Offline-heavy apps |
127
- | **Merge** | Combine changes field-by-field | Documents, rich content |
128
- | **CRDT** | Mathematically conflict-free | Real-time collaboration |
129
-
130
- ### Sync Queue Pattern
131
-
132
- ```
133
- CLIENT SIDE:
134
- ├── User makes change → Write to local DB
135
- ├── Add to sync queue → { action, data, timestamp, retries }
136
- ├── Network available → Process queue FIFO
137
- ├── Success → Remove from queue
138
- ├── Failure → Retry with backoff (max 5 retries)
139
- └── Conflict → Apply resolution strategy
140
-
141
- SERVER SIDE:
142
- ├── Accept change with client timestamp
143
- ├── Compare with server version
144
- ├── Apply conflict resolution
145
- ├── Return merged state
146
- └── Client updates local with server response
147
- ```
148
-
149
- ---
150
-
151
- ## 3. Mobile API Optimization
152
-
153
- ### Response Size Reduction
154
-
155
- | Technique | Savings | Implementation |
156
- |-----------|---------|----------------|
157
- | **Field selection** | 30-70% | `?fields=id,name,thumbnail` |
158
- | **Compression** | 60-80% | gzip/brotli (automatic) |
159
- | **Pagination** | Varies | Cursor-based for mobile |
160
- | **Image variants** | 50-90% | `/image?w=200&q=80` |
161
- | **Delta sync** | 80-95% | Only changed records since timestamp |
162
-
163
- ### Pagination: Cursor vs Offset
164
-
165
- ```
166
- OFFSET (Bad for mobile):
167
- ├── Page 1: OFFSET 0 LIMIT 20
168
- ├── Page 2: OFFSET 20 LIMIT 20
169
- ├── Problem: New item added → duplicates!
170
- └── Problem: Large offset = slow query
171
-
172
- CURSOR (Good for mobile):
173
- ├── First: ?limit=20
174
- ├── Next: ?limit=20&after=cursor_abc123
175
- ├── Cursor = encoded (id + sort values)
176
- ├── No duplicates on data changes
177
- └── Consistent performance
178
- ```
179
-
180
- ### Batch Requests
181
-
182
- ```
183
- Instead of:
184
- GET /users/1
185
- GET /users/2
186
- GET /users/3
187
- (3 round trips, 3x latency)
188
-
189
- Use:
190
- POST /batch
191
- { requests: [
192
- { method: "GET", path: "/users/1" },
193
- { method: "GET", path: "/users/2" },
194
- { method: "GET", path: "/users/3" }
195
- ]}
196
- (1 round trip)
197
- ```
198
-
199
- ---
200
-
201
- ## 4. App Versioning
202
-
203
- ### Version Check Endpoint
204
-
205
- ```
206
- GET /api/app-config
207
- Headers:
208
- X-App-Version: 2.1.0
209
- X-Platform: ios
210
- X-Device-ID: abc123
211
-
212
- Response:
213
- {
214
- "minimum_version": "2.0.0",
215
- "latest_version": "2.3.0",
216
- "force_update": false,
217
- "update_url": "https://apps.apple.com/...",
218
- "feature_flags": {
219
- "new_player": true,
220
- "dark_mode": true
221
- },
222
- "maintenance": false,
223
- "maintenance_message": null
224
- }
225
- ```
226
-
227
- ### Version Comparison Logic
228
-
229
- ```
230
- CLIENT VERSION vs MINIMUM VERSION:
231
- ├── client >= minimum → Continue normally
232
- ├── client < minimum → Show force update screen
233
- │ └── Block app usage until updated
234
- └── client < latest → Show optional update prompt
235
-
236
- FEATURE FLAGS:
237
- ├── Enable/disable features without app update
238
- ├── A/B testing by version/device
239
- └── Gradual rollout (10% → 50% → 100%)
240
- ```
241
-
242
- ---
243
-
244
- ## 5. Authentication for Mobile
245
-
246
- ### Token Strategy
247
-
248
- ```
249
- ACCESS TOKEN:
250
- ├── Short-lived (15 min - 1 hour)
251
- ├── Stored in memory (not persistent)
252
- ├── Used for API requests
253
- └── Refresh when expired
254
-
255
- REFRESH TOKEN:
256
- ├── Long-lived (30-90 days)
257
- ├── Stored in SecureStore/Keychain
258
- ├── Used only to get new access token
259
- └── Rotate on each use (security)
260
-
261
- DEVICE TOKEN:
262
- ├── Identifies this device
263
- ├── Allows "log out all devices"
264
- ├── Stored alongside refresh token
265
- └── Server tracks active devices
266
- ```
267
-
268
- ### Silent Re-authentication
269
-
270
- ```
271
- REQUEST FLOW:
272
- ├── Make request with access token
273
- ├── 401 Unauthorized?
274
- │ ├── Have refresh token?
275
- │ │ ├── Yes → Call /auth/refresh
276
- │ │ │ ├── Success → Retry original request
277
- │ │ │ └── Failure → Force logout
278
- │ │ └── No → Force logout
279
- │ └── Token just expired (not invalid)
280
- │ └── Auto-refresh, user doesn't notice
281
- └── Success → Continue
282
- ```
283
-
284
- ---
285
-
286
- ## 6. Error Handling for Mobile
287
-
288
- ### Mobile-Specific Error Format
289
-
290
- ```json
291
- {
292
- "error": {
293
- "code": "PAYMENT_DECLINED",
294
- "message": "Your payment was declined",
295
- "user_message": "Please check your card details or try another payment method",
296
- "action": {
297
- "type": "navigate",
298
- "destination": "payment_methods"
299
- },
300
- "retry": {
301
- "allowed": true,
302
- "after_seconds": 5
303
- }
304
- }
305
- }
306
- ```
307
-
308
- ### Error Categories
309
-
310
- | Code Range | Category | Mobile Handling |
311
- |------------|----------|-----------------|
312
- | 400-499 | Client error | Show message, user action needed |
313
- | 401 | Auth expired | Silent refresh or re-login |
314
- | 403 | Forbidden | Show upgrade/permission screen |
315
- | 404 | Not found | Remove from local cache |
316
- | 409 | Conflict | Show sync conflict UI |
317
- | 429 | Rate limit | Retry after header, backoff |
318
- | 500-599 | Server error | Retry with backoff, show "try later" |
319
- | Network | No connection | Use cached data, queue for sync |
320
-
321
- ---
322
-
323
- ## 7. Media & Binary Handling
324
-
325
- ### Image Optimization
326
-
327
- ```
328
- CLIENT REQUEST:
329
- GET /images/{id}?w=400&h=300&q=80&format=webp
330
-
331
- SERVER RESPONSE:
332
- ├── Resize on-the-fly OR use CDN
333
- ├── WebP for Android (smaller)
334
- ├── HEIC for iOS 14+ (if supported)
335
- ├── JPEG fallback
336
- └── Cache-Control: max-age=31536000
337
- ```
338
-
339
- ### Chunked Upload (Large Files)
340
-
341
- ```
342
- UPLOAD FLOW:
343
- 1. POST /uploads/init
344
- { filename, size, mime_type }
345
- → { upload_id, chunk_size }
346
-
347
- 2. PUT /uploads/{upload_id}/chunks/{n}
348
- → Upload each chunk (1-5 MB)
349
- → Can resume if interrupted
350
-
351
- 3. POST /uploads/{upload_id}/complete
352
- → Server assembles chunks
353
- → Return final file URL
354
- ```
355
-
356
- ### Streaming Audio/Video
357
-
358
- ```
359
- REQUIREMENTS:
360
- ├── HLS (HTTP Live Streaming) for iOS
361
- ├── DASH or HLS for Android
362
- ├── Multiple quality levels (adaptive bitrate)
363
- ├── Range request support (seeking)
364
- └── Offline download chunks
365
-
366
- ENDPOINTS:
367
- GET /media/{id}/manifest.m3u8 → HLS manifest
368
- GET /media/{id}/segment_{n}.ts → Video segment
369
- GET /media/{id}/download → Full file for offline
370
- ```
371
-
372
- ---
373
-
374
- ## 8. Security for Mobile
375
-
376
- ### Device Attestation
377
-
378
- ```
379
- VERIFY REAL DEVICE (not emulator/bot):
380
- ├── iOS: DeviceCheck API
381
- │ └── Server verifies with Apple
382
- ├── Android: Play Integrity API (replaces SafetyNet)
383
- │ └── Server verifies with Google
384
- └── Fail closed: Reject if attestation fails
385
- ```
386
-
387
- ### Request Signing
388
-
389
- ```
390
- CLIENT:
391
- ├── Create signature = HMAC(timestamp + path + body, secret)
392
- ├── Send: X-Signature: {signature}
393
- ├── Send: X-Timestamp: {timestamp}
394
- └── Send: X-Device-ID: {device_id}
395
-
396
- SERVER:
397
- ├── Validate timestamp (within 5 minutes)
398
- ├── Recreate signature with same inputs
399
- ├── Compare signatures
400
- └── Reject if mismatch (tampering detected)
401
- ```
402
-
403
- ### Rate Limiting
404
-
405
- ```
406
- MOBILE-SPECIFIC LIMITS:
407
- ├── Per device (X-Device-ID)
408
- ├── Per user (after auth)
409
- ├── Per endpoint (stricter for sensitive)
410
- └── Sliding window preferred
411
-
412
- HEADERS:
413
- X-RateLimit-Limit: 100
414
- X-RateLimit-Remaining: 95
415
- X-RateLimit-Reset: 1609459200
416
- Retry-After: 60 (when 429)
417
- ```
418
-
419
- ---
420
-
421
- ## 9. Monitoring & Analytics
422
-
423
- ### Required Headers from Mobile
424
-
425
- ```
426
- Every mobile request should include:
427
- ├── X-App-Version: 2.1.0
428
- ├── X-Platform: ios | android
429
- ├── X-OS-Version: 17.0
430
- ├── X-Device-Model: iPhone15,2
431
- ├── X-Device-ID: uuid (persistent)
432
- ├── X-Request-ID: uuid (per request, for tracing)
433
- ├── Accept-Language: tr-TR
434
- └── X-Timezone: Europe/Istanbul
435
- ```
436
-
437
- ### What to Log
438
-
439
- ```
440
- FOR EACH REQUEST:
441
- ├── All headers above
442
- ├── Endpoint, method, status
443
- ├── Response time
444
- ├── Error details (if any)
445
- └── User ID (if authenticated)
446
-
447
- ALERTS:
448
- ├── Error rate > 5% per version
449
- ├── P95 latency > 2 seconds
450
- ├── Specific version crash spike
451
- ├── Auth failure spike (attack?)
452
- └── Push delivery failure spike
453
- ```
454
-
455
- ---
456
-
457
- ## 📝 MOBILE BACKEND CHECKLIST
458
-
459
- ### Before API Design
460
- - [ ] Identified mobile-specific requirements?
461
- - [ ] Planned offline behavior?
462
- - [ ] Designed sync strategy?
463
- - [ ] Considered bandwidth constraints?
464
-
465
- ### For Every Endpoint
466
- - [ ] Response as small as possible?
467
- - [ ] Pagination cursor-based?
468
- - [ ] Proper caching headers?
469
- - [ ] Mobile error format with actions?
470
-
471
- ### Authentication
472
- - [ ] Token refresh implemented?
473
- - [ ] Silent re-auth flow?
474
- - [ ] Multi-device logout?
475
- - [ ] Secure token storage guidance?
476
-
477
- ### Push Notifications
478
- - [ ] FCM + APNs configured?
479
- - [ ] Token lifecycle managed?
480
- - [ ] Silent vs display push defined?
481
- - [ ] Sensitive data NOT in push payload?
482
-
483
- ### Release
484
- - [ ] Version check endpoint ready?
485
- - [ ] Feature flags configured?
486
- - [ ] Force update mechanism?
487
- - [ ] Monitoring headers required?
488
-
489
- ---
490
-
491
- > **Remember:** Mobile backend must be resilient to bad networks, respect battery life, and handle interrupted sessions gracefully. The client cannot be trusted, but it also cannot be hung up—provide offline capabilities and clear error recovery paths.