Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
1405 lines
71 KiB
Markdown
1405 lines
71 KiB
Markdown
# CoaxysPanel Backend Product Contract
|
|
|
|
## Purpose
|
|
|
|
1. CoaxysPanel is a hosting control panel product with a production-oriented frontend already in place.
|
|
2. The backend should become the trusted control plane behind the existing frontend.
|
|
3. The backend should provide account, server, website, domain, file, database, email, security, automation, backup, notification, audit, support, and settings services.
|
|
4. The backend should treat the current frontend mock service layer as the public frontend contract surface.
|
|
5. The backend should preserve the product feel of a dense hosting administration interface.
|
|
6. The backend should support the CoaxysPanel brand without using third-party control-panel trademarks or copied assets.
|
|
7. The backend should be designed for real hosting operations, not only visual demos.
|
|
8. The backend should keep destructive infrastructure operations guarded by explicit policy.
|
|
9. The backend should keep the frontend responsive while long-running operations continue asynchronously.
|
|
10. The backend should provide typed, stable, versionable responses for all frontend modules.
|
|
11. The backend should make real infrastructure state visible without exposing unsafe command execution to the browser.
|
|
12. The backend should separate user-facing workflows from privileged host-level execution.
|
|
13. The backend should support mock, staging, and production environments through the same conceptual contracts.
|
|
14. The backend should make it possible to replace mock data one service at a time.
|
|
15. The backend should not require the frontend to know implementation details of servers, packages, daemons, or storage engines.
|
|
16. The frontend should continue to depend on service interfaces rather than importing raw backend payloads directly.
|
|
17. The frontend should receive normalized data that matches the current DTO vocabulary.
|
|
18. The frontend should show loading, success, error, empty, permission, maintenance, and partial-failure states from backend signals.
|
|
19. The backend should provide enough metadata for the frontend to explain status clearly.
|
|
20. The backend should treat every panel action as an auditable business event.
|
|
|
|
## Product Scope
|
|
|
|
21. The backend should own authentication and session lifecycle.
|
|
22. The backend should own account selection and current server context.
|
|
23. The backend should own permission evaluation for all modules.
|
|
24. The backend should own hosting-account data.
|
|
25. The backend should own website and application records.
|
|
26. The backend should own domain records and DNS-zone state.
|
|
27. The backend should own file-manager metadata and file-operation jobs.
|
|
28. The backend should own database inventory and database-user relationships.
|
|
29. The backend should own mailbox inventory and email-routing state.
|
|
30. The backend should own metrics ingestion and metric summaries.
|
|
31. The backend should own security findings and security policy state.
|
|
32. The backend should own software-runtime availability.
|
|
33. The backend should own advanced tools that inspect or coordinate server state.
|
|
34. The backend should own server-administration models.
|
|
35. The backend should own users, teams, resellers, roles, and package models.
|
|
36. The backend should own backup schedules, backup artifacts, and restore jobs.
|
|
37. The backend should own automation definitions and automation execution history.
|
|
38. The backend should own notification delivery preferences and notification events.
|
|
39. The backend should own audit-event persistence.
|
|
40. The backend should own support-ticket and diagnostic-report state.
|
|
41. The backend should own global and per-account settings.
|
|
42. The backend should provide read models optimized for the frontend shell.
|
|
43. The backend should provide write models optimized for validated panel operations.
|
|
44. The backend should define ownership boundaries for every module.
|
|
45. The backend should preserve module independence where practical.
|
|
46. The backend should support future module additions without rewriting the app shell.
|
|
47. The backend should expose consistent navigation and capability metadata.
|
|
48. The backend should identify unavailable modules explicitly.
|
|
49. The backend should avoid hidden failures behind generic success messages.
|
|
50. The backend should make backend maintenance state visible to the frontend.
|
|
|
|
## Core Principles
|
|
|
|
51. The backend should be contract-first.
|
|
52. The backend should be permission-aware by default.
|
|
53. The backend should be tenant-aware by default.
|
|
54. The backend should be audit-aware by default.
|
|
55. The backend should be failure-aware by default.
|
|
56. The backend should be localization-ready.
|
|
57. The backend should be observability-ready.
|
|
58. The backend should be horizontally scalable where panel traffic requires it.
|
|
59. The backend should support background jobs for slow operations.
|
|
60. The backend should support eventual consistency where infrastructure state cannot be instant.
|
|
61. The backend should not block ordinary UI reads on slow server probes.
|
|
62. The backend should not expose raw secrets to the browser after creation.
|
|
63. The backend should not expose host credentials to frontend clients.
|
|
64. The backend should not treat frontend validation as sufficient.
|
|
65. The backend should not trust client-provided role or permission claims.
|
|
66. The backend should not assume a single server forever.
|
|
67. The backend should not assume a single account forever.
|
|
68. The backend should not assume all customers have the same feature set.
|
|
69. The backend should not require every operation to be synchronous.
|
|
70. The backend should not create fake success for infrastructure actions.
|
|
71. The backend should provide explicit job states for deferred work.
|
|
72. The backend should provide explicit conflict states for contested resources.
|
|
73. The backend should provide explicit validation fields for form errors.
|
|
74. The backend should provide explicit maintenance states for unavailable modules.
|
|
75. The backend should provide explicit permission states for denied modules.
|
|
76. The backend should provide stable identifiers across refreshes.
|
|
77. The backend should provide human-readable names alongside stable identifiers.
|
|
78. The backend should preserve immutable audit data.
|
|
79. The backend should keep destructive actions reversible when the domain allows it.
|
|
80. The backend should document irreversible actions in response metadata.
|
|
|
|
## API Envelope
|
|
|
|
81. Every backend response should use a standard envelope.
|
|
82. Successful responses should contain `data`.
|
|
83. Successful responses should contain `meta`.
|
|
84. Successful responses should contain `error: null`.
|
|
85. Failed responses should contain `data: null`.
|
|
86. Failed responses should contain `meta`.
|
|
87. Failed responses should contain a structured `error`.
|
|
88. The error object should contain a stable code.
|
|
89. The error object should contain a human-readable message.
|
|
90. The error object should contain field-level errors when validation fails.
|
|
91. The meta object should include a request identifier.
|
|
92. The meta object should include pagination metadata for list responses.
|
|
93. The meta object should include sort metadata when sorting is applied.
|
|
94. The meta object should include filter metadata when filters are applied.
|
|
95. The meta object should include permission metadata when useful.
|
|
96. The meta object should include partial-failure metadata when applicable.
|
|
97. The meta object should include freshness metadata for cached infrastructure state.
|
|
98. The meta object should include maintenance metadata for degraded services.
|
|
99. The meta object should include job metadata when an operation starts background work.
|
|
100. The meta object should include rate-limit metadata where customer-facing limits exist.
|
|
|
|
## API Consistency
|
|
|
|
101. List endpoints should share pagination semantics.
|
|
102. List endpoints should share search semantics.
|
|
103. List endpoints should share filter semantics.
|
|
104. List endpoints should share sort semantics.
|
|
105. List endpoints should provide total counts when feasible.
|
|
106. List endpoints should provide cursor metadata when offset pagination is unsuitable.
|
|
107. Detail endpoints should include all fields needed by the current page.
|
|
108. Detail endpoints should avoid requiring many dependent calls for first render.
|
|
109. Mutation endpoints should return the updated resource or a job reference.
|
|
110. Bulk endpoints should return per-item status.
|
|
111. Bulk endpoints should report partial failures explicitly.
|
|
112. Create endpoints should return the canonical new resource identifier.
|
|
113. Update endpoints should report conflict versions when optimistic concurrency fails.
|
|
114. Delete endpoints should distinguish soft delete, trash, archive, and permanent delete.
|
|
115. Restore endpoints should describe restored scope.
|
|
116. Import endpoints should describe parsed resources, warnings, and rejected records.
|
|
117. Export endpoints should return export metadata and delivery status.
|
|
118. Validation endpoints should return field-level errors without performing the operation.
|
|
119. Preview endpoints should return impact summaries without performing the operation.
|
|
120. Capability endpoints should describe what the authenticated user can see and do.
|
|
|
|
## Frontend Wiring Contract
|
|
|
|
121. The frontend should keep using `src/api/services` as the service boundary.
|
|
122. The frontend should switch from mock services to HTTP-backed services behind the same method names.
|
|
123. The frontend should preserve TanStack Query query keys as stable cache concepts.
|
|
124. The frontend should invalidate query groups after successful mutations.
|
|
125. The frontend should use backend request identifiers in error displays where helpful.
|
|
126. The frontend should map backend field errors into React Hook Form fields.
|
|
127. The frontend should keep route definitions independent from HTTP transport details.
|
|
128. The frontend should receive permission data before showing protected module actions.
|
|
129. The frontend should treat backend permission denials as valid product states.
|
|
130. The frontend should treat backend maintenance states as valid product states.
|
|
131. The frontend should show backend job progress for long-running operations.
|
|
132. The frontend should show backend conflict warnings before overwriting data.
|
|
133. The frontend should show backend validation messages without inventing alternate meanings.
|
|
134. The frontend should not infer infrastructure success from a started job.
|
|
135. The frontend should not assume mock-only latency in production.
|
|
136. The frontend should not assume all tables fit in memory.
|
|
137. The frontend should not assume all file trees are small.
|
|
138. The frontend should not assume all log streams are finite.
|
|
139. The frontend should not assume all charts have complete data.
|
|
140. The frontend should not assume all routes are available for every role.
|
|
|
|
## Authentication
|
|
|
|
141. The backend should provide login.
|
|
142. The backend should provide logout.
|
|
143. The backend should provide session refresh.
|
|
144. The backend should provide session expiration signals.
|
|
145. The backend should provide forgot-password flow state.
|
|
146. The backend should provide reset-password flow state.
|
|
147. The backend should provide two-factor challenge state.
|
|
148. The backend should provide recovery-code challenge state.
|
|
149. The backend should provide passkey authentication state.
|
|
150. The backend should provide device-verification state.
|
|
151. The backend should provide account-locked state.
|
|
152. The backend should provide invitation-acceptance state.
|
|
153. The backend should provide first-run setup state.
|
|
154. The backend should provide current-user identity.
|
|
155. The backend should provide current-account identity.
|
|
156. The backend should provide current-server identity.
|
|
157. The backend should provide available account selectors.
|
|
158. The backend should provide available server selectors.
|
|
159. The backend should provide user preferences after authentication.
|
|
160. The backend should provide active session metadata.
|
|
|
|
## Authentication Safety
|
|
|
|
161. Password validation should be enforced by the backend.
|
|
162. Two-factor policy should be enforced by the backend.
|
|
163. Passkey policy should be enforced by the backend.
|
|
164. Recovery-code policy should be enforced by the backend.
|
|
165. Device verification should be enforced by the backend.
|
|
166. Account lockout should be enforced by the backend.
|
|
167. Session timeout should be enforced by the backend.
|
|
168. Session revocation should be enforced by the backend.
|
|
169. Invitation expiration should be enforced by the backend.
|
|
170. First-run setup completion should be enforced by the backend.
|
|
171. Login attempts should be audited.
|
|
172. Failed login attempts should be audited.
|
|
173. Password resets should be audited.
|
|
174. Two-factor changes should be audited.
|
|
175. Passkey changes should be audited.
|
|
176. Trusted-device changes should be audited.
|
|
177. Session termination should be audited.
|
|
178. Account lock events should be audited.
|
|
179. Recovery-code usage should be audited.
|
|
180. Invitation acceptance should be audited.
|
|
|
|
## Permissions
|
|
|
|
181. The backend should own the canonical permission model.
|
|
182. The backend should support module permissions.
|
|
183. The backend should support action permissions.
|
|
184. The backend should support account-scoped permissions.
|
|
185. The backend should support server-scoped permissions.
|
|
186. The backend should support reseller-scoped permissions.
|
|
187. The backend should support support-operator permissions.
|
|
188. The backend should support read-only auditor permissions.
|
|
189. The backend should support custom roles.
|
|
190. The backend should support permission inheritance.
|
|
191. The backend should support permission overrides.
|
|
192. The backend should support permission previews.
|
|
193. The backend should support permission-denied response states.
|
|
194. The backend should support permission metadata in navigation responses.
|
|
195. The backend should support feature-list restrictions.
|
|
196. The backend should support package restrictions.
|
|
197. The backend should support suspension restrictions.
|
|
198. The backend should support maintenance restrictions.
|
|
199. The backend should support emergency-lockdown restrictions.
|
|
200. The backend should make permissions auditable.
|
|
|
|
## Dashboard
|
|
|
|
201. The backend should provide dashboard account information.
|
|
202. The backend should provide dashboard server information.
|
|
203. The backend should provide dashboard resource usage.
|
|
204. The backend should provide dashboard service status.
|
|
205. The backend should provide dashboard quick-action availability.
|
|
206. The backend should provide dashboard widget preferences.
|
|
207. The backend should provide dashboard widget order.
|
|
208. The backend should provide dashboard hidden-widget state.
|
|
209. The backend should provide dashboard refresh timestamps.
|
|
210. The backend should provide dashboard stale-data indicators.
|
|
211. The backend should provide dashboard partial-failure indicators.
|
|
212. The backend should provide dashboard empty states for new accounts.
|
|
213. The backend should provide dashboard warnings for quota pressure.
|
|
214. The backend should provide dashboard warnings for service degradation.
|
|
215. The backend should provide dashboard warnings for expiring certificates.
|
|
216. The backend should provide dashboard warnings for failed backups.
|
|
217. The backend should provide dashboard warnings for security findings.
|
|
218. The backend should provide dashboard links to relevant modules.
|
|
219. The backend should provide dashboard metrics at suitable granularity.
|
|
220. The backend should keep dashboard reads fast.
|
|
|
|
## Tools Registry
|
|
|
|
221. The backend should expose available tools for the authenticated user.
|
|
222. The backend should expose tool categories.
|
|
223. The backend should expose tool labels.
|
|
224. The backend should expose tool descriptions.
|
|
225. The backend should expose tool keywords.
|
|
226. The backend should expose tool badges.
|
|
227. The backend should expose tool warnings.
|
|
228. The backend should expose tool permission status.
|
|
229. The backend should expose tool availability status.
|
|
230. The backend should expose tool maintenance status.
|
|
231. The backend should expose tool favorite state.
|
|
232. The backend should expose recently used tools.
|
|
233. The backend should accept favorite ordering.
|
|
234. The backend should accept recently used updates.
|
|
235. The backend should support tool search.
|
|
236. The backend should support category filtering.
|
|
237. The backend should support tools hidden by packages.
|
|
238. The backend should support tools hidden by reseller policy.
|
|
239. The backend should support tools disabled by server capability.
|
|
240. The backend should make tool metadata stable enough for frontend caching.
|
|
|
|
## Websites
|
|
|
|
241. The backend should provide website lists.
|
|
242. The backend should provide website details.
|
|
243. The backend should provide website creation state.
|
|
244. The backend should provide website runtime choices.
|
|
245. The backend should provide domain assignment choices.
|
|
246. The backend should provide SSL assignment choices.
|
|
247. The backend should provide backup assignment choices.
|
|
248. The backend should provide database assignment choices.
|
|
249. The backend should provide repository assignment choices.
|
|
250. The backend should provide upload assignment choices.
|
|
251. The backend should validate website names.
|
|
252. The backend should validate document roots.
|
|
253. The backend should validate runtime settings.
|
|
254. The backend should validate environment variables.
|
|
255. The backend should validate resource limits.
|
|
256. The backend should validate deployment settings.
|
|
257. The backend should validate maintenance-mode settings.
|
|
258. The backend should validate redirect settings.
|
|
259. The backend should validate health-check settings.
|
|
260. The backend should return website creation as a job when provisioning is required.
|
|
|
|
## Website Operations
|
|
|
|
261. Website creation should be auditable.
|
|
262. Website deletion should be auditable.
|
|
263. Website cloning should be auditable.
|
|
264. Website staging creation should be auditable.
|
|
265. Website deployment should be auditable.
|
|
266. Website rollback should be auditable.
|
|
267. Website domain assignment should be auditable.
|
|
268. Website SSL assignment should be auditable.
|
|
269. Website backup assignment should be auditable.
|
|
270. Website runtime changes should be auditable.
|
|
271. Website environment changes should be auditable.
|
|
272. Website resource-limit changes should be auditable.
|
|
273. Website process changes should be auditable.
|
|
274. Website maintenance-mode changes should be auditable.
|
|
275. Website redirect changes should be auditable.
|
|
276. Website health-check changes should be auditable.
|
|
277. Website log access should be permission-gated.
|
|
278. Website deployment logs should be streamable.
|
|
279. Website access logs should be filterable.
|
|
280. Website error logs should be filterable.
|
|
|
|
## Domains
|
|
|
|
281. The backend should provide domain lists.
|
|
282. The backend should provide domain details.
|
|
283. The backend should provide subdomain records.
|
|
284. The backend should provide alias records.
|
|
285. The backend should provide parked-domain records.
|
|
286. The backend should provide redirect records.
|
|
287. The backend should provide domain transfer status.
|
|
288. The backend should provide domain verification status.
|
|
289. The backend should provide DNSSEC status.
|
|
290. The backend should provide nameserver settings.
|
|
291. The backend should provide domain health state.
|
|
292. The backend should provide propagation status.
|
|
293. The backend should provide certificate status.
|
|
294. The backend should validate domain syntax.
|
|
295. The backend should validate ownership checks.
|
|
296. The backend should validate redirect targets.
|
|
297. The backend should validate nameserver changes.
|
|
298. The backend should validate alias conflicts.
|
|
299. The backend should validate subdomain conflicts.
|
|
300. The backend should report DNS and certificate dependencies clearly.
|
|
|
|
## DNS
|
|
|
|
301. The backend should provide DNS-zone records.
|
|
302. The backend should support A records.
|
|
303. The backend should support AAAA records.
|
|
304. The backend should support CNAME records.
|
|
305. The backend should support MX records.
|
|
306. The backend should support TXT records.
|
|
307. The backend should support SRV records.
|
|
308. The backend should support CAA records.
|
|
309. The backend should support NS records.
|
|
310. The backend should support PTR records where applicable.
|
|
311. The backend should validate record names.
|
|
312. The backend should validate record values.
|
|
313. The backend should validate TTL values.
|
|
314. The backend should validate priority values.
|
|
315. The backend should validate record conflicts.
|
|
316. The backend should validate apex restrictions.
|
|
317. The backend should validate CNAME exclusivity.
|
|
318. The backend should validate MX dependencies.
|
|
319. The backend should validate CAA syntax.
|
|
320. The backend should return propagation-check state.
|
|
|
|
## DNS Operations
|
|
|
|
321. DNS record creation should be auditable.
|
|
322. DNS record editing should be auditable.
|
|
323. DNS record duplication should be auditable.
|
|
324. DNS record deletion should be auditable.
|
|
325. DNS bulk deletion should be auditable.
|
|
326. DNS imports should be auditable.
|
|
327. DNS exports should be auditable.
|
|
328. Raw-zone edits should be auditable.
|
|
329. DNSSEC changes should be auditable.
|
|
330. Nameserver changes should be auditable.
|
|
331. DNS operations should identify affected zones.
|
|
332. DNS operations should identify affected records.
|
|
333. DNS operations should identify conflicts.
|
|
334. DNS operations should identify warnings.
|
|
335. DNS operations should identify propagation expectations.
|
|
336. DNS operations should not require frontend parsing of raw zone files.
|
|
337. DNS operations should return normalized records.
|
|
338. DNS operations should preserve comments where the backend supports them.
|
|
339. DNS operations should protect provider-managed records.
|
|
340. DNS operations should expose read-only records as read-only.
|
|
|
|
## Files
|
|
|
|
341. The backend should provide directory trees.
|
|
342. The backend should provide file lists.
|
|
343. The backend should provide file details.
|
|
344. The backend should provide file previews.
|
|
345. The backend should provide image previews.
|
|
346. The backend should provide text previews.
|
|
347. The backend should provide source previews.
|
|
348. The backend should provide upload jobs.
|
|
349. The backend should provide download authorizations.
|
|
350. The backend should provide archive jobs.
|
|
351. The backend should provide extract jobs.
|
|
352. The backend should provide compress jobs.
|
|
353. The backend should provide trash state.
|
|
354. The backend should provide restore state.
|
|
355. The backend should provide permission metadata.
|
|
356. The backend should provide ownership metadata.
|
|
357. The backend should provide checksum metadata.
|
|
358. The backend should provide storage usage.
|
|
359. The backend should provide hidden-file visibility policy.
|
|
360. The backend should provide conflict-resolution options.
|
|
|
|
## File Operations
|
|
|
|
361. File upload should be job-aware.
|
|
362. Multi-file upload should be job-aware.
|
|
363. Drag-and-drop upload should be job-aware.
|
|
364. File rename should be conflict-aware.
|
|
365. File move should be conflict-aware.
|
|
366. File copy should be conflict-aware.
|
|
367. File duplicate should be conflict-aware.
|
|
368. File delete should be trash-aware.
|
|
369. File restore should be conflict-aware.
|
|
370. File creation should validate path and name.
|
|
371. Directory creation should validate path and name.
|
|
372. Archive creation should report progress.
|
|
373. Archive extraction should report progress.
|
|
374. Compression should report progress.
|
|
375. Permission changes should be auditable.
|
|
376. Ownership display should be accurate.
|
|
377. Checksum calculation should be asynchronous for large files.
|
|
378. Source editing should preserve encoding metadata.
|
|
379. Source editing should detect concurrent modifications.
|
|
380. Source editing should report validation warnings where supported.
|
|
|
|
## File Safety
|
|
|
|
381. The backend should prevent path traversal.
|
|
382. The backend should enforce account root boundaries.
|
|
383. The backend should hide unauthorized paths.
|
|
384. The backend should protect system paths.
|
|
385. The backend should protect panel-owned files.
|
|
386. The backend should enforce upload size limits.
|
|
387. The backend should enforce file count limits.
|
|
388. The backend should enforce extension restrictions where configured.
|
|
389. The backend should scan uploads where policy requires it.
|
|
390. The backend should quarantine suspicious files where policy requires it.
|
|
391. The backend should avoid exposing server absolute paths beyond allowed account context.
|
|
392. The backend should avoid exposing raw host usernames unless policy permits it.
|
|
393. The backend should represent symlinks safely.
|
|
394. The backend should make destructive file operations reversible when possible.
|
|
395. The backend should require confirmation metadata for permanent deletes.
|
|
396. The backend should keep operation transcripts for audits.
|
|
397. The backend should support Web Disk state.
|
|
398. The backend should support FTP account state.
|
|
399. The backend should support FTP session state.
|
|
400. The backend should support Git repository state.
|
|
|
|
## Databases
|
|
|
|
401. The backend should provide MySQL database state.
|
|
402. The backend should provide MariaDB database state.
|
|
403. The backend should provide PostgreSQL database state.
|
|
404. The backend should provide database user state.
|
|
405. The backend should provide database permission state.
|
|
406. The backend should provide database creation workflow state.
|
|
407. The backend should provide remote access state.
|
|
408. The backend should provide backup state.
|
|
409. The backend should provide restore state.
|
|
410. The backend should provide size analytics.
|
|
411. The backend should provide active connection state.
|
|
412. The backend should provide slow query summaries.
|
|
413. The backend should provide process-list state.
|
|
414. The backend should provide admin-tool launch readiness.
|
|
415. The backend should validate database names.
|
|
416. The backend should validate database usernames.
|
|
417. The backend should validate passwords.
|
|
418. The backend should validate privileges.
|
|
419. The backend should validate remote hosts.
|
|
420. The backend should validate backup policies.
|
|
|
|
## Database Operations
|
|
|
|
421. Database creation should be auditable.
|
|
422. Database deletion should be auditable.
|
|
423. Database rename should be auditable where supported.
|
|
424. Database user creation should be auditable.
|
|
425. Database user deletion should be auditable.
|
|
426. Database password changes should be auditable.
|
|
427. Database privilege changes should be auditable.
|
|
428. Remote access changes should be auditable.
|
|
429. Database backup creation should be auditable.
|
|
430. Database restore should be auditable.
|
|
431. Admin-tool launch should be auditable.
|
|
432. Connection tests should return explicit results.
|
|
433. Connection tests should not expose passwords.
|
|
434. Process-list actions should be permission-gated.
|
|
435. Slow query access should be permission-gated.
|
|
436. Database analytics should be cacheable.
|
|
437. Database storage values should be normalized.
|
|
438. Database engines should be represented explicitly.
|
|
439. Database versions should be represented explicitly.
|
|
440. Database limits should be represented explicitly.
|
|
|
|
## Email
|
|
|
|
441. The backend should provide email account state.
|
|
442. The backend should provide mailbox creation state.
|
|
443. The backend should provide quota state.
|
|
444. The backend should provide password-management state.
|
|
445. The backend should provide forwarder state.
|
|
446. The backend should provide domain-forwarder state.
|
|
447. The backend should provide routing state.
|
|
448. The backend should provide autoresponder state.
|
|
449. The backend should provide default-address state.
|
|
450. The backend should provide mailing-list state.
|
|
451. The backend should provide delivery-tracking state.
|
|
452. The backend should provide email-filter state.
|
|
453. The backend should provide global-filter state.
|
|
454. The backend should provide spam-filtering state.
|
|
455. The backend should provide DKIM state.
|
|
456. The backend should provide SPF state.
|
|
457. The backend should provide DMARC state.
|
|
458. The backend should provide encryption state.
|
|
459. The backend should provide calendar state.
|
|
460. The backend should provide contact state.
|
|
|
|
## Email Operations
|
|
|
|
461. Mailbox creation should be auditable.
|
|
462. Mailbox deletion should be auditable.
|
|
463. Mailbox quota changes should be auditable.
|
|
464. Mailbox password changes should be auditable.
|
|
465. Forwarder changes should be auditable.
|
|
466. Routing changes should be auditable.
|
|
467. Autoresponder changes should be auditable.
|
|
468. Default-address changes should be auditable.
|
|
469. Mailing-list changes should be auditable.
|
|
470. Delivery tracking should be searchable.
|
|
471. Email filters should be testable.
|
|
472. Spam filter changes should be auditable.
|
|
473. DKIM changes should be auditable.
|
|
474. SPF changes should be auditable.
|
|
475. DMARC changes should be auditable.
|
|
476. Encryption key changes should be auditable.
|
|
477. Mail queue actions should be auditable.
|
|
478. Mail log access should be permission-gated.
|
|
479. Webmail launch should be auditable.
|
|
480. Client configuration should be generated from canonical server data.
|
|
|
|
## Email Client Configuration
|
|
|
|
481. The backend should provide IMAP settings.
|
|
482. The backend should provide SMTP settings.
|
|
483. The backend should provide POP3 settings.
|
|
484. The backend should provide TLS information.
|
|
485. The backend should provide mobile configuration data.
|
|
486. The backend should provide desktop configuration data.
|
|
487. The backend should provide server hostnames.
|
|
488. The backend should provide ports.
|
|
489. The backend should provide encryption requirements.
|
|
490. The backend should provide authentication methods.
|
|
491. The backend should provide username formats.
|
|
492. The backend should provide mailbox storage data.
|
|
493. The backend should provide last-login data.
|
|
494. The backend should provide forwarding state.
|
|
495. The backend should provide spam score summaries.
|
|
496. The backend should provide authentication status.
|
|
497. The backend should provide active sessions.
|
|
498. The backend should provide device setup hints as data.
|
|
499. The backend should avoid exposing passwords.
|
|
500. The backend should keep generated settings account-specific.
|
|
|
|
## Metrics
|
|
|
|
501. The backend should provide visitor metrics.
|
|
502. The backend should provide access-log summaries.
|
|
503. The backend should provide error-log summaries.
|
|
504. The backend should provide bandwidth metrics.
|
|
505. The backend should provide raw-access metadata.
|
|
506. The backend should provide AWStats-style metrics.
|
|
507. The backend should provide Webalizer-style metrics.
|
|
508. The backend should provide resource-usage metrics.
|
|
509. The backend should provide CPU history.
|
|
510. The backend should provide memory history.
|
|
511. The backend should provide disk history.
|
|
512. The backend should provide network-traffic history.
|
|
513. The backend should provide HTTP-status distributions.
|
|
514. The backend should provide top URLs.
|
|
515. The backend should provide top referrers.
|
|
516. The backend should provide top countries.
|
|
517. The backend should provide top user agents.
|
|
518. The backend should provide top IP addresses.
|
|
519. The backend should provide database performance metrics.
|
|
520. The backend should provide email-delivery metrics.
|
|
|
|
## Metrics Behavior
|
|
|
|
521. Metrics responses should support date ranges.
|
|
522. Metrics responses should support comparison ranges.
|
|
523. Metrics responses should support export metadata.
|
|
524. Metrics responses should support live-update indicators.
|
|
525. Metrics responses should support empty states.
|
|
526. Metrics responses should support delayed-ingestion states.
|
|
527. Metrics responses should support partial data warnings.
|
|
528. Metrics responses should support timezone-aware labels.
|
|
529. Metrics responses should support account scoping.
|
|
530. Metrics responses should support domain scoping.
|
|
531. Metrics responses should support website scoping.
|
|
532. Metrics responses should support server scoping.
|
|
533. Metrics responses should normalize units.
|
|
534. Metrics responses should identify sampled data.
|
|
535. Metrics responses should identify estimated data.
|
|
536. Metrics responses should avoid leaking other tenants.
|
|
537. Metrics exports should be auditable.
|
|
538. Metrics retention should be policy-driven.
|
|
539. Metrics aggregation should be product-consistent.
|
|
540. Metrics freshness should be visible.
|
|
|
|
## Security
|
|
|
|
541. The backend should provide SSL/TLS status.
|
|
542. The backend should provide certificate management state.
|
|
543. The backend should provide Let's Encrypt state.
|
|
544. The backend should provide custom certificate upload state.
|
|
545. The backend should provide CSR state.
|
|
546. The backend should provide private-key metadata.
|
|
547. The backend should provide automatic HTTPS state.
|
|
548. The backend should provide HTTPS redirect state.
|
|
549. The backend should provide HSTS state.
|
|
550. The backend should provide SSH access state.
|
|
551. The backend should provide SSH key state.
|
|
552. The backend should provide IP blocker state.
|
|
553. The backend should provide firewall state.
|
|
554. The backend should provide port-rule state.
|
|
555. The backend should provide brute-force protection state.
|
|
556. The backend should provide WAF rule state.
|
|
557. The backend should provide malware scanning state.
|
|
558. The backend should provide antivirus scanning state.
|
|
559. The backend should provide file-integrity state.
|
|
560. The backend should provide security-advisor state.
|
|
|
|
## Security Operations
|
|
|
|
561. Certificate issuance should be job-aware.
|
|
562. Certificate renewal should be job-aware.
|
|
563. Certificate upload should validate chains.
|
|
564. CSR generation should be auditable.
|
|
565. Private-key import should be guarded.
|
|
566. HTTPS redirect changes should be auditable.
|
|
567. HSTS changes should be auditable.
|
|
568. SSH key changes should be auditable.
|
|
569. IP blocker changes should be auditable.
|
|
570. Firewall changes should be auditable.
|
|
571. Port-rule changes should be auditable.
|
|
572. Brute-force policy changes should be auditable.
|
|
573. WAF rule changes should be auditable.
|
|
574. Malware scans should be job-aware.
|
|
575. Antivirus scans should be job-aware.
|
|
576. Integrity scans should be job-aware.
|
|
577. Security findings should have severity.
|
|
578. Security findings should have target metadata.
|
|
579. Security findings should have recommended actions.
|
|
580. Security findings should have remediation status.
|
|
|
|
## Defensive Boundary
|
|
|
|
581. The backend should treat security modules as defensive administration interfaces.
|
|
582. The backend should not expose offensive attack tooling.
|
|
583. The backend should not execute arbitrary user-provided attack payloads.
|
|
584. The backend should not provide exploit automation.
|
|
585. The backend should not provide credential harvesting features.
|
|
586. The backend should not expose private keys after creation unless explicit policy allows it.
|
|
587. The backend should not reveal sensitive scan internals to unauthorized users.
|
|
588. The backend should not allow firewall lockout without recovery policy.
|
|
589. The backend should not allow security-policy bypass from the frontend.
|
|
590. The backend should not silently downgrade security settings.
|
|
591. The backend should provide safe previews for risky changes.
|
|
592. The backend should provide typed confirmation requirements.
|
|
593. The backend should provide reason-field requirements.
|
|
594. The backend should provide second-factor requirements for critical actions.
|
|
595. The backend should provide impact descriptions for critical actions.
|
|
596. The backend should provide audit previews for critical actions.
|
|
597. The backend should provide rollback metadata where possible.
|
|
598. The backend should provide emergency-contact or recovery metadata where appropriate.
|
|
599. The backend should preserve evidence for security events.
|
|
600. The backend should make security state explainable.
|
|
|
|
## Software And Runtimes
|
|
|
|
601. The backend should provide PHP version state.
|
|
602. The backend should provide PHP extension state.
|
|
603. The backend should provide PHP configuration state.
|
|
604. The backend should provide per-domain PHP version state.
|
|
605. The backend should provide PHP-FPM settings state.
|
|
606. The backend should provide Node.js application state.
|
|
607. The backend should provide Node.js version state.
|
|
608. The backend should provide Python application state.
|
|
609. The backend should provide Python version state.
|
|
610. The backend should provide Ruby application state.
|
|
611. The backend should provide Docker application state.
|
|
612. The backend should provide Composer state.
|
|
613. The backend should provide npm script state.
|
|
614. The backend should provide package-manager status.
|
|
615. The backend should provide application-installer state.
|
|
616. The backend should provide runtime environment variables.
|
|
617. The backend should provide process-manager state.
|
|
618. The backend should provide website optimization state.
|
|
619. The backend should provide compression state.
|
|
620. The backend should provide cache state.
|
|
|
|
## Runtime Framework
|
|
|
|
621. Runtime definitions should be data-driven.
|
|
622. Runtime versions should be explicit.
|
|
623. Runtime extensions should be explicit.
|
|
624. Runtime process managers should be explicit.
|
|
625. Runtime environment-variable rules should be explicit.
|
|
626. Runtime resource limits should be explicit.
|
|
627. Runtime compatibility warnings should be explicit.
|
|
628. Runtime update availability should be explicit.
|
|
629. Runtime deprecation state should be explicit.
|
|
630. Runtime default settings should be explicit.
|
|
631. Runtime package operations should be job-aware.
|
|
632. Runtime process operations should be job-aware.
|
|
633. Runtime configuration changes should be auditable.
|
|
634. Runtime package changes should be auditable.
|
|
635. Runtime version changes should be auditable.
|
|
636. Runtime environment changes should be auditable.
|
|
637. Runtime restart requirements should be visible.
|
|
638. Runtime rollback availability should be visible.
|
|
639. Runtime future additions should not require frontend redesign.
|
|
640. Runtime labels should remain product-friendly.
|
|
|
|
## Advanced Tools
|
|
|
|
641. The backend should provide cron-job state.
|
|
642. The backend should provide task-scheduler state.
|
|
643. The backend should provide DNS lookup state.
|
|
644. The backend should provide traceroute state.
|
|
645. The backend should provide index-manager state.
|
|
646. The backend should provide error-page state.
|
|
647. The backend should provide MIME type state.
|
|
648. The backend should provide Apache handler state.
|
|
649. The backend should provide Nginx snippet state.
|
|
650. The backend should provide reverse-proxy rule state.
|
|
651. The backend should provide process-manager state.
|
|
652. The backend should provide service-manager state.
|
|
653. The backend should provide terminal session state.
|
|
654. The backend should provide log-viewer state.
|
|
655. The backend should provide queue-manager state.
|
|
656. The backend should provide webhook state.
|
|
657. The backend should provide API explorer metadata.
|
|
658. The backend should provide API documentation metadata.
|
|
659. The backend should provide environment-inspector state.
|
|
660. The backend should provide system-information state.
|
|
|
|
## Terminal
|
|
|
|
661. The terminal backend should be mockable.
|
|
662. The terminal backend should be permission-gated.
|
|
663. The terminal backend should be session-scoped.
|
|
664. The terminal backend should be server-scoped.
|
|
665. The terminal backend should provide connection state.
|
|
666. The terminal backend should provide tab state.
|
|
667. The terminal backend should provide transcript state.
|
|
668. The terminal backend should provide resize state.
|
|
669. The terminal backend should provide copy-paste policy.
|
|
670. The terminal backend should provide search metadata.
|
|
671. The terminal backend should provide reconnect state.
|
|
672. The terminal backend should provide fullscreen state metadata.
|
|
673. The terminal backend should provide clear-session actions.
|
|
674. The terminal backend should provide transcript download metadata.
|
|
675. The terminal backend should not expose unrestricted command execution to normal users.
|
|
676. The terminal backend should not bypass account isolation.
|
|
677. The terminal backend should not bypass audit logging.
|
|
678. The terminal backend should not bypass role restrictions.
|
|
679. The terminal backend should distinguish mock sessions from real sessions.
|
|
680. The terminal backend should be optional per server.
|
|
|
|
## Server Administration
|
|
|
|
681. The backend should provide server overview state.
|
|
682. The backend should provide server status.
|
|
683. The backend should provide services state.
|
|
684. The backend should provide process state.
|
|
685. The backend should provide network-interface state.
|
|
686. The backend should provide mounted-filesystem state.
|
|
687. The backend should provide storage-device state.
|
|
688. The backend should provide system-update state.
|
|
689. The backend should provide kernel information.
|
|
690. The backend should provide reboot state.
|
|
691. The backend should provide shutdown state.
|
|
692. The backend should provide hostname state.
|
|
693. The backend should provide timezone state.
|
|
694. The backend should provide DNS resolver state.
|
|
695. The backend should provide nameserver state.
|
|
696. The backend should provide firewall state.
|
|
697. The backend should provide package-update state.
|
|
698. The backend should provide service-log state.
|
|
699. The backend should provide health-check state.
|
|
700. The backend should provide server-registration state.
|
|
|
|
## Dangerous Server Actions
|
|
|
|
701. Reboot actions should require confirmation.
|
|
702. Shutdown actions should require confirmation.
|
|
703. Package update actions should require confirmation.
|
|
704. Kernel update actions should require confirmation.
|
|
705. Firewall lockout-risk actions should require confirmation.
|
|
706. Service restart actions should require confirmation where impact exists.
|
|
707. Migration actions should require confirmation.
|
|
708. Destructive storage actions should require confirmation.
|
|
709. Hostname changes should require impact summaries.
|
|
710. Timezone changes should require impact summaries.
|
|
711. DNS resolver changes should require impact summaries.
|
|
712. Nameserver changes should require impact summaries.
|
|
713. Reboot actions should request a reason field.
|
|
714. Shutdown actions should request a reason field.
|
|
715. Migration actions should request a reason field.
|
|
716. Destructive storage actions should request a reason field.
|
|
717. Critical actions should support mock two-factor confirmation in frontend mode.
|
|
718. Critical actions should enforce real second-factor confirmation in production mode.
|
|
719. Critical actions should create audit-preview metadata.
|
|
720. Critical actions should create final audit entries.
|
|
|
|
## Users And Teams
|
|
|
|
721. The backend should provide hosting-user state.
|
|
722. The backend should provide team-member state.
|
|
723. The backend should provide role state.
|
|
724. The backend should provide permission state.
|
|
725. The backend should provide reseller-account state.
|
|
726. The backend should provide hosting-package state.
|
|
727. The backend should provide account-quota state.
|
|
728. The backend should provide feature-list state.
|
|
729. The backend should provide impersonation state.
|
|
730. The backend should provide invitation state.
|
|
731. The backend should provide suspended-account state.
|
|
732. The backend should provide account-termination state.
|
|
733. The backend should provide account-migration state.
|
|
734. The backend should provide ownership-transfer state.
|
|
735. The backend should provide access-log state.
|
|
736. The backend should provide session-management state.
|
|
737. The backend should validate user email addresses.
|
|
738. The backend should validate role assignments.
|
|
739. The backend should validate package assignments.
|
|
740. The backend should validate quota assignments.
|
|
|
|
## Roles
|
|
|
|
741. The backend should support super administrator role.
|
|
742. The backend should support server administrator role.
|
|
743. The backend should support reseller role.
|
|
744. The backend should support hosting account owner role.
|
|
745. The backend should support developer role.
|
|
746. The backend should support billing viewer role.
|
|
747. The backend should support support operator role.
|
|
748. The backend should support read-only auditor role.
|
|
749. The backend should support custom role.
|
|
750. The backend should provide detailed permission matrices.
|
|
751. The backend should provide module-level permissions.
|
|
752. The backend should provide action-level permissions.
|
|
753. The backend should provide resource-level permissions where needed.
|
|
754. The backend should provide permission templates.
|
|
755. The backend should provide permission diffs.
|
|
756. The backend should provide permission-impact previews.
|
|
757. The backend should audit role creation.
|
|
758. The backend should audit role updates.
|
|
759. The backend should audit role deletion.
|
|
760. The backend should audit impersonation events.
|
|
|
|
## Backups
|
|
|
|
761. The backend should provide backup dashboard state.
|
|
762. The backend should provide full-account backup state.
|
|
763. The backend should provide website backup state.
|
|
764. The backend should provide database backup state.
|
|
765. The backend should provide email backup state.
|
|
766. The backend should provide configuration backup state.
|
|
767. The backend should provide incremental backup state.
|
|
768. The backend should provide snapshot backup state.
|
|
769. The backend should provide scheduled backup state.
|
|
770. The backend should provide retention-policy state.
|
|
771. The backend should provide backup-destination state.
|
|
772. The backend should provide restore-wizard state.
|
|
773. The backend should provide backup-browser state.
|
|
774. The backend should provide backup-verification state.
|
|
775. The backend should provide encryption status.
|
|
776. The backend should provide storage usage.
|
|
777. The backend should provide failed-job history.
|
|
778. The backend should provide download authorization.
|
|
779. The backend should provide delete state.
|
|
780. The backend should provide clone-from-backup state.
|
|
|
|
## Backup Destinations
|
|
|
|
781. Local storage should be represented as a destination.
|
|
782. SFTP should be represented as a destination.
|
|
783. S3-compatible storage should be represented as a destination.
|
|
784. Backblaze B2 should be represented as a destination.
|
|
785. Google Cloud Storage should be represented as a destination.
|
|
786. Azure Blob Storage should be represented as a destination.
|
|
787. Custom object storage should be represented as a destination.
|
|
788. Destination credentials should not be revealed after creation.
|
|
789. Destination tests should return explicit connection status.
|
|
790. Destination tests should return explicit permission status.
|
|
791. Destination capacity should be visible where available.
|
|
792. Destination encryption should be visible.
|
|
793. Destination retention should be visible.
|
|
794. Destination failure state should be visible.
|
|
795. Destination last-success metadata should be visible.
|
|
796. Destination last-failure metadata should be visible.
|
|
797. Destination changes should be auditable.
|
|
798. Destination deletion should be guarded.
|
|
799. Destination reuse should be supported.
|
|
800. Destination policy should be account-scoped.
|
|
|
|
## Restore
|
|
|
|
801. Restore operations should be wizard-driven.
|
|
802. Restore operations should include scope selection.
|
|
803. Restore operations should include conflict policy.
|
|
804. Restore operations should include impact preview.
|
|
805. Restore operations should include reason capture.
|
|
806. Restore operations should include second-factor confirmation.
|
|
807. Restore operations should include audit-preview metadata.
|
|
808. Restore operations should include job progress.
|
|
809. Restore operations should include rollback availability where possible.
|
|
810. Restore operations should include post-restore validation.
|
|
811. Restore operations should report partial success.
|
|
812. Restore operations should report skipped resources.
|
|
813. Restore operations should report overwritten resources.
|
|
814. Restore operations should report created resources.
|
|
815. Restore operations should report failed resources.
|
|
816. Restore operations should report warnings.
|
|
817. Restore operations should be auditable.
|
|
818. Restore downloads should be permission-gated.
|
|
819. Restore destructive choices should be explicit.
|
|
820. Restore state should remain visible after page refresh.
|
|
|
|
## Automation
|
|
|
|
821. The backend should provide scheduled-task state.
|
|
822. The backend should provide deployment-pipeline state.
|
|
823. The backend should provide webhook state.
|
|
824. The backend should provide event-trigger state.
|
|
825. The backend should provide automation-template state.
|
|
826. The backend should provide retry-policy state.
|
|
827. The backend should provide execution-history state.
|
|
828. The backend should provide failed-execution state.
|
|
829. The backend should provide environment-based workflow state.
|
|
830. The backend should provide backup automation state.
|
|
831. The backend should provide certificate automation state.
|
|
832. The backend should provide update automation state.
|
|
833. The backend should provide monitoring automation state.
|
|
834. The backend should provide notification automation state.
|
|
835. The backend should validate triggers.
|
|
836. The backend should validate conditions.
|
|
837. The backend should validate actions.
|
|
838. The backend should validate branches.
|
|
839. The backend should validate execution previews.
|
|
840. The backend should validate test-mode constraints.
|
|
|
|
## Notifications
|
|
|
|
841. The backend should provide notification-center state.
|
|
842. The backend should provide read/unread state.
|
|
843. The backend should provide categories.
|
|
844. The backend should provide notification preferences.
|
|
845. The backend should provide email notification settings.
|
|
846. The backend should provide webhook notification settings.
|
|
847. The backend should provide browser notification settings.
|
|
848. The backend should provide critical alerts.
|
|
849. The backend should provide security alerts.
|
|
850. The backend should provide backup alerts.
|
|
851. The backend should provide resource alerts.
|
|
852. The backend should provide SSL alerts.
|
|
853. The backend should provide deployment alerts.
|
|
854. The backend should provide notification delivery status.
|
|
855. The backend should provide notification retry status.
|
|
856. The backend should provide notification suppression state.
|
|
857. The backend should provide quiet-hour state.
|
|
858. The backend should provide digest state.
|
|
859. The backend should audit preference changes.
|
|
860. The backend should preserve critical-alert history.
|
|
|
|
## Support
|
|
|
|
861. The backend should provide documentation metadata.
|
|
862. The backend should provide knowledge-base metadata.
|
|
863. The backend should provide system-diagnostics state.
|
|
864. The backend should provide support-ticket lists.
|
|
865. The backend should provide ticket details.
|
|
866. The backend should provide ticket replies.
|
|
867. The backend should provide file attachment metadata.
|
|
868. The backend should provide ticket status.
|
|
869. The backend should provide ticket priority.
|
|
870. The backend should provide diagnostic-report generation state.
|
|
871. The backend should validate ticket subjects.
|
|
872. The backend should validate ticket messages.
|
|
873. The backend should validate attachments.
|
|
874. The backend should validate ticket ownership.
|
|
875. The backend should audit ticket creation.
|
|
876. The backend should audit ticket replies.
|
|
877. The backend should audit ticket status changes.
|
|
878. The backend should audit diagnostic report generation.
|
|
879. The backend should protect sensitive diagnostic data.
|
|
880. The backend should expose shareable diagnostic summaries.
|
|
|
|
## Settings
|
|
|
|
881. The backend should provide general settings.
|
|
882. The backend should provide branding settings.
|
|
883. The backend should provide logo metadata.
|
|
884. The backend should provide theme settings.
|
|
885. The backend should provide accent-color settings.
|
|
886. The backend should provide locale settings.
|
|
887. The backend should provide date-format settings.
|
|
888. The backend should provide time-format settings.
|
|
889. The backend should provide timezone settings.
|
|
890. The backend should provide session-timeout settings.
|
|
891. The backend should provide security defaults.
|
|
892. The backend should provide password policy.
|
|
893. The backend should provide two-factor policy.
|
|
894. The backend should provide email settings.
|
|
895. The backend should provide notification settings.
|
|
896. The backend should provide backup defaults.
|
|
897. The backend should provide DNS defaults.
|
|
898. The backend should provide SSL defaults.
|
|
899. The backend should provide runtime defaults.
|
|
900. The backend should provide file-manager settings.
|
|
|
|
## More Settings
|
|
|
|
901. The backend should provide API settings.
|
|
902. The backend should provide feature flags.
|
|
903. The backend should provide experimental feature state.
|
|
904. The backend should provide privacy settings.
|
|
905. The backend should provide data-retention settings.
|
|
906. The backend should provide maintenance-mode settings.
|
|
907. Settings changes should be auditable.
|
|
908. Branding changes should be auditable.
|
|
909. Theme changes should be user-scoped or account-scoped as policy requires.
|
|
910. Locale changes should be user-scoped or account-scoped as policy requires.
|
|
911. Security-default changes should be guarded.
|
|
912. Password-policy changes should be guarded.
|
|
913. Two-factor-policy changes should be guarded.
|
|
914. API-setting changes should be guarded.
|
|
915. Feature-flag changes should be guarded.
|
|
916. Maintenance-mode changes should be guarded.
|
|
917. Settings should support live preview where the frontend already previews state.
|
|
918. Settings should distinguish draft values from saved values.
|
|
919. Settings should expose inherited values.
|
|
920. Settings should expose overridden values.
|
|
|
|
## Audit Logs
|
|
|
|
921. The backend should create audit entries for authentication events.
|
|
922. The backend should create audit entries for permission events.
|
|
923. The backend should create audit entries for website events.
|
|
924. The backend should create audit entries for domain events.
|
|
925. The backend should create audit entries for DNS events.
|
|
926. The backend should create audit entries for file events.
|
|
927. The backend should create audit entries for database events.
|
|
928. The backend should create audit entries for email events.
|
|
929. The backend should create audit entries for metric export events.
|
|
930. The backend should create audit entries for security events.
|
|
931. The backend should create audit entries for software events.
|
|
932. The backend should create audit entries for advanced-tool events.
|
|
933. The backend should create audit entries for server events.
|
|
934. The backend should create audit entries for user events.
|
|
935. The backend should create audit entries for reseller events.
|
|
936. The backend should create audit entries for backup events.
|
|
937. The backend should create audit entries for restore events.
|
|
938. The backend should create audit entries for automation events.
|
|
939. The backend should create audit entries for notification events.
|
|
940. The backend should create audit entries for settings events.
|
|
|
|
## Audit Metadata
|
|
|
|
941. Audit entries should include actor identity.
|
|
942. Audit entries should include actor role context.
|
|
943. Audit entries should include account context.
|
|
944. Audit entries should include server context.
|
|
945. Audit entries should include reseller context where applicable.
|
|
946. Audit entries should include target type.
|
|
947. Audit entries should include target identifier.
|
|
948. Audit entries should include target label.
|
|
949. Audit entries should include action.
|
|
950. Audit entries should include outcome.
|
|
951. Audit entries should include request identifier.
|
|
952. Audit entries should include IP address.
|
|
953. Audit entries should include user agent where available.
|
|
954. Audit entries should include timestamp.
|
|
955. Audit entries should include reason field where required.
|
|
956. Audit entries should include confirmation metadata where required.
|
|
957. Audit entries should include before-and-after metadata where safe.
|
|
958. Audit entries should avoid storing secrets.
|
|
959. Audit entries should be immutable.
|
|
960. Audit entries should be exportable by authorized users.
|
|
|
|
## Jobs
|
|
|
|
961. The backend should represent long-running operations as jobs.
|
|
962. Jobs should have stable identifiers.
|
|
963. Jobs should have type.
|
|
964. Jobs should have status.
|
|
965. Jobs should have progress.
|
|
966. Jobs should have started timestamp.
|
|
967. Jobs should have updated timestamp.
|
|
968. Jobs should have completed timestamp when complete.
|
|
969. Jobs should have actor metadata.
|
|
970. Jobs should have target metadata.
|
|
971. Jobs should have cancellability metadata.
|
|
972. Jobs should have retry metadata.
|
|
973. Jobs should have warnings.
|
|
974. Jobs should have errors.
|
|
975. Jobs should have result summaries.
|
|
976. Jobs should have audit references.
|
|
977. Jobs should support polling.
|
|
978. Jobs should support event updates where available.
|
|
979. Jobs should remain visible after navigation.
|
|
980. Jobs should expire according to retention policy.
|
|
|
|
## Real-Time Events
|
|
|
|
981. The backend should provide event streams for job progress.
|
|
982. The backend should provide event streams for notifications.
|
|
983. The backend should provide event streams for terminal sessions.
|
|
984. The backend should provide event streams for log viewers.
|
|
985. The backend should provide event streams for deployment logs.
|
|
986. The backend should provide event streams for backup progress.
|
|
987. The backend should provide event streams for restore progress.
|
|
988. The backend should provide event streams for automation executions.
|
|
989. Event messages should include type.
|
|
990. Event messages should include timestamp.
|
|
991. Event messages should include account context.
|
|
992. Event messages should include server context where relevant.
|
|
993. Event messages should include payload.
|
|
994. Event messages should include request or job references where relevant.
|
|
995. Event messages should preserve authorization boundaries.
|
|
996. Event messages should support reconnect behavior.
|
|
997. Event messages should support last-seen cursors where applicable.
|
|
998. Event messages should not expose data from other tenants.
|
|
999. Event messages should be versionable.
|
|
1000. Event messages should remain compatible with frontend state updates.
|
|
|
|
## Errors
|
|
|
|
1001. The backend should provide validation errors.
|
|
1002. The backend should provide permission errors.
|
|
1003. The backend should provide authentication errors.
|
|
1004. The backend should provide conflict errors.
|
|
1005. The backend should provide not-found errors.
|
|
1006. The backend should provide rate-limit errors.
|
|
1007. The backend should provide maintenance errors.
|
|
1008. The backend should provide dependency errors.
|
|
1009. The backend should provide partial-failure errors.
|
|
1010. The backend should provide network-facing timeout errors.
|
|
1011. Error codes should be stable.
|
|
1012. Error messages should be readable.
|
|
1013. Error fields should map to form fields.
|
|
1014. Error metadata should include request identifiers.
|
|
1015. Error metadata should include retryability where relevant.
|
|
1016. Error metadata should include support references where relevant.
|
|
1017. Error metadata should avoid leaking secrets.
|
|
1018. Error metadata should avoid leaking host internals.
|
|
1019. Error states should be testable by the frontend.
|
|
1020. Error states should be documented as product behavior.
|
|
|
|
## Data Model Expectations
|
|
|
|
1021. Resource identifiers should be stable.
|
|
1022. Resource labels should be human-readable.
|
|
1023. Resource status values should be enumerated.
|
|
1024. Resource timestamps should be normalized.
|
|
1025. Resource ownership should be explicit.
|
|
1026. Resource server placement should be explicit.
|
|
1027. Resource account placement should be explicit.
|
|
1028. Resource feature availability should be explicit.
|
|
1029. Resource permission availability should be explicit.
|
|
1030. Resource maintenance availability should be explicit.
|
|
1031. Resource soft-delete state should be explicit.
|
|
1032. Resource archival state should be explicit.
|
|
1033. Resource health state should be explicit.
|
|
1034. Resource warning state should be explicit.
|
|
1035. Resource dependency state should be explicit.
|
|
1036. Resource quota impact should be explicit.
|
|
1037. Resource audit metadata should be explicit.
|
|
1038. Resource version metadata should be explicit where edits can conflict.
|
|
1039. Resource display metadata should be frontend-friendly.
|
|
1040. Resource transport metadata should remain separate from business data.
|
|
|
|
## Frontend State
|
|
|
|
1041. The frontend should keep global UI state in Zustand only for UI concerns.
|
|
1042. The frontend should keep server data in TanStack Query.
|
|
1043. The frontend should keep form state in React Hook Form.
|
|
1044. The frontend should keep validation schemas aligned with backend validation concepts.
|
|
1045. The frontend should keep route definitions centralized.
|
|
1046. The frontend should keep permission definitions centralized.
|
|
1047. The frontend should keep table definitions close to feature views.
|
|
1048. The frontend should keep mock services replaceable.
|
|
1049. The frontend should keep loading skeletons for backend latency.
|
|
1050. The frontend should keep empty states for backend empty responses.
|
|
|
|
## Frontend Data Handling
|
|
|
|
1051. The frontend should cache list reads by module and filter state.
|
|
1052. The frontend should cache detail reads by stable resource identifier.
|
|
1053. The frontend should invalidate related reads after mutations.
|
|
1054. The frontend should preserve optimistic UI only where backend confirmation semantics allow it.
|
|
1055. The frontend should avoid optimistic UI for irreversible operations.
|
|
1056. The frontend should show job progress for asynchronous operations.
|
|
1057. The frontend should show stale data indicators from backend metadata.
|
|
1058. The frontend should show partial-failure messages from backend metadata.
|
|
1059. The frontend should show maintenance banners from backend metadata.
|
|
1060. The frontend should show permission-denied states from backend responses.
|
|
1061. The frontend should use request IDs in support-friendly errors.
|
|
1062. The frontend should use backend-provided display labels.
|
|
1063. The frontend should use backend-provided status values.
|
|
1064. The frontend should use backend-provided quota values.
|
|
1065. The frontend should use backend-provided unit metadata.
|
|
1066. The frontend should use backend-provided route availability.
|
|
1067. The frontend should not parse logs when backend can provide structured summaries.
|
|
1068. The frontend should not calculate security scores from raw findings.
|
|
1069. The frontend should not calculate billing-grade usage from approximate metrics.
|
|
1070. The frontend should not invent backend capability state.
|
|
|
|
## Internationalization
|
|
|
|
1071. Backend-provided labels should be localizable where they are product copy.
|
|
1072. Backend-provided enum display names should be localizable.
|
|
1073. Backend-provided validation messages should support localization.
|
|
1074. Backend-provided timestamps should be timezone-neutral.
|
|
1075. Backend-provided durations should be unit-neutral.
|
|
1076. Backend-provided numeric values should be raw numbers plus unit context.
|
|
1077. Backend-provided currency values should include currency codes where billing appears.
|
|
1078. Backend-provided country names should use stable codes plus display labels.
|
|
1079. Backend-provided language choices should use stable locale identifiers.
|
|
1080. Backend-provided date formatting should not be preformatted unless explicitly needed.
|
|
|
|
## Performance
|
|
|
|
1081. Backend dashboard reads should be fast.
|
|
1082. Backend navigation reads should be fast.
|
|
1083. Backend permission reads should be fast.
|
|
1084. Backend table reads should support pagination.
|
|
1085. Backend file-list reads should support virtualized frontend consumption.
|
|
1086. Backend log reads should support streaming or cursor windows.
|
|
1087. Backend metric reads should support aggregation.
|
|
1088. Backend search reads should support bounded result sets.
|
|
1089. Backend expensive reads should expose freshness metadata.
|
|
1090. Backend expensive reads should support cached summaries.
|
|
1091. Backend write operations should not block on nonessential refresh work.
|
|
1092. Backend long-running writes should return jobs.
|
|
1093. Backend heavy exports should return jobs.
|
|
1094. Backend imports should return parsed previews or jobs.
|
|
1095. Backend file operations should return progress for large work.
|
|
1096. Backend backup operations should return progress.
|
|
1097. Backend restore operations should return progress.
|
|
1098. Backend metrics should avoid over-fetching by default.
|
|
1099. Backend tables should avoid returning unused giant payloads.
|
|
1100. Backend responses should remain predictable under load.
|
|
|
|
## Observability
|
|
|
|
1101. The backend should emit structured logs.
|
|
1102. The backend should emit request metrics.
|
|
1103. The backend should emit job metrics.
|
|
1104. The backend should emit module health metrics.
|
|
1105. The backend should emit dependency health metrics.
|
|
1106. The backend should emit authentication metrics.
|
|
1107. The backend should emit authorization-denial metrics.
|
|
1108. The backend should emit validation-failure metrics.
|
|
1109. The backend should emit audit-write metrics.
|
|
1110. The backend should emit notification-delivery metrics.
|
|
1111. The backend should emit backup-success metrics.
|
|
1112. The backend should emit backup-failure metrics.
|
|
1113. The backend should emit restore-success metrics.
|
|
1114. The backend should emit restore-failure metrics.
|
|
1115. The backend should emit certificate-renewal metrics.
|
|
1116. The backend should emit security-scan metrics.
|
|
1117. The backend should emit database-operation metrics.
|
|
1118. The backend should emit file-operation metrics.
|
|
1119. The backend should emit email-delivery metrics.
|
|
1120. The backend should correlate logs with request IDs.
|
|
|
|
## Compliance And Privacy
|
|
|
|
1121. The backend should minimize sensitive data sent to the frontend.
|
|
1122. The backend should minimize secrets stored in audit logs.
|
|
1123. The backend should minimize personal data in exports.
|
|
1124. The backend should support data retention policies.
|
|
1125. The backend should support privacy settings.
|
|
1126. The backend should support account data export where product policy requires it.
|
|
1127. The backend should support account data deletion where product policy requires it.
|
|
1128. The backend should distinguish operational logs from audit logs.
|
|
1129. The backend should distinguish customer data from platform data.
|
|
1130. The backend should support consent-sensitive notification channels where required.
|
|
1131. The backend should keep diagnostic reports scoped.
|
|
1132. The backend should redact credentials from diagnostic reports.
|
|
1133. The backend should redact tokens from diagnostic reports.
|
|
1134. The backend should redact private keys from diagnostic reports.
|
|
1135. The backend should redact connection strings from diagnostic reports.
|
|
1136. The backend should redact environment secrets from diagnostic reports.
|
|
1137. The backend should provide safe support summaries.
|
|
1138. The backend should provide retention metadata to the settings UI.
|
|
1139. The backend should make privacy-impacting changes auditable.
|
|
1140. The backend should keep compliance behavior explicit.
|
|
|
|
## Migration From Mock Services
|
|
|
|
1141. Mock services should remain useful for local frontend development.
|
|
1142. HTTP services should preserve the same conceptual methods.
|
|
1143. DTO names should remain aligned with existing contracts.
|
|
1144. Response envelopes should remain aligned with existing contracts.
|
|
1145. Error envelopes should remain aligned with existing contracts.
|
|
1146. Pagination contracts should remain aligned with existing contracts.
|
|
1147. Filtering contracts should remain aligned with existing contracts.
|
|
1148. Sorting contracts should remain aligned with existing contracts.
|
|
1149. Search contracts should remain aligned with existing contracts.
|
|
1150. Bulk-operation contracts should remain aligned with existing contracts.
|
|
1151. Job-progress contracts should remain aligned with existing contracts.
|
|
1152. Audit-metadata contracts should remain aligned with existing contracts.
|
|
1153. Permission-check contracts should remain aligned with existing contracts.
|
|
1154. WebSocket-event contracts should remain aligned with existing contracts.
|
|
1155. Mock latency should remain configurable.
|
|
1156. Mock errors should remain configurable.
|
|
1157. Mock maintenance states should remain configurable.
|
|
1158. Mock permission states should remain configurable.
|
|
1159. Mock empty states should remain configurable.
|
|
1160. Mock data should remain realistic enough for UI regression tests.
|
|
|
|
## Release Readiness
|
|
|
|
1161. The backend should be considered ready only when auth flows are wired.
|
|
1162. The backend should be considered ready only when permission checks are authoritative.
|
|
1163. The backend should be considered ready only when dashboard reads are real.
|
|
1164. The backend should be considered ready only when primary module lists are real.
|
|
1165. The backend should be considered ready only when destructive actions are guarded.
|
|
1166. The backend should be considered ready only when audit logging is durable.
|
|
1167. The backend should be considered ready only when job progress is reliable.
|
|
1168. The backend should be considered ready only when frontend errors are explainable.
|
|
1169. The backend should be considered ready only when observability is in place.
|
|
1170. The backend should be considered ready only when backup and restore semantics are clear.
|
|
1171. The backend should be considered ready only when security module boundaries are enforced.
|
|
1172. The backend should be considered ready only when tenant boundaries are enforced.
|
|
1173. The backend should be considered ready only when performance targets are met.
|
|
1174. The backend should be considered ready only when e2e frontend flows pass against it.
|
|
1175. The backend should be considered ready only when support diagnostics are safe.
|
|
1176. The backend should be considered ready only when settings persistence is reliable.
|
|
1177. The backend should be considered ready only when notification delivery is observable.
|
|
1178. The backend should be considered ready only when restore operations are auditable.
|
|
1179. The backend should be considered ready only when migration from mock mode is reversible.
|
|
1180. The backend should be considered ready only when product behavior is documented.
|
|
|
|
## Non-Goals For The Frontend Contract
|
|
|
|
1181. The frontend should not become a host command runner.
|
|
1182. The frontend should not own backend authorization decisions.
|
|
1183. The frontend should not own backend quota enforcement.
|
|
1184. The frontend should not own backend security scoring.
|
|
1185. The frontend should not own backend backup integrity checks.
|
|
1186. The frontend should not own backend restore correctness.
|
|
1187. The frontend should not own DNS conflict detection.
|
|
1188. The frontend should not own certificate validation.
|
|
1189. The frontend should not own database privilege truth.
|
|
1190. The frontend should not own email-routing truth.
|
|
1191. The frontend should not own package availability truth.
|
|
1192. The frontend should not own server health truth.
|
|
1193. The frontend should not own audit durability.
|
|
1194. The frontend should not own tenant isolation.
|
|
1195. The frontend should not own secret storage.
|
|
1196. The frontend should not own long-running job execution.
|
|
1197. The frontend should not own terminal execution policy.
|
|
1198. The frontend should not own infrastructure rollback policy.
|
|
1199. The frontend should not own compliance retention.
|
|
1200. The frontend should not own platform incident state.
|
|
|
|
## Final Product Expectations
|
|
|
|
1201. CoaxysPanel should feel like one integrated hosting control center.
|
|
1202. The backend should make every visible tool meaningful.
|
|
1203. The backend should make every primary action traceable.
|
|
1204. The backend should make every dangerous action deliberate.
|
|
1205. The backend should make every permission boundary enforceable.
|
|
1206. The backend should make every long-running operation observable.
|
|
1207. The backend should make every validation failure actionable.
|
|
1208. The backend should make every support escalation easier to diagnose.
|
|
1209. The backend should make the frontend replace mock data without redesign.
|
|
1210. The backend should make future modules fit the same service pattern.
|
|
1211. The backend should make account, server, and reseller context explicit everywhere.
|
|
1212. The backend should make failures honest rather than decorative.
|
|
1213. The backend should make infrastructure state understandable to administrators.
|
|
1214. The backend should make security state understandable without exposing offensive capability.
|
|
1215. The backend should make backup and restore trust visible.
|
|
1216. The backend should make automation predictable.
|
|
1217. The backend should make notifications useful instead of noisy.
|
|
1218. The backend should make audit logs complete enough for accountability.
|
|
1219. The backend should make settings changes safe to preview and safe to save.
|
|
1220. The backend and frontend together should preserve the premium CoaxysPanel experience.
|