# Time Safari Architecture — Implementation Details > **Agent role**: Reference this file for detailed implementation details when working with TimeSafari architecture implementation. ## Error Handling - Global Vue error handler → logs with component name. - Platform-specific wrappers log API errors with platform prefix (`[Capacitor API Error]`, etc). - Use structured logging (not `console.log`). ## Best Practices - Keep platform code **isolated** in `platforms/`. - Always define a **shared interface** first. - Use feature detection, not platform detection, when possible. - Dependency injection for services → improves testability. - Maintain **Competence Hooks** in PRs (2–3 prompts for dev discussion). ## Dependency Management - Key deps: `@capacitor/core`, `electron`, `vue`. - Use conditional `import()` for platform-specific libs. ## Security Considerations - **Permissions**: Always check + request gracefully. - **Storage**: Secure storage for sensitive data; encrypt when possible. - **Audits**: Schedule quarterly security reviews. ## ADR Process - All major architecture choices → log in `doc/adr/`. - Use ADR template with Context, Decision, Consequences, Status. - Link related ADRs in PR descriptions. > 🔗 **Human Hook:** When proposing a new ADR, schedule a 30-min > design sync for discussion, not just async review. ## Collaboration Hooks - **QR features**: Sync with Security before merging → permissions & privacy. - **New platform builds**: Demo in team meeting → confirm UX differences. - **Critical ADRs**: Present in guild or architecture review. ## Testing Implementation - **Unit tests** for services. - **Playwright** for Web + Capacitor: - `playwright.config-local.ts` includes web + Pixel 5. - **Electron tests**: add `spectron` or Playwright-Electron. - Mark tests with platform tags: ```ts test.skip(!process.env.MOBILE_TEST, "Mobile-only test"); ``` > 🔗 **Human Hook:** Before merging new tests, hold a short sync (≤15 > min) with QA to align on coverage and flaky test risks. ## Self-Check - [ ] Does this feature implement a shared interface? - [ ] Are fallbacks + errors handled gracefully? - [ ] Have relevant ADRs been updated/linked? - [ ] Did I add competence hooks or prompts for the team? - [ ] Was human interaction (sync/review/demo) scheduled? --- **See also**: - `.cursor/rules/app/architectural_decision_record.mdc` for core architecture principles - `.cursor/rules/app/architectural_patterns.mdc` for architectural patterns and examples **Status**: Active implementation guidelines **Priority**: High **Estimated Effort**: Ongoing reference **Dependencies**: architectural_decision_record.mdc **Stakeholders**: Development team, Architecture team ## Model Implementation Checklist ### Before Architectural Implementation - [ ] **Interface Review**: Verify feature implements shared interface - [ ] **ADR Review**: Check if ADR is required for major changes - [ ] **Security Assessment**: Assess security implications for QR features - [ ] **Platform Planning**: Plan platform-specific implementation details ### During Architectural Implementation - [ ] **Interface Implementation**: Implement shared interfaces consistently - [ ] **Error Handling**: Implement graceful fallbacks and error handling - [ ] **Testing Strategy**: Plan unit tests for services and E2E tests - [ ] **Human Interaction**: Schedule syncs/reviews/demos as needed ### After Architectural Implementation - [ ] **Interface Validation**: Verify shared interfaces are properly implemented - [ ] **Testing Execution**: Run unit tests and platform-specific tests - [ ] **ADR Updates**: Update relevant ADRs and link in PR descriptions - [ ] **Team Communication**: Share implementation results with team