https://github.com/theachoem/storypad
Minimalist application to write stories, notes, diary! π
https://github.com/theachoem/storypad
dart flutter flutter-showcase material-design-3 mvvm
Last synced: 3 months ago
JSON representation
Minimalist application to write stories, notes, diary! π
- Host: GitHub
- URL: https://github.com/theachoem/storypad
- Owner: theachoem
- License: gpl-3.0
- Created: 2022-01-03T16:59:26.000Z (over 3 years ago)
- Default Branch: develop
- Last Pushed: 2025-01-22T20:18:19.000Z (4 months ago)
- Last Synced: 2025-01-22T21:24:27.531Z (4 months ago)
- Topics: dart, flutter, flutter-showcase, material-design-3, mvvm
- Language: Dart
- Homepage: https://theachoem.github.io/spooky-mb/
- Size: 38.9 MB
- Stars: 263
- Watchers: 4
- Forks: 51
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-open-source-flutter-applications - StoryPad - commit/theachoem/storypad) |  | (Flutter Project Showcase)
- awesome-open-source-flutter-applications - StoryPad - commit/theachoem/storypad) |  | (Flutter Project Showcase)
README

# StoryPad π
First journal with Material 3 design! StoryPad is a minimalist design application to write stories, journals, notes, diaries, todo, etc. We offer a variety of features that you can expect for your daily usage.
[](https://play.google.com/store/apps/details?id=com.tc.writestory)
## Installation
Before getting started, ensure you have the following tools:
- Java: 21 [(LTS)](https://www.oracle.com/java/technologies/java-se-support-roadmap.html) (for Android)
- Ruby: 3.3.5 (for IOS)
- Flutter: 3.27.4If you're using asdf, refer to this [guide](./docs/asdf.md). Otherwise, you can install above versions manually with fvm, rvm, rbenv or others.
## Setup
For easy setup and running, the GoogleService-Info.plist, google-services.json, and Dart defines are provided directly in this repo. Simply run the project with:
```s
flutter run --flavor community --dart-define-from-file=env/community.json --target=lib/main_community.dart
```## Overview
StoryPad is designed with simplicity in mind, both in its UI and codebase. We aimed to keep the code understandable while staying true to Flutter's principles.
1. State Management
StoryPad uses Provider and Stateful widgets to manage its state, distinctly organized into three levels to avoid confusion:- Global State: Managed by [ProviderScope](lib/provider_scope.dart), disposed when the app closes.
- View State: Managed by [ViewModelProvider](lib/widgets/view/view_model_provider.dart), disposed when the page closes.
- Widget State: Managed by Stateful widgets, where the widget itself controls its own state and is disposed when removed from the tree.2. MVVM Pattern
StoryPad leverages the MVVM (Model-View-ViewModel) pattern while each view is composed of three to four key files:- Model (optional): Represents the data structure, e.g., StoryDbModel.
- View: Constructs the view model and builds the UI content, e.g., EditStoryView.
- ViewContent: Displays the actual UI, keeping the visual layout separate from business logic, e.g., EditStoryContent.
- ViewModel: Manages business logic, provides data & operations to the view, keeping the UI free from unnecessary logic, e.g., EditStoryViewModel.3. Local Database
StoryPad uses ObjectBox as the local database solution for persistent data storage. ObjectBox provides fast, efficient, and scalable database operations with rich search capabilities, making it ideal for mobile apps that require high-performance data handling.## Learn & Contribute
Feel free to clone the StoryPad repository and explore the code. Itβs a great resource for learning how to build efficient, maintainable mobile apps with Flutter. You can also contribute improvements or new features, helping enhance the project for everyone.
## License
StoryPad is licensed under the GNU General Public License v3.0. See the [LICENSE](LICENSE) file for details.