Customizable Note Taking App Flutter and Kotlin Source Code

Product Information

$113.30
cart Add to cart favorites Add to favorites
User Guide Screenshots Live Preview Video Updates

inspectedProduct inspected by PieceX

Developer

avatar
farolanf
×

Negotiate Price

Request Code Sample Direct message

Apr 25, 2023

Public chat

Product Details

THE SOURCE CODE


This is the source code of a real published note taking app on Google Play Store: FunNotes https://play.google.com/store/apps/details?id=dev.farol.funnotes


It's a fully functional note taking app ready to be rebranded and reskinned.


** For live preview, please install the app(free)
https://play.google.com/store/apps/details?id=dev.farol.funnotes



** For more details about the app, please visit the store
https://play.google.com/store/apps/details?id=dev.farol.funnotes



Currently it's only available on Android but should be possible to be ported with relative ease to other platforms as the source code is written in Flutter.


Changelog



v1.3.0


  • Added page and category background image settings

  • Added force sync indicator

  • Fixed auto sync not working

v1.2.1


  • Added sync to Google

  • Fix ordering issue

  • Compact DB on export

  • Make Import and Sync features free

  • Make text formatting and annotations features free

v1.1.0


  • Added notes view mode

  • Added list view mode

  • Added sort options: custom order | title (desc) | create date (desc) | update date (desc)
  • Added clone note

  • Refresh notes update date only on content change

  • Small fixes

Feature


  • written in the cross-platform languages Flutter and Kotlin

  • already integrated In-App purchases for premium upgrades

  • uses best packages for main app features like flutter_quill for the text editor, share_plus for sharing, and pigeon for host API abstraction

  • uses SQLite for high performance data lookup

  • custom database migration system handles database versioning and allows you to add database migrations easily

  • lazy note list-items rendering for high performance list, no problem handling huge list of notes, eg. even with tens of thousands notes, only a few of them are processed and rendered

The app is built with Flutter and Kotlin. I use VSCode as the editor and assume that you would do the same.


Limitations



The code is specifically designed for Android, without consideration for any other platform.


Getting Started



  • obtain and put your google-services.json into the android/app folder. You might want to read Add Firebase to your Android project | Firebase for Android (google.com)

  • copy android/key.properties.example to android/key.properties and update accordingly

  • edit variables section in rename-app to reflect your new app and package name

  • run in the project folder: ./rename-app

  • test build the project, see the Deployment section below

Troubleshooting Build


Try these in case of build failure.


  • kill gradle: pgrep -f gradle

  • clean cache: flutter clean

  • clean gradle cache (run in android/): ./gradlew clean

  • or rm -rf android/.gradle

** Note that you should setup Play Store API access for play billing to work, you can confirm the play billing works when your in-app products are showing on the UpgradeDialog.


Deployment



There is no server deployment, so this is simply building the package to be uploaded to the Google Play Store.


Assuming you have Flutter installed, the deployment is straightforward of running the following scripts in the project folder:


  • ./bump-buildversion

    This will increase the build version in pubspec.yaml (the number after the + sign on the line version: 1.0.0+1 in the file)



  • ./build-appbundle

    This will simply run flutter build appbundle which generates the .aab file which you would need to upload to the Google Play Store when creating a release



Design Details



The app consists of a few screens which have widgets subscribed to some states. A state is simply just a group of reactive variables and some methods for doing app business logic. The states might use some repositories which handle reading and writing
data to the database.



Logical View



Screens


The app consists of just a few screens:


  • HomeScreen: this is the main screen that shows the list of notes for the currently selected category. Users can select the active category from the list of category tabs. On the top bar there would be some buttons that are currently configured to
    be shown,they are: Search, Add Note, Compact/Full View, Settings, and Menu buttons

  • SettingsScreen: shows options to configure which buttons are visible on the top bar and the note item on the Home screen. There s also appearance settings which are only available in the Pro Edition of the app (users will need to purchase a paid upgrade).
    There s also options to export or import the data and also options to manage hidden notes password

  • ArchiveScreen: shows the list of archived notes. Here users can choose to select notes to be unarchived or deleted. The deleted notes will be shown on the Trash screen

  • TrashScreen: shows the list of deleted notes. Here users can choose to select notes to be restored/undeleted or permanently deleted

  • NoteScreen: shows the note editor. The editor supports rich text editing and embeds (only available to Starter Edition). Users can also add annotations/drawings which are shown on top of the text and images/videos embeds

States


States are split according to their domain to minimize widget updates (only widgets that are subscribed to the states will be rebuilt). The states are:


  • CategoryState: handles category business logic, including: adding, deleting, patching, reordering categories

  • NoteState: handles note business logic, including: adding, deleting, archiving, restoring, reordering, and getting notes for current active filters of archived, deleted, hidden, and search query filters

  • DragState: provides notes and categories dragging states

  • SettingsState: handles settings business logic

  • EditState: handles notes editing business logic

  • FocusState

  • VendingState: provide current license tier state

Repositories


There are few repositories in the app which handles reading and writing data to the database. They are grouped according to their domain, which are:


  • CategoryRepository

  • NoteRepository

  • SettingsRepository

  • VendingRepository

Database


The app uses SQLite to store all the data which consists of notes, categories, settings, and cached purchases.


Database Migration


Migrating the database is simply done by opening the repositories/migrations.dart file and adding another migrate() call to the bottom of the list in the migrateAll function.


** Note that the migrate() calls should never be reordered after publishing the app to maintain correct version check order, otherwise some migrations won t be executed. This is a tradeoff from using the switch/case structure which has more boilerplates
when adding a migration.



THE APP


FunNotes is a customizable note taking app with a focus on text editing and personalization. Choose from a variety of colors and buttons visibility to make your notes truly your own. With FunNotes, taking notes has never been so fun and easy!


Features



  • Manage notes with ease: add, delete, pin, hide, edit, reorder, move to other categories, archive, delete forever, unarchive, and undelete.

  • Create categories to organize your notes and customize them with the option to add, delete, rename, and reorder them.

  • Rich text formatting options: bold, italic, font, color, background color, and many more. Insert images, videos, emojis to your notes

  • Annotations and drawings: create them within your notes

  • Share your notes as images

  • Customize the visible buttons and appearance of FunNotes, including options for dark mode, base theme, default note background/pin color, per note background/pin color, and more


  • Easily search through your notes and highlight found search terms


  • Export and backup your notes to ensure your data is always safe


  • Import and restore your notes to switch between devices or recover lost data

These are just a few of the many powerful features that make FunNotes the ultimate note-taking tool. Try FunNotes today and start taking notes in a fun and personalized way!


** Please note that certain features mentioned may be premium and require a paid upgrade. Please refer to the upgrade options below for more details.


Upgrade Options


You can easily upgrade and access premium features through in-app purchases.


Pro


  • All the Free features

  • Customizations

We have numerous features planned for development in our roadmap. Your support for the app would be greatly appreciated. Thank you.


File Tree

  • 📁 Customizable Note Taking App Flutter and Kotlin Source Code

Price Information

Price Statistics

Highest Price
$113.30
Average Price
$113.30
Lowest Price
$113.30
AI Price Forecast
$NA

Insights

Limited Preview Only


Real Product Contains All Files And Full Code

Check dependencies

See product external dependencies

Randomly Selected Sample File

Project File Statistics

Hierarchy

Choose a sample file
X
user-symbol

Stay in touch

Get Practical Tips For Business and Developers.

Learn about PieceX Community Needs for Source Code Projects.

Be the First to Know PieceX Newest Free Community Code Projects.