feat: Update test-apps for TimeSafari integration with Endorser.ch API patterns

- Add comprehensive configuration system with timesafari-config.json
- Create shared config-loader.ts with TypeScript interfaces and mock services
- Update Android test app to use TimeSafari community notification patterns
- Update iOS test app with rolling window and community features
- Update Electron test app with desktop-specific TimeSafari integration
- Enhance test API server to simulate Endorser.ch API endpoints
- Add pagination support with afterId/beforeId parameters
- Implement parallel API requests pattern for offers, projects, people, items
- Add community analytics and notification bundle endpoints
- Update all test app UIs for TimeSafari-specific functionality
- Update README with comprehensive TimeSafari testing guide

All test apps now demonstrate:
- Real Endorser.ch API integration patterns
- TimeSafari community-building features
- Platform-specific optimizations (Android/iOS/Electron)
- Comprehensive error handling and performance monitoring
- Configuration-driven testing with type safety
This commit is contained in:
Matthew Raymer
2025-09-24 07:38:53 +00:00
parent 999b824a36
commit fe82fd2147
11 changed files with 3432 additions and 389 deletions

View File

@@ -89,15 +89,16 @@
</head>
<body>
<div class="container">
<h1>📱 Daily Notification Plugin - Android Test</h1>
<h1>📱 TimeSafari Daily Notification - Android Test</h1>
<div class="status" id="status">Ready</div>
<div class="button-grid">
<button id="configure">Configure Plugin</button>
<button id="schedule">Schedule Notification</button>
<button id="alarm-status">Check Alarm Status</button>
<button id="request-permission">Request Permission</button>
<button id="configure">Configure TimeSafari</button>
<button id="schedule">Schedule Community Notifications</button>
<button id="endorser-api">Test Endorser.ch API</button>
<button id="callbacks">Register Callbacks</button>
<button id="status">Check Status</button>
<button id="performance">Performance Metrics</button>
</div>