A modern, feature-rich note-taking application for Android built with Jetpack Compose and Material Design 3.
- Advanced Text Formatting: Bold, italic, underline, strikethrough
- Heading Styles: Multiple heading levels for better organization
- Lists: Bullet points and numbered lists
- Links: Add and manage hyperlinks within notes
- Code Blocks: Syntax highlighting for code snippets
- Real-time Preview: See formatting as you type
- Create & Edit: Intuitive note creation and editing interface
- Color-Coded Notes: Automatically assigned colors for visual organization
- Search: Fast full-text search across all notes
- Sorting: Multiple sort options (date, title, custom)
- Filtering: Filter by categories, date, and other criteria
- Custom Categories: Create unlimited categories with custom names and colors
- Color Picker: HSV color picker with hue, saturation, and brightness controls
- Single Category Assignment: Each note can be assigned to one category
- Category Management: Edit, delete, and organize categories
- Visual Icons: All categories use a consistent label icon design
- Category Filtering: Filter notes by specific categories
- Unique category names (case-insensitive validation)
- Firebase sync for cross-device category access
- Smooth animations (300ms transitions)
- Internet connectivity check before creation
- Vertical scrolling for long category lists
- Multiple Images: Attach multiple images to any note
- Local Storage: Images saved immediately to device
- Cloudinary Integration: Automatic cloud backup
- Offline Support: Works without internet, syncs when online
- Image Viewer: Full-screen image viewer with zoom support
- Image Management: Add, view, and delete images
- Automatic sync during note creation/editing
- Manual sync via Image Sync Test Screen
- Sync status tracking (synced/unsynced)
- Cloudinary deletion on note deletion
- Comprehensive error handling and logging
- Visual feedback during sync operations
- Real-time Sync: Automatic synchronization with Firebase Firestore
- Offline Mode: Full functionality without internet
- Background Sync: Automatic sync when connection restored
- Conflict Resolution: Smart handling of sync conflicts
- Sync Status: Visual indicators for sync state
- Note sync (create, update, delete)
- Category sync across devices
- Image sync to Cloudinary
- Unsynced notes tracking
- Manual sync trigger
- Network connectivity monitoring
- One-Tap Sign-In: Quick authentication with Google account
- Secure: Firebase Authentication integration
- Profile Management: User profile with avatar and details
- Sign Out: Secure sign-out functionality
- Temporary Deletion: Notes moved to recycle bin instead of permanent deletion
- Restore: Recover deleted notes easily
- Permanent Delete: Remove notes permanently when ready
- Bulk Operations: Delete or restore multiple notes at once
- Auto-cleanup: Automatic cleanup of old deleted notes (optional)
- View all deleted notes
- Restore individual or multiple notes
- Permanently delete with confirmation
- Image cleanup on permanent deletion
- Cloudinary cleanup on permanent deletion
- In-App Notifications: Custom notification system
- Firebase Cloud Messaging: Push notifications support
- Notification Types: Welcome, sync status, reminders
- Notification Center: Dedicated screen for all notifications
- Badge Indicators: Unread notification badges
- Mark as Read: Individual or bulk mark as read
- Welcome notification on first sign-in
- Sync completion notifications
- Error notifications
- Custom notification icons
- Notification preferences
- Background sync notifications
- Material Design 3: Latest Material Design guidelines
- Dark/Light Theme: Automatic theme switching
- Smooth Animations: 300ms transitions throughout
- Custom Bottom Bar: Animated bottom navigation with FAB
- Responsive Layout: Adapts to different screen sizes
- Professional Icons: Consistent icon design
- Bottom Navigation: Home, Notifications, Settings, Account
- Floating Action Button: Quick note creation
- Gesture Support: Swipe to delete notes
- Back Navigation: Proper back stack management
- Full-Text Search: Search across titles and content
- Real-time Results: Instant search results as you type
- Search History: Recent searches saved
- Clear Search: Quick clear button
- Filter by category
- Filter by date range
- Filter by sync status
- Sort by date (ascending/descending)
- Sort by title
- Combined filters
- Theme Selection: Light, Dark, System default
- Notification Preferences: Enable/disable notifications
- Background Sync: Toggle automatic sync
- Account Management: View and manage account details
- App Information: Version, build info
- About Screen: App version, privacy policy, terms of use, developer credits
- Report & Feedback System: Comprehensive feedback collection with Firebase integration
- Professional Layout: Consistent styling across all settings sections
- Feedback Types: Bug Report, Feature Request, General Feedback, UI/UX Issues, Performance Issues
- Smart Form: Auto-populated user email from authenticated account
- Character Limits: Subject field limited to 25 characters with real-time counter
- Keyboard Navigation: IME actions for smooth field navigation (Next/Done)
- Network Awareness: Automatic internet connectivity detection
- Firebase Integration: Direct submission to Firestore database
- Device Information: Automatic collection of device and app version details
- Progress Indicators: Visual feedback during submission process
- Error Handling: Specific error messages for network and submission issues
- App Information: Version, description, and branding
- Legal Links: Privacy Policy, Terms of Use, Open Source Licenses
- Developer Credits: Professional developer attribution at bottom
- External Links: Rate app on Play Store, open external URLs
- Consistent Design: Matches app's overall design language
- Room Database: Local SQLite database
- Version 6: Latest schema with image support
- Migrations: Automatic database migrations
- Relationships: Proper foreign key relationships
- Indexes: Optimized queries
- Notes with rich text content
- Categories with colors
- Note-Category relationships (many-to-many)
- Images with local and cloud paths
- Notifications
- User preferences
- Feedback with types and status tracking
- MVVM Pattern: Clean architecture with ViewModel
- Dependency Injection: Hilt for DI
- Coroutines: Asynchronous operations
- Flow: Reactive data streams
- Repository Pattern: Data layer abstraction
- Jetpack Compose: Modern UI toolkit
- Material 3: Latest Material Design components
- Firebase: Authentication, Firestore, Cloud Messaging
- Cloudinary: Image storage and CDN
- Room: Local database
- Hilt: Dependency injection
- Coil: Image loading
- OkHttp: Network requests
- Gson: JSON parsing
- WorkManager: Background tasks
- DataStore: Preferences storage
- Lazy loading for large lists
- Image caching with Coil
- Efficient database queries
- Background processing
- Memory optimization
- Unsynced Notes Screen: View and sync unsynced notes
- Comprehensive Logging: Detailed logs for debugging
- Error Handling: Graceful error handling throughout
- Clean code architecture
- Proper error handling
- Comprehensive logging
- Type-safe navigation
- Null safety
- Banner Ads: Non-intrusive banner ads in CreateNoteScreen
- Strategic Placement: Ads placed below header, above content
- Test Ads: Google test ads for development
- Easy Configuration: Simple setup with AdMobConfig
For AdMob setup instructions, see ADMOB_SETUP.md
- Android Studio Hedgehog or later
- Android SDK 24 or higher
- Kotlin 1.9+
- Google account for Firebase
- Cloudinary account for image storage
-
Clone the repository
git clone https://github.com/yourusername/notepilot.git cd notepilot -
Configure Firebase
- Create a Firebase project at Firebase Console
- Add an Android app to your Firebase project
- Download
google-services.json - Place it in
app/directory - Enable Authentication (Google Sign-In)
- Enable Firestore Database
- Enable Cloud Messaging
-
Configure Cloudinary
- Create account at Cloudinary
- Get your credentials (Cloud Name, API Key, API Secret)
- Create an unsigned upload preset named
notepilot_images - Update
CloudinaryConfig.kt:object CloudinaryConfig { const val CLOUD_NAME = "your_cloud_name" const val API_KEY = "your_api_key" const val API_SECRET = "your_api_secret" const val UPLOAD_PRESET = "notepilot_images" }
-
Build and Run
./gradlew clean ./gradlew assembleDebug
- Colorful note cards with titles
- Search, filter, and unsynced notes buttons
- Animated bottom navigation
- Floating action button for quick note creation
- Rich text formatting toolbar
- Category selection
- Image attachments
- Auto-save functionality
- Color-coded category chips
- Category management screen
- HSV color picker
- Add/edit/delete categories
- Multiple image support
- Image viewer with zoom
- Sync status indicators
- Local and cloud storage
app/
โโโ src/main/java/com/white/notepilot/
โ โโโ data/
โ โ โโโ auth/ # Authentication logic
โ โ โโโ dao/ # Room DAOs
โ โ โโโ database/ # Database configuration
โ โ โโโ model/ # Data models
โ โ โโโ preferences/ # DataStore preferences
โ โ โโโ remote/ # Cloudinary integration
โ โ โโโ repository/ # Data repositories
โ โโโ di/ # Dependency injection modules
โ โโโ enums/ # Enumerations
โ โโโ services/ # Background services
โ โโโ states/ # UI states
โ โโโ ui/
โ โ โโโ components/ # Reusable UI components
โ โ โโโ events/ # UI events
โ โ โโโ navigation/ # Navigation setup
โ โ โโโ screens/ # App screens
โ โ โโโ theme/ # Theme configuration
โ โโโ utils/ # Utility classes
โ โโโ viewmodel/ # ViewModels
โ โโโ workers/ # WorkManager workers
โ โโโ BaseApplication.kt # Application class
โ โโโ MainActivity.kt # Main activity
โโโ res/ # Resources (layouts, drawables, etc.)
- NotesViewModel: Note operations and state management
- AuthViewModel: Authentication state
- CategoryViewModel: Category management
- SettingsViewModel: App settings and preferences
- FeedbackViewModel: Feedback form state and submission
- NoteRepository: Note CRUD operations
- CategoryRepository: Category operations
- ImageRepository: Image storage and sync
- FirebaseRepository: Firebase Firestore operations
- NotificationRepository: Notification management
- FeedbackRepository: Feedback submission and network handling
- HomeScreen: Main note list
- CreateNoteScreen: Note editor
- NoteDetailScreen: View note details
- SearchNoteScreen: Search functionality
- CategoryManagementScreen: Manage categories
- UnsyncedNotesScreen: View unsynced notes and recycle bin
- NotificationsScreen: Notification center
- SettingsScreen: App settings
- AccountScreen: User profile
- AboutScreen: App information and legal links
- ReportFeedbackScreen: Feedback submission form
- User taps FAB
- Opens CreateNoteScreen
- User enters title and content
- User can add categories
- User can attach images
- Images save locally immediately
- Images sync to Cloudinary in background
- Note saves to local database
- Note syncs to Firebase when online
- User sees sync status
- User selects images
- Images save to local storage
- Database records created
- Automatic sync attempt to Cloudinary
- If successful: database updated with cloud URL
- If failed: marked as unsynced for retry
- Manual sync available from test screen
- Background sync when connection restored
- User taps category button in editor
- Bottom sheet shows available categories
- User selects one category
- Category chip appears in editor
- User can remove category
- Category saves with note
- Category syncs to Firebase
- User swipes note left
- Note marked as deleted (soft delete)
- Note moves to recycle bin
- User can restore from recycle bin
- User can permanently delete
- Permanent delete removes:
- Note from database
- Note from Firebase
- All associated images (local + cloud)
- All image database records
- Firebase Authentication for secure sign-in
- Secure API key storage
- HTTPS for all network requests
- Cloudinary signed URLs for images
- Local data encryption (Room)
- Proper permission handling
- Full note creation/editing offline
- Local image storage
- Automatic sync when online
- Offline indicator
- Sync queue management
- Conflict resolution
- Lazy loading for note lists
- Image caching with Coil
- Database indexing
- Coroutine-based async operations
- Memory-efficient image handling
- Background sync with WorkManager
None currently. All features are working properly.
- Note sharing with other users
- Collaborative editing
- Voice notes
- Drawing/sketching support
- Note templates
- Export to PDF
- Backup/restore functionality
- Widget support
- Tablet optimization
- Wear OS support
- Feedback attachment support
- Admin panel for feedback management
Contributions are welcome! Please feel free to submit a Pull Request.
This project is licensed under the MIT License - see the LICENSE file for details.
Hemal Katariya
- GitHub: @hemukatariya
- Email: connect.hemal@gmail.com
- Material Design 3 guidelines
- Jetpack Compose documentation
- Firebase documentation
- Cloudinary documentation
- Android developer community
For support, email connect.hemal@gmail.com or open an issue in the GitHub repository.
- Initial release
- Rich text editor
- Category management
- Image attachments with Cloudinary
- Firebase sync
- Google authentication
- Recycle bin
- Notifications
- Search and filter
- Dark/Light theme
- AdMob integration
- About screen with app information
- Report & Feedback system with Firebase integration
- Professional settings layout
- Category deletion with Firebase sync
- Native ads in note lists
- Interstitial ads for navigation tracking
Built with โค๏ธ using Jetpack Compose and Material Design 3 by HEMAL KATARIYA