Skip to content

Repository files navigation

πŸ“ NotePad & Notebook App

A Fast, Privacy-Focused Offline Note-Taking Application Built with Flutter & SQLite

Flutter Version Dart Version Database Platform License Author

Overview β€’ Key Features β€’ Tech Stack β€’ Project Structure β€’ Getting Started β€’ How It Works β€’ Author β€’ License


πŸ“Œ Overview

NotePad (Notebook) is a lightweight, high-performance, and offline-first mobile note-taking application engineered by Sakhawat Hossain (@sajusun). Built using Flutter and powered by local SQLite (sqflite), the app is designed for users who value privacy, speed, and ownership over their notes.

Unlike cloud-dependent note apps that require accounts or send private thoughts over the internet, NotePad keeps 100% of data stored locally on your device with zero telemetry. It features seamless live search, detailed note metadata tracking, and a powerful dual import/export engine that writes notes to human-readable plain text (.txt) files on your local storage for effortless backup and cross-platform portability.


✨ Key Features

  • ⚑ Offline-First & Privacy-Focused: No login required, no tracking, and zero internet connection needed. All data resides securely on the device.
  • πŸ—„οΈ Robust SQLite Local Storage: Uses relational database tables for instant write, read, update, and delete (CRUD) operations with atomic reliability.
  • πŸ” Real-Time Live Search: Instantaneous search filtering across note titles and descriptions with zero lag.
  • πŸ“€ Human-Readable Export: Export all notes to external device storage (/storage/emulated/0/com.Notebook.notes) as readable .txt files with creation & modification timestamps.
  • πŸ“₯ Batch Text File Import: Effortlessly restore or batch-import notes from plain text files with automatic schema parsing into SQLite.
  • πŸ•’ Metadata & Timestamp Tracking: View exact creation date, time, and last modified date for every note through an informative modal.
  • 🎨 Modern Material 3 UI: Clean cards, smooth navigation, intuitive FAB actions, and confirmation safety dialogs before deletion.

πŸ› οΈ Architecture & Tech Stack

Technology Purpose Documentation / Package
Flutter 3.x Cross-platform UI toolkit flutter.dev
Dart 3.x Client-optimized OOP language dart.dev
sqflite SQLite database plugin for Flutter pub.dev/packages/sqflite
path & path_provider System path locator & file directory access pub.dev/packages/path_provider
permission_handler Granular Android runtime storage permissions pub.dev/packages/permission_handler
intl Date/Time formatting & localized strings pub.dev/packages/intl
shared_preferences Key-value persistent state storage pub.dev/packages/shared_preferences

πŸ“‚ Project Structure

notepad/
β”œβ”€β”€ android/                   # Android native platform files & build config
β”œβ”€β”€ ios/                       # iOS native platform files
β”œβ”€β”€ lib/
β”‚   β”œβ”€β”€ helper/
β”‚   β”‚   β”œβ”€β”€ date_time.dart     # Timestamp generator & formatting helper
β”‚   β”‚   β”œβ”€β”€ file_handler.dart  # File IO: Directory creation, TXT import & export engine
β”‚   β”‚   └── local_db.dart      # SQLite Database helper (CRUD queries, table setup)
β”‚   β”œβ”€β”€ model/
β”‚   β”‚   └── note_model.dart    # Note entity data model
β”‚   β”œβ”€β”€ view/
β”‚   β”‚   └── add_note.dart      # Note editor screen (Create / Update mode)
β”‚   β”œβ”€β”€ widget/
β”‚   β”‚   └── alert_dialog.dart  # Reusable UI dialogs (Delete confirmation, Info modal)
β”‚   └── main.dart              # App entry point, home feed, live search & action menu
β”œβ”€β”€ pubspec.yaml               # Project dependencies and environment specs
└── README.md                  # Project documentation & author profile

πŸš€ Getting Started

Follow these steps to clone, build, and run the project locally on your machine or physical Android/iOS device.

Prerequisites

Installation & Setup

  1. Clone the Repository:

    git clone https://github.com/sajusun/notepad.git
    cd notepad
  2. Install Dependencies:

    flutter pub get
  3. Check Flutter Environment:

    flutter doctor
  4. Run the Application:

    # Run on connected emulator or physical device
    flutter run
  5. Build Release APK (Android):

    flutter build apk --release

    The generated APK will be available in build/app/outputs/flutter-apk/app-release.apk.


πŸ’‘ How It Works

1. Database Schema

Notes are stored inside a localized SQLite database with the following table schema:

CREATE TABLE Notes (
  id INTEGER PRIMARY KEY AUTOINCREMENT,
  title TEXT NOT NULL,
  description TEXT,
  creationTime TEXT,
  modifiedTime TEXT
);

2. Export & Import Mechanism

  • Exporting: When clicking Export from the top-right menu, the app fetches all rows from SQLite and writes individual .txt files into /storage/emulated/0/com.Notebook.notes/notes/ in the format:
    [creationTime]
    [modifiedTime]
    [title]
    [description]
    
  • Importing: When clicking Import, the app scans the target directory, reads each text file, parses the header and body lines, and imports the records straight into the SQLite database.

πŸ‘¨β€πŸ’» Author & Connect

This project is built and maintained by Sakhawat Hossain (sajusun), a Senior Backend & Software Engineer specializing in scalable application architectures, cloud systems, and mobile/web development.

Portfolio Resume Projects LinkedIn GitHub Email WhatsApp

Professional Profiles & Portfolio


πŸ“„ License

This repository is licensed under the MIT License. Feel free to use, modify, and distribute this software for educational and personal purposes.


Engineered with ❀️ by Sakhawat Hossain (@sajusun). If you found this project helpful, please consider giving it a ⭐ on GitHub!

About

NotePad (Notebook) is a lightweight, high-performance, and offline-first mobile note-taking application engineered by Sakhawat Hossain (@sajusun). Built using Flutter and powered by local SQLite (sqflite), the app is designed for users who value privacy, speed, and ownership over their notes.

Topics

Resources

Contributing

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages