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.
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 ๐จ
- 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
class (using Riverpod).
This allows to map the data from the layer above to AsyncValue
objects that can be mapped to the appropriate UI states (data, loading, error).
- firebase auth for authentication
- provider for state management
- algolia for backend search logic
- easy location for tracking locations
- geo_locator for Lat and long values
- cached_network_image for caching images
- app_usage for app usage data
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. J ust 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
- LOGIN 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.
Database State at this step
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.