Title
refactor: unify backend error responses and handling
Body
Current routes handle errors ad-hoc and return inconsistent response shapes. Introduce centralized error helpers.
Acceptance Criteria
- Common error format across all routes.
- Known errors map to correct status codes.
- Unknown errors return safe
500 response.