You are assisting in building an Android-only Expo app (SDK 53) that stores user notes and pushes local notifications once a year (defaulting to mid-month). After each notification is pushed, the app automatically schedules the next year’s notification. Notifications must survive device reboots without requiring the user to reopen the app.
The app will be tested using Expo Go (for JS-supported parts) and eventually built with EAS (using a dev client) to integrate native code (Kotlin boot receiver).
Instructions for you:
1️⃣ Organize the project into the following layers:
Data Layer: AsyncStorage for persisting notes + notification metadata; define TypeScript models/types.
Notification Layer: Use expo-notifications to schedule, reschedule, and cancel local notifications; design JS-side logic to handle yearly rescheduling.
UI Layer: Build a minimal screen showing notes; include modal pop-ups for adding/editing notes, using expo-blur and @gorhom/bottom-sheet (blurred background, not a full page switch).
Background Layer: Integrate expo-task-manager + expo-background-fetch only for background tasks while the app is running; for reboot persistence, prepare a Kotlin native boot receiver module that listens for BOOT_COMPLETED and triggers JS-side rescheduling.
Build/Testing Layer: Set up configs for EAS dev client and final APK builds; ensure compatibility with Expo SDK 53.
2️⃣ Generate a clean, up-to-date package.json using:
expo
expo-notifications
expo-blur
expo-task-manager
expo-background-fetch
@gorhom/bottom-sheet
@react-native-async-storage/async-storage
react-native-reanimated
react-native-gesture-handler
✅ Explicit rules:
Avoid react-native-push-notification or any non-Expo notification libraries to minimize conflicts.
Kotlin native code is assumed but will be written separately — the JS-side should only prepare to accept native triggers.
No need to implement UX design details now — placeholders are enough; visual design will be provided later.
Keep the project Android-only.
⚠ Ensure clean code structure, modularity, and future-proofing for expansion.
I'll create a modular, Android-only Expo app that handles yearly notifications with reboot persistence. Let's build this step by step.
I've created a comprehensive Android-only Expo app (SDK 53) that handles yearly notifications with reboot persistence. Here's a breakdown of the implementation: