Giter VIP home page Giter VIP logo

ettet1000 / protectchild-important Goto Github PK

View Code? Open in Web Editor NEW

This project forked from jordyhers-org/times-up-flutter

0.0 0.0 0.0 285 KB

Parental Control App- For Android 🌟This Application use Native plugins to get local data such as Location and AppData to send it to the database. These information are saved in cache. In order to monitor the time spend on screen parent can then send messages and warn kids when it’s time to go to bed or do their homework. πŸ“±πŸŒŸπŸŒŸ

JavaScript 0.87% Dart 99.13%

protectchild-important's Introduction

Time's Up 🚼

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.

Live App Demo
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 πŸ“¨

Onboarding Screen

Onboarding Screen OnboardingScreen2 OnboardingScreen3

Run Project on your device

Step_1

> flutter create parental_control

Step_2

> git clone project and copy files to new projects 

Step_3

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>" />

Step_4

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

Supported Features

  • Location Tracking
  • App Usage Data
  • CloudFunctions
  • Messaging
  • PushNotifications

App Architecture

The app is composed by two main layers.

Presentation Layer

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.

Packages in use

Login Parent πŸ‘¨β€πŸ‘©β€

The first step is to log in the parent. Then Location permission we be asked and needs to be enabled.

LoginParent1 LoginParent2 LoginParent3

Parent side πŸ‘¨β€πŸ‘©β€πŸ‘¦

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

Screen Shot 2022-05-10 at 19 51 51 Screen Shot 2022-05-10 at 19 51 51

Child's details page 🚸

Screen Shot 2022-05-10 at 19 51 51 Screen Shot 2022-05-10 at 19 51 51

Registering the new child's device

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.

Screen Shot 2022-05-10 at 19 51 51 Screen Shot 2022-05-10 at 19 51 51 Screen Shot 2022-05-10 at 19 51 51Screen Shot 2022-05-10 at 19 51 51

Database State at this step πŸ—‚

Screen Shot 2022-05-30 at 03 55 19

Child's side

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.

Screen Shot 2022-01-15 at 16 04 41Screen Shot 2022-01-15 at 16 04 41Screen Shot 2022-01-15 at 16 04 41

Database State at this step πŸ—‚

Screen Shot 2022-05-30 at 04 02 59

Notification Page

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.

Screen Shot 2022-01-15 at 16 08 38

Setting Page

Note that some of the settings have not been implemented in the public version of the repo.

SettigPage

NOTE THAT THE PROJECT HAS NOT BEEN MOVE TO NULLL SAFETY YET

protectchild-important's People

Contributors

jordyhers avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.