Time's Up is a mobile application developed using flutter to monitor the time kids spend on screen. So far the app is only available on Android. The app can't run on iOS devices.The application has for sole purpose to track and record the data from the child's device and send it to parents. The application does not violate the privacy policies settled for user, and doesn't collect data for third parties companies.
Times.s.mov
The first version doesn't contain all the features. Some features have been hardcoded on purpose. In order to have the code, please approach the author.π₯
This version includes
- Location Tracking
- App Usage
- Notification
Premium β
- App Icons π±
- App Usage Metrics π
- Setting page (Update Profile) πΉ
- Contact Us pageπ©
- Dark Mode π
- Customize Notification π³
- Battery Level πΆ
- Marker image (Child's Picture) on Map πΊ
- Email follow up for weekly report π¨
> flutter create parental_control
> git clone project and copy files to new projects
Add the necessary permissions to /android/app/src/main/AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission
android:name="android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name="android.permission.ACCESS_COARSE_LOCATION"
/>
Add your APi Key to project /android/app/src/main/AndroidManifest.xml
Create api Google Map key on Google cloud Console to launch the map. Set Up Google map in Flutter
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="<Your Api Key>" />
Create a new firebase project and add your credentials and SHA-1 and SHA-256 Keys
Then Add google.json file to android / app folder Add Firebase to your flutter app
- Location Tracking
- App Usage Data
- CloudFunctions
- Messaging
- PushNotifications
The app is composed by two main layers.
This layer holds all the widgets, along with their controllers.
Widgets do not communicate directly with the repository.
Instead, they watch some controllers that extend the StateNotifier
. The busineess Logic
used to control pages is BLoC. It is the perfect tool in
this use case as BLoC allows to emit states using Specific ENUMS cases.
- firebase auth for authentication
- provider for state management
- flutter_bloc for Child's page management
- easy location for tracking locations
- geo_locator for Lat and long values
- cached_network_image for caching images
- app_usage for app usage data
- shared_preferences for String and bool caching
The first step is to log in the parent. Then Location permission we be asked and needs to be enabled.
First the parent downloads the app on his android device.To explain in a few details, the first step
of the application is the Splash screen. A splash screen will present a landing page. In this case, suppose the login is a parent.
Just touch the Parent DEVICE button for the parent.After that, you will be redirected to a login page. There are currently 3 possible
input options.See Figure (4.2).
- Sign in with email
- Sign in with facebook
- Sign in with google
Now the next step is to add a new sub device. Each user can only add a child device to the database as a sub- collection
therefore does not have access to all stored child devices. Moreover each parent will be able to show only their child.
To achieve this a FloatingActionButton (+) is available on the Home page. This action will then open a page where you can
add the child's picture, name, and email. Although email remains optional, it's always a good idea to keep an email.
The parent must then log into the child's device with their credentials (email and password).
Then the parent would have to enter the childβs unique key displayed in red (see fig.4.4-4). As soon as the child is verified,
the device's location, TokenID and App List will be retrieved and added to Firebase.
The notification page will essentially allow the parent to send messages to the child's device. There are currently only two
pre-written messages.HOMEWORK TIME and GO TO BED. Of course, it will be possible to customize these messages shortly. As soon
as the parent taps the button a new message is written to the Firebase database. Therefore, it triggers a cloud function that will send
the text message to the Token ID corresponding to the device. The system working behind as the backend is entirely handled by
CloudFunction of the Firebase database. To achieve this a single javascript function was written and deployed.
Note that some of the settings have not been implemented in the public version of the repo.
NOTE THAT THE PROJECT HAS NOT BEEN MOVE TO NULLL SAFETY YET