@musashishao/agent-kit 1.0.0

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 (220) hide show
  1. package/.agent/.shared/ui-ux-pro-max/data/charts.csv +26 -0
  2. package/.agent/.shared/ui-ux-pro-max/data/colors.csv +97 -0
  3. package/.agent/.shared/ui-ux-pro-max/data/icons.csv +101 -0
  4. package/.agent/.shared/ui-ux-pro-max/data/landing.csv +31 -0
  5. package/.agent/.shared/ui-ux-pro-max/data/products.csv +97 -0
  6. package/.agent/.shared/ui-ux-pro-max/data/prompts.csv +24 -0
  7. package/.agent/.shared/ui-ux-pro-max/data/react-performance.csv +45 -0
  8. package/.agent/.shared/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  9. package/.agent/.shared/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  10. package/.agent/.shared/ui-ux-pro-max/data/stacks/jetpack-compose.csv +53 -0
  11. package/.agent/.shared/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  12. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  13. package/.agent/.shared/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  14. package/.agent/.shared/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  15. package/.agent/.shared/ui-ux-pro-max/data/stacks/react.csv +54 -0
  16. package/.agent/.shared/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  17. package/.agent/.shared/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  18. package/.agent/.shared/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  19. package/.agent/.shared/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  20. package/.agent/.shared/ui-ux-pro-max/data/styles.csv +59 -0
  21. package/.agent/.shared/ui-ux-pro-max/data/typography.csv +58 -0
  22. package/.agent/.shared/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  23. package/.agent/.shared/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  24. package/.agent/.shared/ui-ux-pro-max/data/web-interface.csv +31 -0
  25. package/.agent/.shared/ui-ux-pro-max/scripts/core.py +258 -0
  26. package/.agent/.shared/ui-ux-pro-max/scripts/design_system.py +487 -0
  27. package/.agent/.shared/ui-ux-pro-max/scripts/search.py +76 -0
  28. package/.agent/ARCHITECTURE.md +225 -0
  29. package/.agent/CONTEXT.md +229 -0
  30. package/.agent/FEATURE_ROADMAP.md +435 -0
  31. package/.agent/PROMPT_TEMPLATES.md +261 -0
  32. package/.agent/agents/backend-specialist.md +263 -0
  33. package/.agent/agents/database-architect.md +226 -0
  34. package/.agent/agents/debugger.md +225 -0
  35. package/.agent/agents/devops-engineer.md +242 -0
  36. package/.agent/agents/documentation-writer.md +104 -0
  37. package/.agent/agents/explorer-agent.md +73 -0
  38. package/.agent/agents/frontend-specialist.md +556 -0
  39. package/.agent/agents/game-developer.md +162 -0
  40. package/.agent/agents/mobile-developer.md +377 -0
  41. package/.agent/agents/orchestrator.md +416 -0
  42. package/.agent/agents/penetration-tester.md +188 -0
  43. package/.agent/agents/performance-optimizer.md +187 -0
  44. package/.agent/agents/project-planner.md +403 -0
  45. package/.agent/agents/security-auditor.md +170 -0
  46. package/.agent/agents/seo-specialist.md +111 -0
  47. package/.agent/agents/test-engineer.md +158 -0
  48. package/.agent/rules/GEMINI.md +251 -0
  49. package/.agent/skills/api-patterns/SKILL.md +81 -0
  50. package/.agent/skills/api-patterns/api-style.md +42 -0
  51. package/.agent/skills/api-patterns/auth.md +24 -0
  52. package/.agent/skills/api-patterns/documentation.md +26 -0
  53. package/.agent/skills/api-patterns/graphql.md +41 -0
  54. package/.agent/skills/api-patterns/rate-limiting.md +31 -0
  55. package/.agent/skills/api-patterns/response.md +37 -0
  56. package/.agent/skills/api-patterns/rest.md +40 -0
  57. package/.agent/skills/api-patterns/scripts/api_validator.py +211 -0
  58. package/.agent/skills/api-patterns/security-testing.md +122 -0
  59. package/.agent/skills/api-patterns/trpc.md +41 -0
  60. package/.agent/skills/api-patterns/versioning.md +22 -0
  61. package/.agent/skills/app-builder/SKILL.md +75 -0
  62. package/.agent/skills/app-builder/agent-coordination.md +71 -0
  63. package/.agent/skills/app-builder/feature-building.md +53 -0
  64. package/.agent/skills/app-builder/project-detection.md +34 -0
  65. package/.agent/skills/app-builder/scaffolding.md +118 -0
  66. package/.agent/skills/app-builder/tech-stack.md +40 -0
  67. package/.agent/skills/app-builder/templates/SKILL.md +39 -0
  68. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -0
  69. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -0
  70. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -0
  71. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -0
  72. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -0
  73. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -0
  74. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -0
  75. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +82 -0
  76. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +100 -0
  77. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +106 -0
  78. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +101 -0
  79. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -0
  80. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +93 -0
  81. package/.agent/skills/architecture/SKILL.md +55 -0
  82. package/.agent/skills/architecture/context-discovery.md +43 -0
  83. package/.agent/skills/architecture/examples.md +94 -0
  84. package/.agent/skills/architecture/pattern-selection.md +68 -0
  85. package/.agent/skills/architecture/patterns-reference.md +50 -0
  86. package/.agent/skills/architecture/trade-off-analysis.md +77 -0
  87. package/.agent/skills/bash-linux/SKILL.md +199 -0
  88. package/.agent/skills/behavioral-modes/SKILL.md +242 -0
  89. package/.agent/skills/brainstorming/SKILL.md +163 -0
  90. package/.agent/skills/brainstorming/dynamic-questioning.md +350 -0
  91. package/.agent/skills/clean-code/SKILL.md +201 -0
  92. package/.agent/skills/code-review-checklist/SKILL.md +109 -0
  93. package/.agent/skills/database-design/SKILL.md +52 -0
  94. package/.agent/skills/database-design/database-selection.md +43 -0
  95. package/.agent/skills/database-design/indexing.md +39 -0
  96. package/.agent/skills/database-design/migrations.md +48 -0
  97. package/.agent/skills/database-design/optimization.md +36 -0
  98. package/.agent/skills/database-design/orm-selection.md +30 -0
  99. package/.agent/skills/database-design/schema-design.md +56 -0
  100. package/.agent/skills/database-design/scripts/schema_validator.py +172 -0
  101. package/.agent/skills/deployment-procedures/SKILL.md +241 -0
  102. package/.agent/skills/doc.md +177 -0
  103. package/.agent/skills/docker-expert/SKILL.md +409 -0
  104. package/.agent/skills/documentation-templates/SKILL.md +194 -0
  105. package/.agent/skills/frontend-design/SKILL.md +396 -0
  106. package/.agent/skills/frontend-design/animation-guide.md +331 -0
  107. package/.agent/skills/frontend-design/color-system.md +311 -0
  108. package/.agent/skills/frontend-design/decision-trees.md +418 -0
  109. package/.agent/skills/frontend-design/motion-graphics.md +306 -0
  110. package/.agent/skills/frontend-design/scripts/accessibility_checker.py +183 -0
  111. package/.agent/skills/frontend-design/scripts/ux_audit.py +722 -0
  112. package/.agent/skills/frontend-design/typography-system.md +345 -0
  113. package/.agent/skills/frontend-design/ux-psychology.md +541 -0
  114. package/.agent/skills/frontend-design/visual-effects.md +383 -0
  115. package/.agent/skills/game-development/2d-games/SKILL.md +119 -0
  116. package/.agent/skills/game-development/3d-games/SKILL.md +135 -0
  117. package/.agent/skills/game-development/SKILL.md +167 -0
  118. package/.agent/skills/game-development/game-art/SKILL.md +185 -0
  119. package/.agent/skills/game-development/game-audio/SKILL.md +190 -0
  120. package/.agent/skills/game-development/game-design/SKILL.md +129 -0
  121. package/.agent/skills/game-development/mobile-games/SKILL.md +108 -0
  122. package/.agent/skills/game-development/multiplayer/SKILL.md +132 -0
  123. package/.agent/skills/game-development/pc-games/SKILL.md +144 -0
  124. package/.agent/skills/game-development/vr-ar/SKILL.md +123 -0
  125. package/.agent/skills/game-development/web-games/SKILL.md +150 -0
  126. package/.agent/skills/geo-fundamentals/SKILL.md +156 -0
  127. package/.agent/skills/geo-fundamentals/scripts/geo_checker.py +289 -0
  128. package/.agent/skills/i18n-localization/SKILL.md +154 -0
  129. package/.agent/skills/i18n-localization/scripts/i18n_checker.py +241 -0
  130. package/.agent/skills/lint-and-validate/SKILL.md +45 -0
  131. package/.agent/skills/lint-and-validate/scripts/lint_runner.py +172 -0
  132. package/.agent/skills/lint-and-validate/scripts/type_coverage.py +173 -0
  133. package/.agent/skills/mcp-builder/SKILL.md +176 -0
  134. package/.agent/skills/mobile-design/SKILL.md +394 -0
  135. package/.agent/skills/mobile-design/decision-trees.md +516 -0
  136. package/.agent/skills/mobile-design/mobile-backend.md +491 -0
  137. package/.agent/skills/mobile-design/mobile-color-system.md +420 -0
  138. package/.agent/skills/mobile-design/mobile-debugging.md +122 -0
  139. package/.agent/skills/mobile-design/mobile-design-thinking.md +357 -0
  140. package/.agent/skills/mobile-design/mobile-navigation.md +458 -0
  141. package/.agent/skills/mobile-design/mobile-performance.md +767 -0
  142. package/.agent/skills/mobile-design/mobile-testing.md +356 -0
  143. package/.agent/skills/mobile-design/mobile-typography.md +433 -0
  144. package/.agent/skills/mobile-design/platform-android.md +666 -0
  145. package/.agent/skills/mobile-design/platform-ios.md +561 -0
  146. package/.agent/skills/mobile-design/scripts/mobile_audit.py +670 -0
  147. package/.agent/skills/mobile-design/touch-psychology.md +537 -0
  148. package/.agent/skills/nestjs-expert/SKILL.md +552 -0
  149. package/.agent/skills/nextjs-best-practices/SKILL.md +203 -0
  150. package/.agent/skills/nodejs-best-practices/SKILL.md +333 -0
  151. package/.agent/skills/parallel-agents/SKILL.md +175 -0
  152. package/.agent/skills/performance-profiling/SKILL.md +143 -0
  153. package/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +76 -0
  154. package/.agent/skills/plan-writing/SKILL.md +152 -0
  155. package/.agent/skills/powershell-windows/SKILL.md +167 -0
  156. package/.agent/skills/prisma-expert/SKILL.md +355 -0
  157. package/.agent/skills/python-patterns/SKILL.md +441 -0
  158. package/.agent/skills/react-patterns/SKILL.md +198 -0
  159. package/.agent/skills/red-team-tactics/SKILL.md +199 -0
  160. package/.agent/skills/seo-fundamentals/SKILL.md +129 -0
  161. package/.agent/skills/seo-fundamentals/scripts/seo_checker.py +219 -0
  162. package/.agent/skills/server-management/SKILL.md +161 -0
  163. package/.agent/skills/systematic-debugging/SKILL.md +109 -0
  164. package/.agent/skills/tailwind-patterns/SKILL.md +269 -0
  165. package/.agent/skills/tdd-workflow/SKILL.md +149 -0
  166. package/.agent/skills/testing-patterns/SKILL.md +178 -0
  167. package/.agent/skills/testing-patterns/scripts/test_runner.py +219 -0
  168. package/.agent/skills/typescript-expert/SKILL.md +429 -0
  169. package/.agent/skills/typescript-expert/references/tsconfig-strict.json +92 -0
  170. package/.agent/skills/typescript-expert/references/typescript-cheatsheet.md +383 -0
  171. package/.agent/skills/typescript-expert/references/utility-types.ts +335 -0
  172. package/.agent/skills/typescript-expert/scripts/ts_diagnostic.py +203 -0
  173. package/.agent/skills/ui-ux-pro-max/SKILL.md +351 -0
  174. package/.agent/skills/ui-ux-pro-max/data/charts.csv +26 -0
  175. package/.agent/skills/ui-ux-pro-max/data/colors.csv +97 -0
  176. package/.agent/skills/ui-ux-pro-max/data/icons.csv +101 -0
  177. package/.agent/skills/ui-ux-pro-max/data/landing.csv +31 -0
  178. package/.agent/skills/ui-ux-pro-max/data/products.csv +97 -0
  179. package/.agent/skills/ui-ux-pro-max/data/prompts.csv +24 -0
  180. package/.agent/skills/ui-ux-pro-max/data/react-performance.csv +45 -0
  181. package/.agent/skills/ui-ux-pro-max/data/stacks/flutter.csv +53 -0
  182. package/.agent/skills/ui-ux-pro-max/data/stacks/html-tailwind.csv +56 -0
  183. package/.agent/skills/ui-ux-pro-max/data/stacks/nextjs.csv +53 -0
  184. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxt-ui.csv +51 -0
  185. package/.agent/skills/ui-ux-pro-max/data/stacks/nuxtjs.csv +59 -0
  186. package/.agent/skills/ui-ux-pro-max/data/stacks/react-native.csv +52 -0
  187. package/.agent/skills/ui-ux-pro-max/data/stacks/react.csv +54 -0
  188. package/.agent/skills/ui-ux-pro-max/data/stacks/shadcn.csv +61 -0
  189. package/.agent/skills/ui-ux-pro-max/data/stacks/svelte.csv +54 -0
  190. package/.agent/skills/ui-ux-pro-max/data/stacks/swiftui.csv +51 -0
  191. package/.agent/skills/ui-ux-pro-max/data/stacks/vue.csv +50 -0
  192. package/.agent/skills/ui-ux-pro-max/data/styles.csv +59 -0
  193. package/.agent/skills/ui-ux-pro-max/data/typography.csv +58 -0
  194. package/.agent/skills/ui-ux-pro-max/data/ui-reasoning.csv +101 -0
  195. package/.agent/skills/ui-ux-pro-max/data/ux-guidelines.csv +100 -0
  196. package/.agent/skills/ui-ux-pro-max/data/web-interface.csv +31 -0
  197. package/.agent/skills/ui-ux-pro-max/scripts/core.py +257 -0
  198. package/.agent/skills/ui-ux-pro-max/scripts/design_system.py +487 -0
  199. package/.agent/skills/ui-ux-pro-max/scripts/search.py +76 -0
  200. package/.agent/skills/vulnerability-scanner/SKILL.md +276 -0
  201. package/.agent/skills/vulnerability-scanner/checklists.md +121 -0
  202. package/.agent/skills/vulnerability-scanner/scripts/security_scan.py +458 -0
  203. package/.agent/skills/webapp-testing/SKILL.md +187 -0
  204. package/.agent/skills/webapp-testing/scripts/playwright_runner.py +173 -0
  205. package/.agent/workflows/brainstorm.md +113 -0
  206. package/.agent/workflows/create.md +59 -0
  207. package/.agent/workflows/debug.md +103 -0
  208. package/.agent/workflows/deploy.md +176 -0
  209. package/.agent/workflows/enhance.md +63 -0
  210. package/.agent/workflows/orchestrate.md +237 -0
  211. package/.agent/workflows/plan.md +89 -0
  212. package/.agent/workflows/preview.md +80 -0
  213. package/.agent/workflows/status.md +86 -0
  214. package/.agent/workflows/test.md +144 -0
  215. package/.agent/workflows/ui-ux-pro-max.md +231 -0
  216. package/LICENSE +21 -0
  217. package/README.md +101 -0
  218. package/bin/cli.js +235 -0
  219. package/index.js +1 -0
  220. package/package.json +43 -0
@@ -0,0 +1,491 @@
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.