# Daily Notification Plugin A Native-First Capacitor plugin for reliable daily notifications across Android, iOS, and Web platforms. ## Key Features - **Native-First Architecture**: Optimized for mobile platforms with offline-first design - **Shared SQLite Storage**: Single database file with WAL mode for concurrent access - **TTL-at-Fire Enforcement**: Skip stale notifications before delivery - **Rolling Window Safety**: Always keep today's notifications armed - **Cross-Platform**: Unified API across Android, iOS, and Web - **Production Ready**: Comprehensive error handling, performance optimization, and monitoring ## Quick Start ```typescript import { DailyNotification } from '@timesafari/daily-notification-plugin'; // Configure and schedule await DailyNotification.configure({ storage: 'shared', ttlSeconds: 1800, prefetchLeadMinutes: 15 }); await DailyNotification.scheduleDailyNotification({ url: 'https://api.example.com/daily-content', time: '09:00', title: 'Daily Update', body: 'Your daily notification is ready' }); ``` ## Installation ```bash npm install @timesafari/daily-notification-plugin ``` ## Documentation - **[Complete Usage Guide](USAGE.md)** - Comprehensive guide with examples and best practices - **[API Reference](API.md)** - Complete method and type definitions - **[Implementation Roadmap](doc/implementation-roadmap.md)** - Technical implementation details - **[Notification System Spec](doc/notification-system.md)** - Architecture and design principles - **[Glossary](doc/GLOSSARY.md)** - Key terminology and concepts ## Examples - **Basic Usage**: `examples/usage.ts` - **Phase-by-Phase Implementation**: - Phase 1: `examples/phase1-*.ts` (Core Infrastructure) - Phase 2: `examples/phase2-*.ts` (Platform Completion) - Phase 3: `examples/phase3-*.ts` (Network Optimization) - **Advanced Scenarios**: `examples/advanced-usage.ts` - **Enterprise Features**: `examples/enterprise-usage.ts` ## Configuration ### Android Add the following permissions to your `AndroidManifest.xml`: ```xml ``` ## Development ### Prerequisites - Node.js 14 or later - Android Studio - Android SDK - Gradle ### Building ```bash # Install dependencies npm install # Build the plugin npm run build # Run tests npm test ``` ### Project Structure ``` daily-notification-plugin/ ├── android/ # Android implementation │ ├── app/ # Main application module │ └── build.gradle # Root build configuration ├── src/ # TypeScript source ├── tests/ # Test files ├── package.json # Package configuration └── README.md # This file ``` ## Contributing 1. Fork the repository 2. Create your feature branch (`git checkout -b feature/amazing-feature`) 3. Commit your changes (`git commit -m 'Add some amazing feature'`) 4. Push to the branch (`git push origin feature/amazing-feature`) 5. Open a Pull Request ## License This project is licensed under the MIT License - see the LICENSE file for details. ## Author Matthew Raymer ## Security This plugin follows security best practices: - Uses AndroidX for modern security features - Implements proper permission handling - Follows Android security guidelines - Uses secure storage for sensitive data - Implements proper error handling - Logs security-relevant events - Uses secure communication channels - Implements proper access control - Follows Android's security model - Uses secure defaults ## Changelog ### 1.0.0 - Initial release - Basic notification scheduling - System state handling - Battery optimization support - Background task management - Rich logging system