stayclose

StayClose ๐Ÿ’

StayClose is a Flutter app designed to help you maintain meaningful relationships by providing daily reminders to reach out to important people in your life. Never forget to stay in touch with friends and family again!

๐ŸŽฏ Why StayClose?

โœจ Features

๐Ÿ“ฑ Core Functionality

๐Ÿ”” Notifications & Settings

๐ŸŽจ Modern UI/UX

๐Ÿ“ž Kindred Actions

๐Ÿ›  Technical Details

Built With

Architecture

lib/
โ”œโ”€โ”€ models/
โ”‚   โ””โ”€โ”€ contact.dart              # Contact, ImportantDate, Circle, and Circles data models
โ”œโ”€โ”€ screens/
โ”‚   โ”œโ”€โ”€ home_screen.dart          # Contact of the Day home screen with import
โ”‚   โ”œโ”€โ”€ contact_list_screen.dart  # All contacts list with multi-select and bulk operations
โ”‚   โ”œโ”€โ”€ add_edit_contact_screen.dart # Contact form with profile pictures
โ”‚   โ”œโ”€โ”€ circle_management_screen.dart # Custom circle creation and reordering
โ”‚   โ”œโ”€โ”€ settings_screen.dart      # Reorganized settings with interactive help
โ”‚   โ”œโ”€โ”€ welcome_screen.dart       # 5-page onboarding experience
โ”‚   โ””โ”€โ”€ image_crop_screen.dart    # Custom accessible image cropping UI
โ”œโ”€โ”€ services/
โ”‚   โ”œโ”€โ”€ contact_storage.dart      # Local storage management
โ”‚   โ”œโ”€โ”€ daily_contact_service.dart # Smart contact selection logic
โ”‚   โ”œโ”€โ”€ circle_service.dart       # Circle CRUD operations and reordering
โ”‚   โ”œโ”€โ”€ notification_service.dart # Custom notification scheduling
โ”‚   โ””โ”€โ”€ image_service.dart        # Photo upload, cropping, and storage
โ””โ”€โ”€ main.dart                     # App entry point and Material 3 theming

๐Ÿš€ Getting Started

Prerequisites

Installation

  1. Clone the repository
    git clone https://github.com/brett-buskirk/stayclose.git
    cd stayclose
    
  2. Install dependencies
    flutter pub get
    
  3. Run the app
    flutter run
    

Building for Release

Android APK:

flutter build apk --release

Android App Bundle (recommended for Play Store):

flutter build appbundle --release

iOS (requires macOS and Xcode):

flutter build ios --release

Note: Release builds use ProGuard for code optimization. Custom ProGuard rules are configured in android/app/proguard-rules.pro to ensure flutter_local_notifications works correctly in production.

๐Ÿ“ฑ Usage

  1. First Time Experience
    • Beautiful 5-page welcome screen explains StayCloseโ€™s purpose and features
    • Learn about daily kindred reminders and relationship management
    • Onboarding automatically appears for new users with no contacts
  2. Add Your First Kindred
    • Quick Import: Use โ€œImport from Deviceโ€ button directly on home screen empty state
    • Bulk Import: Access import from floating action button on contact list screen
    • Device Integration: Search and select multiple contacts with bulk operations
    • Manual Entry: Add kindred individually using โ€œAdd Kindredโ€ button
    • Fill in name, phone, and email information
    • Add profile pictures from camera or gallery
    • Add important dates like birthdays or anniversaries (MM/DD/YYYY format)
  3. Kindred of the Day
    • Your home screen shows the daily selected kindred with their photo
    • Tap the large kindred avatar to view/edit their details
    • Use action buttons to call, text, or email directly via external apps
    • Copy contact information to clipboard with quick buttons
    • Refresh selection using the three-dot menu
  4. Manage Kindred
    • Access โ€œAll Kindredโ€ from the home screen menu or people icon
    • Circle Filtering: Use filter chips to view kindred by circle (supports custom circles)
    • Smart Search: Use search bar to quickly find specific kindred by name, phone, or email
    • Multi-Select Mode: Use checklist icon to select multiple contacts for bulk operations
    • Bulk Circle Assignment: Select contacts and use floating action button to reassign circles
    • Circle Organization: See custom circle badges with emojis and colors on each kindred card
    • Alphabetical List: All kindred automatically sorted alphabetically for easy browsing
    • Dual Action Buttons: Import more contacts or add individual kindred via floating buttons
    • Tap any kindred to edit their information, photo, and circle assignment
    • Use the popup menu to edit or delete kindred
    • View upcoming important dates highlighted on kindred cards
  5. Manage Custom Circles
    • Access Settings โ†’ Circles โ†’ Manage Circles
    • Create Custom Circles: Add unlimited personalized circles with unique names
    • Customize Appearance: Choose emojis and colors for easy identification
    • Drag & Drop Reordering: Long-press drag handles to reorganize circle order
    • Edit Circles: Modify names, emojis, and colors (custom circles only)
    • Safe Deletion: Delete custom circles with automatic contact reassignment
    • Default Circles: Family, Friends, Work, Other (colors customizable, cannot delete)
    • Circle Colors: Separate access via Settings โ†’ Circles โ†’ Circle Colors
  6. Customize Notifications
    • Access Settings from the menu on any screen
    • Daily Nudges: Set your preferred time for daily kindred reminders (with info button)
    • Important Dates: Set separate time for birthday/anniversary notifications
    • Rich Content: Notifications include specific names and contact information
    • Test your notification settings with the โ€œTest Scheduled Nudgeโ€ option
    • Allow notification permissions when prompted
    • Android 13+: Enable โ€œAlarms & remindersโ€ permission in device settings for scheduled notifications
  7. Access App Information
    • Tap the info icon (โ„น๏ธ) in the app bar to review StayClose features
    • Beautiful 5-page guide explains purpose, features, and privacy approach
    • Available anytime for reference or helping others understand the app
  8. Profile Pictures
    • Add photos to kindred using the camera icon
    • Choose between camera or gallery
    • Use the custom crop interface with accessible button placement
    • Photos are automatically saved and managed locally

๐Ÿ“ฒ Availability

StayClose is available on Google Play Store with comprehensive privacy policy compliance. The app requests minimal permissions:

Privacy Policy: https://brett-buskirk.github.io/stayclose/privacy-policy.html

All data remains on your device - no cloud storage, tracking, or third-party sharing.

๐Ÿ”ง Configuration

User Settings

Most configuration is now handled through the in-app Settings screen:

Advanced Configuration

Timezone Settings

The app uses your local timezone by default. For development, you can modify the timezone in lib/services/notification_service.dart:

tz.setLocalLocation(tz.getLocation('America/New_York')); // Change to your timezone

Image Storage

Profile pictures are automatically managed and stored locally in the appโ€™s documents directory with unique identifiers.

๐Ÿค Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add 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.

๐Ÿ›  Troubleshooting

Notifications Not Working (Android 13+)

If daily nudges arenโ€™t appearing:

  1. Check App Settings:
    • Go to device Settings > Apps > StayClose > Notifications
    • Ensure โ€œDaily Kindred Reminderโ€ channel is enabled
    • Verify notification importance is set to โ€œHighโ€ or โ€œUrgentโ€
  2. Enable Alarms & Reminders:
    • Go to device Settings > Apps > Special app access > Alarms & reminders
    • Find StayClose and enable permission
    • This is required for scheduled notifications on Android 13+
  3. Battery Optimization:
    • Go to device Settings > Apps > StayClose > Battery
    • Select โ€œUnrestrictedโ€ or disable battery optimization
    • This prevents the system from stopping scheduled notifications
  4. Test Notifications:
    • Use โ€œTest Scheduled Nudgeโ€ in Settings to verify scheduling works
    • Test notification should arrive in exactly 1 minute

Build Issues

If you encounter notification issues in release builds:

๐Ÿ™ Acknowledgments


Made with โค๏ธ to help you stay close to the people who matter most.

Current Version: v0.3.0+16 - Custom Circle Management with bulk operations and enhanced UI