Skip to content

Latest commit

 

History

3 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 

Repository files navigation

Ninja-Catclock-

Animated Ninja Cat clock & adorable daily alarms notifications

Ninja Cat Clock

A Flutter 3.38.1+ cross-platform clock/alarm/weather app for Android, iOS and Windows.

Features

  • Animated ninja cat rendered entirely with Flutter CustomPainter (no image assets required).
  • Live clock with selectable IANA time zone and 12/24-hour formats.
  • Daily alarms scheduled with OS notifications so the app UI does not need to remain open.
  • Current weather + 7-day forecast from Open-Meteo (no API key required).
  • Location-based forecast.
  • Material 3 light/dark UI and three visual themes.
  • Persistent preferences and alarm list.

Build prerequisites

  • Flutter 3.38.1 or newer (the current flutter_local_notifications package requires at least Flutter 3.38.1).
  • Android Studio + Android SDK for Android.
  • Xcode on macOS for iOS signing/building (Apple requirement).
  • Visual Studio 2022 with Desktop development with C++ for Windows.

Bootstrap the native platform folders

This source archive keeps generated Flutter platform boilerplate out of version control. The bootstrap scripts generate Android/iOS/Windows folders, patch the required permissions/notification receivers, fetch dependencies, run analysis, and run tests:

Windows PowerShell

./scripts/bootstrap.ps1

macOS/Linux

./scripts/bootstrap.sh

Required platform permissions

Android

The bootstrap script adds these Android permissions automatically:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.SCHEDULE_EXACT_ALARM" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

The bootstrap script also adds the notification receivers and Java 17 core-library desugaring. Android OEM background restrictions can still affect scheduled notifications on some devices.

iOS

The bootstrap script adds this iOS usage description automatically:

<key>NSLocationWhenInUseUsageDescription</key>
<string>Ninja Cat Clock uses your location to show local weather.</string>

Enable notification capability through Xcode when signing the Runner target.

Windows

Package as MSIX for best notification identity/cancellation behavior. Windows does not support repeating periodic notifications, but time-zone scheduled notifications are supported by the plugin API. Use a package identity for production distribution.

Run

flutter pub get
flutter analyze
flutter test
flutter run -d windows   # Windows
flutter run -d android   # Android
flutter run -d ios       # iOS, on macOS

Background behavior

The app does not attempt to stay alive forever in the background. Alarms are scheduled with the operating system, which is the reliable and battery-safe model on Android/iOS. Weather refreshes on app launch/resume and manually. iOS does not permit arbitrary continuously running background Dart code for a clock/weather app.

Weather data

Uses Open-Meteo Forecast API: https://open-meteo.com/en/docs

Release checklist

  1. Replace bundle/application IDs if desired.
  2. Add store icons/screenshots.
  3. Android: create signing key and release AAB.
  4. iOS: configure Apple Developer signing and archive in Xcode.
  5. Windows: configure an MSIX identity and certificate, then build package.
  6. Test alarms on physical devices, including locked-screen/background state.
  7. Review store privacy disclosures for location usage.

About

Animated Ninja Cat clock & adorable daily alarms notifications

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors