The app is Published on PlayStore:
Positive.ly is an android app that can help one to be more happy and stay positive. It is a feature packed combination of positive thinking the app is primarily divided into 3 sections:-
-
Positive Podcasts: This section lists popular podcasts which primarily focuses on positive thinking, Motivation, Living a happier life etc
-
Positive Quotes: This section includes compilation of positive thinking quotes messages and proverbs to boost one’s emotional & mental energy level.
-
Positive/Gratitude Affirmations/Journal: Here user can store voice notes & affirmations, which he/she can listen at any time, these will be stored in local storage as well as synced to database & storage if user consents Positive Thinking is an emotional & mental perception that looks on bright side of life & expects positive outcomes.
In these tough times of pandemic, everywhere we look whether on news channels, newspapers or social media. Mostly we see negative news & stats, along with that people during quarantine can’t interact much with their friends or relatives, which might take a heavy toll on their mental health. In these times positive thinking and feeling that everything will be okay is very important to stay focused on work & stay motivated. But there is no centralised source which provide all of this at one place. Social media can’t be used for this as it’s a mixed bag of information containing both positive & negative articles. This app is intended for a general use, which can go beyond ages as one always requires some positivity in life at any stage at any given time, so this app can be used at any time.
Anyone can use this app. However, target users are the one who are currently in home quarantine or are undergoing nationwide lockdown, so that they can remain motivated & maintain good mental hygiene
- Provides Podcasts
- Provide Quotes
- Voice Journaling
- Offline & Online sync (so that app can be used across devices)
- Widget to show a positive quote
I will use Firebase Database to handle online sync & SQLite for local data persistence (like maintaining favourites). The app will also maintain a favourites database which will be stored locally using Room ORM
- Handling empty states across the app (e.g. If the API doesn’t return a response)
- If the user is recording a journal what happens if he presses back button,
- Maintaining exoplayer states for a consistent user experience
- Picasso to handle the loading and caching of images.
- Timber for logging
- Butteknife for view binding
- Retrofit for REST requests (includes okhttp3:logging-interceptor & gson-converter)
- Room (including Android Lifecycle Extensions): ORM for SQLite
- Shimmer Library for improved UI while loading data
- Material Drawer: A powerful library to implement Navigation drawer with multi account support along with added features & effects
- Exoplayer: For media playback of podcasts
Services I will use:
- AdMob: Using google’s ad services to run ads on the app
- Firebase Auth: To maintain user’s log in and sign up details
- Firebase Database: To sync data across devices
- ListenNotes API: To Fetch podcasts & show it’s details to user
- Setting up ListenNotes API to fetch podcasts
- Set up a quotes api.
- Configure and include the latest versions of all libraries required
- Set up UI for log in & sign up
- Implement UI for Main Activity
- Implement UI for Gratitude Voice Journaling
- Creating Podcasts Fragment & Implement it’s UI
- Creating Quotes Fragment & Implement it’s UI
- Creating Podcasts Detail Screen & Custom Exoplayer Interface
- Creating Quotes Detail page along with Share button
- Implement Firebase Database
- Implement Firebase Auth methods that includes o Passwordless Sign In o Google Sign In o Email & Password Sign In o Email & Password Log in o Anonymous User Sign In o Forgot Password Feature
- Setting up listen notes api & Quotes API along with proper caching mechanism to minimize network calls
- Setting up Retrofit & okHttp client
- Creating appropriate methods to fetch & display data in UI
- Initialize Media Player & Media Recorder to record user’s journal in the app
- Creating List to show these recordings to user, which they can listen to anytime
- Polish user experience by providing animations across the app
- To verify that the app follows material design guidelines for a consistent user experience
- Creating UI for the widget
- Show top quotes of the day to the user in the widget
- UI testing using espresso
- Re-verify all edge cases are covered & all states are correctly handled by the app
Create a Firebase Project and download the google_services.json file Put that file into the app folder and you are good to go
Open terminal and type the below command to generate debug build
./gradlew assembleDebug
Open terminal and type the below command to generate release build
./gradlew assembleRelease
After running the above command, By default the output can be found in app/build/outputs/apk/debug/apk-debug.apk
MIT License
Copyright (c) 2020 Sankalp Singh Chauhan
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.