Skip to content

A modern note-taking application that allows you to doodle, take screenshots, upload images, use voice note, sync to cloud and save to multiple servers.

Notifications You must be signed in to change notification settings

mikaelkraft/Quicknote_Pro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

49 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Codespaces Prebuilds

Quicknote Pro

A modern note-taking application that allows you to doodle, take screenshots, upload images, use voice note, sync to cloud and save to multiple servers.

πŸ“‹ Prerequisites

  • Flutter SDK (^3.29.2)
  • Dart SDK
  • Android Studio / VS Code with Flutter extensions
  • Android SDK / Xcode (for iOS development)

πŸ› οΈ Installation

  1. Install dependencies:
flutter pub get

πŸ”₯ Firebase Analytics Setup (Optional)

Quicknote Pro includes Firebase Analytics for tracking user engagement and monetization events. The app runs perfectly without Firebase configuration in a safe no-op mode.

Required files for Firebase Analytics:

  • Android: android/app/google-services.json
  • iOS: ios/Runner/GoogleService-Info.plist
  • Web: lib/firebase_options.dart (generated by flutterfire configure)
  • Gradle plugin wiring: classpath com.google.gms:google-services and apply plugin in app module

Setup Instructions:

  1. Install FlutterFire CLI: dart pub global activate flutterfire_cli
  2. Configure Firebase: flutterfire configure
  3. Follow the prompts to create/link your Firebase project

For detailed setup instructions, see Firebase Analytics Setup Guide.

Without Firebase: The app operates in safe no-op mode, logging analytics calls to debug console only.

  1. Run the application:
flutter run

πŸ“ Project Structure

flutter_app/
β”œβ”€β”€ android/            # Android-specific configuration
β”œβ”€β”€ ios/                # iOS-specific configuration
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ core/           # Core utilities and services
β”‚   β”‚   └── utils/      # Utility classes
β”‚   β”œβ”€β”€ presentation/   # UI screens and widgets
β”‚   β”‚   └── splash_screen/ # Splash screen implementation
β”‚   β”œβ”€β”€ routes/         # Application routing
β”‚   β”œβ”€β”€ theme/          # Theme configuration
β”‚   β”œβ”€β”€ widgets/        # Reusable UI components
β”‚   └── main.dart       # Application entry point
β”œβ”€β”€ assets/             # Static assets (images, fonts, etc.)
β”œβ”€β”€ pubspec.yaml        # Project dependencies and configuration
└── README.md           # Project documentation

🧩 Adding Routes

To add new routes to the application, update the lib/routes/app_routes.dart file:

import 'package:flutter/material.dart';
import 'package:package_name/presentation/home_screen/home_screen.dart';

class AppRoutes {
  static const String initial = '/';
  static const String home = '/home';

  static Map<String, WidgetBuilder> routes = {
    initial: (context) => const SplashScreen(),
    home: (context) => const HomeScreen(),
    // Add more routes as needed
  }
}

🎨 Theming

This project includes a comprehensive theming system with both light and dark themes:

// Access the current theme
ThemeData theme = Theme.of(context);

// Use theme colors
Color primaryColor = theme.colorScheme.primary;

The theme configuration includes:

  • Color schemes for light and dark modes
  • Typography styles
  • Button themes
  • Input decoration themes
  • Card and dialog themes

πŸ“± Responsive Design

The app is built with responsive design using the Sizer package:

// Example of responsive sizing
Container(
  width: 50.w, // 50% of screen width
  height: 20.h, // 20% of screen height
  child: Text('Responsive Container'),
)

πŸ’Ύ Backup & Import

QuickNote Pro includes comprehensive backup and import capabilities that work without requiring cloud storage credentials:

Features

  • Export All Notes: Create a ZIP backup containing all your notes and media files
  • Import from Backup: Restore notes from ZIP or JSON backup files
  • Safe Merge Strategy: Smart conflict resolution using last-write-wins based on timestamps
  • Import as Copies: Option to create new IDs for imported notes to avoid conflicts
  • Cloud Sync Integration: Optional automatic sync after import when cloud provider is connected

Usage

Creating a Backup

  1. Go to Settings > Cloud & Data > Backup & Import
  2. Tap Export All Notes
  3. Review the export summary showing note count, media files, and estimated size
  4. Confirm the export
  5. Use the system share dialog to save the backup file anywhere

Importing a Backup

  1. Go to Settings > Cloud & Data > Backup & Import
  2. Tap Import from File
  3. Select a ZIP or JSON backup file
  4. Configure import options:
    • Import as copies: Creates new IDs to avoid conflicts
    • Sync after import: Automatically sync to cloud if connected
  5. Review the import preview and confirm
  6. View the import summary showing created/updated/skipped notes

File Formats

ZIP Backup Structure

quicknote_backup_YYYYMMDD_HHMM.zip
β”œβ”€β”€ notes.json          # Array of note objects with metadata
└── media/              # Binary assets referenced by notes
    β”œβ”€β”€ image1.jpg
    β”œβ”€β”€ image2.png
    └── voice1.m4a

Note Object Schema

{
  "id": "unique_note_id",
  "title": "Note Title",
  "content": "Note content text",
  "createdAt": "2024-01-15T10:30:00.000Z",
  "updatedAt": "2024-01-16T14:45:00.000Z",
  "folder": "Personal",
  "tags": ["tag1", "tag2"],
  "images": ["image1.jpg"],
  "voiceNotes": ["voice1.m4a"],
  "pinned": false
}

JSON Import

  • Single note: JSON object with note data
  • Multiple notes: JSON array of note objects
  • Media files are not included (graceful warnings provided)

Privacy & Security

  • No Storage Permissions Required: Uses system share dialogs and app documents directory
  • Local Processing: All backup/import operations happen locally on your device
  • No Cloud Dependencies: Works completely offline
  • User Control: You choose where to save and store backup files

Platform Support

  • Android: Full support with SAF (Storage Access Framework)
  • iOS: Full support with system share sheets
  • Desktop: Supported with platform-specific file dialogs
  • Web: Download support (media extraction limitations may apply)

Limitations

  • Large media collections may create substantial backup file sizes
  • Web platform has limited media file handling capabilities
  • Import validation requires well-formed JSON/ZIP structures
  • Sync integration only available when cloud provider is configured

πŸ“¦ Deployment

Build the application for production:

# For Android
flutter build apk --release

# For iOS
flutter build ios --release

Monetization v1 Documentation

See docs/monetization for plans, tracking, and outlines:

  • docs/monetization/README.md
  • docs/monetization/architecture.md
  • docs/monetization/ads-integration.md
  • docs/monetization/pricing-tiers.md
  • docs/monetization/metrics.md
  • docs/monetization/release-plan.md

πŸ™ Acknowledgments

  • Powered by Flutter & Dart
  • Styled with Material Design

Built with ❀️ by Mikael Kraft

About

A modern note-taking application that allows you to doodle, take screenshots, upload images, use voice note, sync to cloud and save to multiple servers.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages