A Flutter note-taking app with fun privacy features.
- User authentication (Email/Password, Google Sign-In, Apple Sign-In)
- Note creation and management
- Note jumbling with password protection
- Biometric authentication support
- Cloud sync with Firebase
This project follows Clean Architecture principles to create a scalable, maintainable, and testable codebase. The app is organized into feature-based modules, each containing three main layers:
The core business logic and rules of the application:
- Pure Dart code with no external dependencies
- Defines entities and use cases
- Contains repository interfaces
- Handles business rule validation
Implements the interfaces defined in the domain layer:
- Handles external data sources (Firebase, local storage)
- Manages data caching and offline support
- Implements repository interfaces
- Handles data mapping between layers
The UI implementation and state management:
- Implements UI using Flutter widgets
- Uses BLoC pattern for state management
- Handles user interaction
- Manages UI state and navigation
- BLoC (Business Logic Component) pattern
- Reactive programming with Streams
- Clear separation of UI and business logic
- Predictable state changes
- Custom error types for each layer
- Proper error propagation
- User-friendly error messages
- Comprehensive error logging
- Unit tests for business logic
- Integration tests for repositories
- Widget tests for UI components
- BLoC tests for state management
- Biometric authentication
- Secure key storage
- Firebase security rules
- Strict static analysis
- Comprehensive documentation
- Consistent code style
- Regular dependency updates
- Flutter SDK (>=3.0.0)
- Dart SDK (>=3.0.0)
- Xcode (for iOS development)
- CocoaPods (for iOS dependencies)
- Firebase project setup
-
Install Flutter:
brew install flutter
-
Install CocoaPods:
sudo gem install cocoapods
-
Clone the repository:
git clone https://github.com/yourusername/jumblebook.git cd jumblebook -
Install dependencies:
flutter pub get
-
Navigate to iOS directory and install pods:
cd ios pod install cd ..
-
Open Xcode workspace:
open ios/Runner.xcworkspace
-
In Xcode:
- Select the "Runner" project in the navigator
- Select the "Runner" target
- Go to "Build Settings" tab
- Set iOS Deployment Target to iOS 12.0
- In "Signing & Capabilities" tab, select your development team
-
Install VS Code extensions:
- Flutter
- Dart
-
The project includes launch configurations for:
- Debug mode
- Profile mode
- Release mode
- Open the Command Palette (Cmd + Shift + P)
- Select "Flutter: Select Device"
- Choose your target device/simulator
- Press F5 or select Run > Start Debugging
-
List available devices:
flutter devices
-
Run the app:
flutter run -d "device_name"
-
Pod installation fails:
cd ios pod repo update pod install --repo-update -
If you get "no valid code signing certificates" error:
- Open Xcode
- Go to Preferences > Accounts
- Add your Apple ID
- Select your team
- Let Xcode manage signing
-
For "RunnerTests" target issues:
rm -rf ios/Pods ios/Podfile.lock flutter clean cd ios pod install cd ..
-
For build configuration issues:
flutter clean rm -rf ios/Pods ios/Podfile.lock flutter pub get cd ios pod install cd ..
- Make sure you have:
- Added
GoogleService-Info.plistto iOS/Runner - Configured Firebase in
lib/main.dart - Added necessary Firebase dependencies in
pubspec.yaml
- Added
-
Create archive:
flutter build ios
-
Open Xcode:
open ios/Runner.xcworkspace
-
In Xcode:
- Select Product > Archive
- Follow the distribution steps
The project includes three launch configurations:
Jumblebook (debug mode): For development with hot reloadJumblebook (profile mode): For performance profilingJumblebook (release mode): For testing release builds
This project follows the official Dart style guide. Run:
flutter analyze- Fork the repository
- Create your feature branch
- Commit your changes
- Push to the branch
- Create a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.