neatnotes is a notes-taking Android mobile application that aims to allow users to easily create and manage their notes on the go. It has a simplistic yet functional interface, making it easy for anyone to use.
For the front-end, it is built using Flutter. For the backend, neatnotes utilises Firebase authentication to ensure that users would not be able to see each other's notes, as well as Firestore to store notes data.
This is an application that I built when I first picked up Flutter, and it is adapted from the tutorial provided by Vandad Nahavandipoor. If you are interested in learning Flutter, I would highly recommend Vandad's course, which not only provides a good introduction of Dart and Flutter, but also the intricacies of software development.
You can run the application on your Android device by downloading the APK file to your phone.
-
Clone the repository to your computer by running the command
git clone https://github.com/eugenetangkj/neatnotes.git
. -
Change directory to the repository that was cloned in step 1. For example,
cd \neatnotes\neatnotes
. -
Connect your Android device to your computer with a USB cable.
-
Run
flutter install
in the terminal. This will download the APK file to your device. Note that you need to have Flutter installed for this. If you do not have Flutter, you can refer to this tutorial to get started. -
Enjoy tracking notes with neatnotes!
You can view the hi-fidelity prototype for neatnotes at this Figma link.
neatnotes offers the following features:
- Email and password login
- Google account login
- Account registration + Email verification
- Password reset via recovery email
- View list of notes
- Create a new note (can enter note title, note content and select a note category)
- Edit a note
- Delete a note
- Delete all notes
- Generate the PDF version of a note
- Logout
If you are interested, you can view this video for a detailed walkthrough of the app's functionalities. Else, feel free to refer to the demo images below.
neatnotes uses the following packages:
Package | Purpose | Command |
---|---|---|
firebase_core | To use Firebase Core API and connect with Firebase for email sign in | flutter pub add firebase_core |
firebase_auth | To use Firebase Authentication API for email sign in | flutter pub add firebase_auth |
cloud_firestore | To store notes data on Firebase Cloud Firestore | flutter pub add cloud_firestore |
bloc | To use BLoC design pattern for the authentication service | flutter pub add bloc |
flutter_bloc | To use widgets that work with bloc | flutter pub add flutter_bloc |
equatable | To easily override equality comparisons between objects, especially for state comparisons | flutter pub add equatable |
google_sign_in | To integrate Google sign in API with the app | flutter pub add google_sign_in |
intl | To do date comparisons and conversion between dates and strings | flutter pub add intl |
async | To carry out async operations | flutter pub add async |
roundcheckbox | To implement customisable checkboxes in the edit/create notes view | flutter pub add roundcheckbox |
To create PDF using Flutter widgets, used during PDF conversion of notes | flutter pub add pdf |
|
open_file_plus | To utilise the phone's file system for viewing of PDF when a PDF is generated | flutter pub add open_file_plus |
path_provider | To locate the path on the phone's file system in which the PDF will be stored | flutter pub add path_provider |
rive | To add the opening animation when the app first loads | flutter pub add rive |