Overview β’ Key Features β’ Tech Stack β’ Project Structure β’ Getting Started β’ How It Works β’ Author β’ License
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.
- β‘ 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.txtfiles 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.
| 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 |
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 profileFollow these steps to clone, build, and run the project locally on your machine or physical Android/iOS device.
- Flutter SDK (
>= 3.1.5 < 4.0.0) - Dart SDK
- Android Studio or VS Code with Flutter extensions
- Android Device or Emulator (API 21+)
-
Clone the Repository:
git clone https://github.com/sajusun/notepad.git cd notepad -
Install Dependencies:
flutter pub get
-
Check Flutter Environment:
flutter doctor
-
Run the Application:
# Run on connected emulator or physical device flutter run -
Build Release APK (Android):
flutter build apk --release
The generated APK will be available in
build/app/outputs/flutter-apk/app-release.apk.
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
);- Exporting: When clicking Export from the top-right menu, the app fetches all rows from SQLite and writes individual
.txtfiles 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.
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.
- π Personal Website: https://sajusun.github.io/
- π Curriculum Vitae / Resume: https://sajusun.github.io/resume.html
- π Projects & Case Studies: https://sajusun.github.io/projects.html
- π¬ Contact: https://sajusun.github.io/contact.html
- πΌ LinkedIn: linkedin.com/in/sajusun
- π GitHub: @sajusun
This repository is licensed under the MIT License. Feel free to use, modify, and distribute this software for educational and personal purposes.