Status: Migrating from Flutter to React Native for better Google Drive integration and cross-platform support.
A beautiful, cross-platform slideshow application built with Flutter that displays photos with Google Drive integration.
This app is designed to run on all major platforms:
- iOS - iPhone (portrait/landscape)
- iPad - Tablet interface with optimized layout
- Android Phone - Mobile interface
- Android Tablet - Tablet interface with optimized layout
- Google TV - TV interface with remote navigation support
- 📱 Cross-platform slideshow with automatic transitions
- 🎮 Touch and remote control navigation (for TV)
- ☁️ Google Drive integration for photo storage
- 🎨 Beautiful dark theme with purple accents
- ⏯️ Play/pause controls with manual navigation
- 📊 Photo indicators and counter display
- 🔄 Responsive design for all screen sizes
- Flutter SDK (3.35.1 or higher)
- Dart SDK
- For iOS/macOS: Xcode
- For Android: Android Studio with Android SDK
- For TV: Android TV emulator or device
-
Clone and navigate to project:
cd sharing_moments -
Set up Google OAuth credentials:
# Copy the template file cp cred.txt.template cred.txt # Edit cred.txt with your actual Google OAuth credentials # Get them from: https://console.cloud.google.com/apis/credentials
-
Install dependencies:
flutter pub get
-
Run on different platforms:
Web (Chrome):
flutter run -d chrome
iOS Simulator:
flutter run -d ios
Android Emulator:
flutter run -d android
macOS Desktop:
flutter run -d macos
Android TV:
flutter run -d android --flavor tv
- Optimized for touch gestures
- Swipe navigation between photos
- Haptic feedback for controls
- iOS-style animations and transitions
- Larger photo display area
- Split-screen compatibility
- Enhanced navigation controls
- Optimized for landscape orientation
- Material Design 3 components
- Android-style animations
- Back button navigation support
- Adaptive icon support
- Tablet-optimized layouts
- Multi-window support
- Enhanced touch targets
- Landscape-first design
- Remote control navigation
- D-pad support for menu navigation
- TV-optimized UI scaling
- Auto-play functionality
- Screen saver mode
- 🔄 Migrating from Flutter to React Native
- ❌ Flutter version has Google Drive compatibility issues
- ✅ React Native will provide better cross-platform support
- ✅ Same codebase for iOS, Android, Web, and TV
- Better Google APIs support - More mature libraries
- Easier debugging - React DevTools, better error handling
- Faster development - Hot reload, better state management
- Single codebase - iOS, Android, Web, TV from same code
- More examples - Better Google Drive integration examples online
- Multiple config file creation in Google Drive
- OAuth token parsing problems
- URL persistence failures
- Complex state management debugging
- Fixed OAuth redirect URI configuration
- Fixed URL persistence after logout/login
- Fixed settings dialog URL loading
- Simplified user display to "Connected" status
lib/main.dart- Main application entry pointpubspec.yaml- Dependencies and project configurationandroid/- Android-specific configurationsios/- iOS-specific configurationsweb/- Web-specific configurations
flutter- Core Flutter frameworkgoogleapis- Google Drive API integrationgoogleapis_auth- OAuth authenticationhttp- HTTP requests for API calls
react-native- Core React Native framework@react-native-google-signin/google-signin- Google OAuthgoogleapis- Google Drive API integration@react-native-async-storage/async-storage- Local storagereact-native-web- Web platform support
📁 Sharing Moments (Shared Folder)
├── 📄 settings.json (Access Control List)
├── 📁 Photos
│ ├── 📸 photo1.jpg
│ ├── 📸 photo2.jpg
│ └── ...
└── 📁 Thumbnails (optional)
- Settings file (
settings.json) manages access permissions - Owner: Full control over folder and settings
- Admins: Can manage access control
- Viewers: Can only view photos in slideshow
- Email-based permissions stored in Google Drive
- ✅ Automatic folder creation with proper structure
- ✅ Settings file management for access control
- ✅ Add/remove viewers via email addresses
- ✅ Folder sharing with specific permissions
- ✅ Photo retrieval from shared folder
- ✅ Access control dialog for managing permissions
{
"folderId": "your_shared_folder_id",
"accessControl": {
"owner": "your-email@gmail.com",
"admins": ["admin1@gmail.com"],
"viewers": ["friend1@gmail.com", "family1@gmail.com"],
"permissions": {
"canView": true,
"canDownload": false,
"canShare": false
}
},
"slideshowSettings": {
"autoPlay": true,
"interval": 3,
"showIndicators": true,
"transition": "fade"
}
}# Press 'r' in terminal while app is running# Press 'R' in terminal while app is running# iOS
flutter build ios
# Android
flutter build apk
# Web
flutter build web
# macOS
flutter build macos- Implement Google Drive OAuth authentication
- Add photo upload functionality
- Implement photo caching for offline viewing
- Add access control management
- Add platform-specific navigation (TV remote, touch gestures)
- Add photo editing capabilities
- Implement slideshow themes
- Add music/audio support
- Create photo albums/folders
- Add social sharing features
- Implement photo filters
- Add slideshow scheduling
- Create backup/restore functionality
- "No pubspec.yaml found" - Make sure you're in the project root directory
- Dependencies not found - Run
flutter pub get - Platform not supported - Check
flutter doctorfor platform setup
- iOS: Install Xcode from App Store
- Android: Install Android Studio and configure SDK
- TV: Set up Android TV emulator in Android Studio
If you lose this documentation again in Cursor, simply paste these instructions to resume development. The project structure and requirements are now documented for future reference.
Last Updated: Current session Flutter Version: 3.35.1 Target Platforms: iOS, iPad, Android Phone, Android Tablet, Google TV, Web