Wallspire is an in-progress React Native wallpaper and motivation app. It combines daily wallpaper automation, motivational quote delivery, notification scheduling, and premium AI-oriented feature flows inside a polished tab-based UI.
The codebase currently focuses on the product shell:
- A four-tab navigation model for General, AI, Notifications, and Settings.
- Local persistence for settings, usage stats, and quote rotation via AsyncStorage.
- A background task manager scaffold for scheduled wallpaper refreshes and motivational notifications.
- A dark, gradient-driven design system shared across screens and components.
- Daily wallpaper toggle and motivational quote of the day.
- Quote refresh and progress tracking.
- Notification frequency controls and notification type toggles.
- AI wallpaper, smart quotes, and adaptive scheduling premium flows.
- Settings, account, privacy, export, and reset surfaces.
- Reusable gradient UI primitives and shared theme tokens.
| Screen | Purpose |
|---|---|
| General | Core wallpaper controls, quote banner, stats, and quick actions. |
| AI | Premium AI wallpaper, smart quote, and adaptive scheduling prompts. |
| Notifications | Enablement, interval slider, notification categories, and test preview. |
| Settings | Account, privacy, storage, data, support, and upgrade entry points. |
src/navigationcontains the bottom-tab navigator.src/screenscontains the main user-facing screens.src/servicescontains local settings, quote, stats, API, and background task logic.src/componentscontains reusable UI elements such as gradient buttons and settings views.src/themecentralizes colors, typography, spacing, radius, and gradients.androidandioshold the native platform projects and permission configuration.
AppServices.tsuses AsyncStorage for settings, quote-of-the-day caching, and app stats.ApiServices.tsdefines wallpaper, quote, wallpaper composition, and notification service boundaries.BackgroundTaskManager.tscoordinates wallpaper refreshes, notification intervals, and app state handling.
- React Native 0.80
- React 18
- TypeScript
- React Navigation
- AsyncStorage
- react-native-gesture-handler
- react-native-linear-gradient
- react-native-background-timer
- @react-native-community/slider
- react-native-switch
- react-native-permissions
- react-native-image-picker
- react-native-safe-area-context
- react-native-screens
- react-native-vector-icons
- lottie-react-native
- Node.js 18 or newer.
- Android Studio and a JDK for Android development.
- Xcode and CocoaPods for iOS development on macOS.
npm install
cd ios && pod install && cd ..npm start
npm run android
npm run iosnpm run lint
npm test| Script | Description |
|---|---|
npm run android |
Build and launch the Android app. |
npm run ios |
Build and launch the iOS app. |
npm start |
Start the Metro bundler. |
npm run lint |
Run ESLint across the repository. |
npm test |
Run the Jest test suite. |
npm run clean |
Clean Android build artifacts and reset the Metro cache. |
npm run clean:ios |
Remove the iOS build output and reset the Metro cache. |
- Android permissions include INTERNET, SET_WALLPAPER, READ_EXTERNAL_STORAGE, WRITE_EXTERNAL_STORAGE, RECEIVE_BOOT_COMPLETED, WAKE_LOCK, and VIBRATE.
- iOS App Transport Security is locked down, with local networking allowed but arbitrary loads disabled.
- Background timers can still be limited by battery optimization and Doze behavior on modern Android devices.
- The wallpaper, quote, and AI endpoints in
src/services/ApiServices.tsare template implementations and require real keys or a backend before production use.
- The navigator lives under
src/navigation; wire it throughApp.tsxif you are extending the shell. - The installed app name is still set to Wallpaper in the native project files and app metadata; rename it if you want the on-device label to match Wallspire.
- Update the placeholder API keys and example endpoints in
src/services/ApiServices.tsbefore connecting the app to production services. - Review premium gating and monetization behavior before shipping any AI features.
MIT License. See LICENSE for details.