Pensil Teaching App is an education platform created in flutter.

Overview

Pensil Teaching App

Pensil Teach App is an education platform created specifically for the tutors of the digital age. Pensil Teaching app reduce gap between tutor and students and form a bridge no matter how far they are.

App Screenshots

Login Verify OTP Home Batch Detail
Assignment List Videos List Docs List Create Batch
Create Batch Select Students Select Students Upload Material
Upload Study Material Upload Video Upload Assignment

Project Setup

Click to expand

1. Flutter Environment Setup

2. Clone the repo

$ git clone https://github.com/pensil-inc/flutter_pensil_app.git
$ cd flutter_pensil_app/

3. Setup the firebase app (Used for Google authentication)

  1. You'll need to create a Firebase instance. Follow the instructions at https://console.firebase.google.com.
  2. Once your Firebase instance is created, you'll need to enable Google authentication.
  • Go to the Firebase Console for your new instance.

  • Click "Authentication" in the left-hand menu

  • Click the "sign-in method" tab

  • Click "Google" and enable it

  • Create an app within your Firebase instance for Android, with package name > com.pensil.pensilapp

  • Run the following command to get your SHA-1 key:

keytool -exportcert -list -v \
-alias androiddebugkey -keystore ~/.android/debug.keystore
  • In the Firebase console, in the settings of your Android app, add your SHA-1 key by clicking "Add Fingerprint".

  • Download google-services.json

  • place google-services.json into /android/app/.

  1. (skip if not running on iOS)
  • Create an app within your Firebase instance for iOS, with your app package name
  • Follow instructions to download GoogleService-Info.plist
  • Open XCode, right click the Runner folder, select the "Add Files to 'Runner'" menu, and select the GoogleService-Info.plist file to add it to /ios/Runner in XCode
  • Open /ios/Runner/Info.plist in a text editor. Locate the CFBundleURLSchemes key. The second item in the array value of this key is specific to the Firebase instance. Replace it with the value for REVERSED_CLIENT_ID from GoogleService-Info.plist

Project Structure

Click to expand
|-- lib
|   |-- build.yaml
|   |-- config
|   |   |-- config.dart
|   |   '-- configs.dart
|   |-- helper
|   |   |-- constants.dart
|   |   |-- enum.dart
|   |   |-- images.dart
|   |   |-- shared_prefrence_helper.dart
|   |   '-- utility.dart
|   |-- locator.dart
|   |-- main.dart
|   |-- model
|   |   |-- actor_model.dart
|   |   |-- batch_meterial_model.dart
|   |   |-- batch_model.dart
|   |   | (8 more...)
|   |   |-- quiz_model.dart
|   |   |-- subject.dart
|   |   '-- video_model.dart
|   |-- resources
|   |   |-- contact_service.dart
|   |   |-- exceptions
|   |   |   '-- exceptions.dart
|   |   |-- repository
|   |   |   |-- batch_repository.dart
|   |   |   '-- teacher
|   |   |       '-- teacher_repository.dart
|   |   '-- service
|   |       |-- api_gatway.dart
|   |       |-- api_gatway_impl.dart
|   |       |-- dio_client.dart
|   |       |-- notification_service.dart
|   |       '-- session
|   |           |-- session.dart
|   |           '-- session_impl.dart
|   |-- states
|   |   |-- auth
|   |   |   '-- auth_state.dart
|   |   |-- base_state.dart
|   |   |-- home_state.dart
|   |   |-- notificaion
|   |   |   '-- notification_state.dart
|   |   |-- quiz
|   |   |   '-- quiz_state.dart
|   |   '-- teacher
|   |       |-- announcement_state.dart
|   |       |-- batch_detail_state.dart
|   |       |-- create_batch_state.dart
|   |       |-- material
|   |       |   '-- batch_material_state.dart
|   |       |-- poll_state.dart
|   |       '-- video
|   |           '-- video_state.dart
|   '-- ui
|       |-- app.dart
|       |-- kit
|       |   |-- alert.dart
|       |   '-- overlay_loader.dart
|       |-- page
|       |   |-- announcement
|       |   |   '-- create_announcement.dart
|       |   |-- auth
|       |   |   |-- forgot_password.dart
|       |   |   |-- login.dart
|       |   |   |-- signup.dart
|       |   |   |-- update_password.dart
|       |   |   |-- verify_Otp.dart
|       |   |   '-- widgets
|       |   |       '-- Otp_widget.dart
|       |   |-- batch
|       |   |   |-- batch_master_page.dart
|       |   |   |-- create_batch
|       |   |   |   |-- create_batch.dart
|       |   |   |   |-- device_contacts_page.dart
|       |   |   |   |-- search_student_delegate.dart
|       |   |   |   '-- widget
|       |   |   |       |-- add_students_widget.dart
|       |   |   |       |-- batch_time_slots.dart
|       |   |   |       '-- search_batch_delegate.dart
|       |   |   |-- pages
|       |   |   |   |-- batch_assignment_page.dart
|       |   |   |   |-- detail
|       |   |   |   |   |-- batch_detail_page.dart
|       |   |   |   |   '-- student_list.dart
|       |   |   |   |-- material
|       |   |   |   |   |-- batch_study_material_page.dart
|       |   |   |   |   |-- upload_material.dart
|       |   |   |   |   '-- widget
|       |   |   |   |       '-- batch_material_card.dart
|       |   |   |   |-- quiz
|       |   |   |   |   |-- quiz_list_page.dart
|       |   |   |   |   |-- result
|       |   |   |   |   |   |-- quiz_result_page.dart
|       |   |   |   |   |   '-- view_quiz_solution.dart
|       |   |   |   |   '-- start
|       |   |   |   |       |-- start_quiz.dart
|       |   |   |   |       '-- widget
|       |   |   |   |           |-- question_count_section.dart
|       |   |   |   |           '-- timer.dart
|       |   |   |   '-- video
|       |   |   |       |-- add_video_page.dart
|       |   |   |       |-- batch_videos_page.dart
|       |   |   |       |-- video_player_pag2e.dart
|       |   |   |       |-- video_player_page.dart
|       |   |   |       |-- video_preview.dart
|       |   |   |       '-- widget
|       |   |   |           '-- batch_video_Card.dart
|       |   |   '-- widget
|       |   |       '-- tile_action_widget.dart
|       |   |-- common
|       |   |   |-- pdf_view.dart
|       |   |   |-- splash.dart
|       |   |   '-- web_view.page.dart
|       |   |-- home
|       |   |   |-- home_Scaffold.dart
|       |   |   |-- home_page_student.dart
|       |   |   |-- home_page_teacher.dart
|       |   |   |-- student_list_preview.dart
|       |   |   '-- widget
|       |   |       |-- announcement_widget.dart
|       |   |       |-- batch_widget.dart
|       |   |       '-- poll_widget.dart
|       |   |-- notification
|       |   |   '-- notifications_page.dart
|       |   '-- poll
|       |       |-- View_all_poll_page.dart
|       |       |-- create_poll.dart
|       |       '-- poll_option_widget.dart
|       |-- theme
|       |   |-- extentions.dart
|       |   |-- light_color.dart
|       |   |-- text_theme.dart
|       |   '-- theme.dart
|       '-- widget
|           |-- fab
|           |   |-- animated_fab.dart
|           |   '-- fab_button.dart
|           |-- form
|           |   |-- p_textfield.dart
|           |   '-- validator.dart
|           |-- image_viewer.dart
|           |-- p_avatar.dart
|           |-- p_button.dart
|           |-- p_chiip.dart
|           |-- p_loader.dart
|           |-- p_title_text.dart
|           |-- secondary_app_bar.dart
|           '-- url_Text.dart
|-- pubspec.yaml

Dependencies

Click to expand

Server

This Pensil teaching app uses Node.JS + V8-Engine (Based on Express) in backend to store,retrive and perform logical operation on data for the application. The pensil-app-backend repo contains the server side code.

Contributing

If you wish to contribute a change to any of the existing feature or add new in this repo, send a pull request. We welcome and encourage all pull requests. It usually will take us within 24-48 hours to respond to any issue or request.

License

Copyright (c) 2021 Pensil Inc

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.

Visitors Count

Loading

You might also like...

Uproot(uprt) is a multi-platform (Windows, MacOs, and Linux) command line utility written in Dart to convert a router's DHCP IP Reservations between routers

Uproot(uprt) is a multi-platform (Windows, MacOs, and Linux) command line utility written in Dart to convert a router's DHCP IP Reservations between routers

UPROOT Uproot(uprt) is a multi-platform (Windows, MacOs, and Linux) command line utility written in Dart to convert a router's DHCP IP Reservations be

Jan 1, 2023

A tool to easily install the Android SDK command-line and platform tools.

gibadb A tool to easily install the Android SDK command-line and platform tools. For developers: This README describes the CLI tool that ships with th

Sep 22, 2022

This is app includes many app.

drawer A new Flutter application. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if th

Oct 1, 2021

Simple & Beautiful Note taking app written in dart with flutter UI toolkit.

Simple & Beautiful Note taking app written in dart with flutter UI toolkit.

Notes is a privacy oriented, Secure ,beautiful and fast application made in flutter, it supports various features like adding and saving notes. Hiding

Dec 30, 2022

Notes app using flutter, firebase and cloud firestore

notes A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you started if this is

Aug 10, 2022

This recreates a ui design for a spending tracker app in Flutter.

This recreates a ui design for a spending tracker app in Flutter.

Spending Tracker Flutter Home Screen This Flutter project recreates a minimal home screen design for a spending tracker app. The mockup was created by

Oct 12, 2022

Flutter App which lets you share memes among your friends.

Flutter App which lets you share memes among your friends.

meme_share_app About App Flutter App which lets you share memes among your friends . Here one have 2 options : NEXT : Load Next Meme. SHARE : To Share

Oct 30, 2021

A Flutter app with test

flutter_test_login A new Flutter project. Getting Started This project is a starting point for a Flutter application. A few resources to get you start

Nov 1, 2021

Simple basic authentication app designed in flutter

Simple basic authentication app designed in flutter

flutter_login_signup Simple basic authentication app designed in flutter. App design is based on Login/Register Design designed by Frank Arinze Downlo

Dec 3, 2021
Comments
  • Can use firebase for backend?

    Can use firebase for backend?

    hey bro! Hope well, Can we use firestore for backend? if yes, can you guide me to change? which one is best? Node,js or Firebase Firestore or firebase realtime? Im going to work with this project source code to learn more.

    opened by ublockme 2
  • Setup heelp

    Setup heelp

    I really like your app(hence want to improve upon it),could you please tell me how to setup this app along with the server side code to get this flutter app running, it would be very helpful

    opened by ritam749 1
Owner
Pensil Inc
Open peer to peer learning platform
Pensil Inc
Simple generative arts created using Flutter

Flutter Generative Art Try it out on DartPad Simple Generative Art created using Flutter. Watch the full video on YouTube to know how to build it from

Souvik Biswas 11 Aug 11, 2022
Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob.

clean_framework Flutter implementation of Clean Architecture, inspired on the guidelines created by Uncle Bob. see http://www.amazon.com/dp/0134494164

Acme Software 21 Dec 13, 2022
A test runner for Flutter and Dart created by Very Good Ventures 🦄

Very Good Test Runner Developed with ?? by Very Good Ventures ?? This package is a test runner for Flutter and Dart created by Very Good Ventures. It

Very Good Open Source 16 Dec 15, 2022
A Very Good Command Line Interface for Dart created by Very Good Ventures 🦄

Very Good CLI Developed with ?? by Very Good Ventures ?? A Very Good Command Line Interface for Dart. Installing $ dart pub global activate very_good_

Very Good Open Source 1.8k Jan 8, 2023
UME is an in-app debug kits platform for Flutter. Produced by Flutter Infra team of ByteDance

flutter_ume English Flutter 应用内调试工具平台 当前版本内置 10 个插件, 开发者可以创建自己的插件,并集成进 UME 平台。 详见本文为 UME 开发插件部分。 flutter_ume 快速接入 特别说明 功能介绍 为 UME 开发插件 版本说明 兼容性 单测覆盖率

Bytedance Inc. 1.8k Dec 30, 2022
Integrate easily the Paygate Global Platform into your Flutter app

Integrate easily the Paygate Global Platform into your Flutter app Features Implement payment with the Paygate Global Platform. Support for two paymen

Kokou AGBAVON 7 Dec 15, 2022
Get Version - Get the Version Name, Version Code, Platform and OS Version, and App ID on iOS and Android. Maintainer: @rodydavis

Get Version - Get the Version Name, Version Code, Platform and OS Version, and App ID on iOS and Android.

Flutter Community 87 Jan 4, 2023
A comprehensive, cross-platform path manipulation library for Dart.

A comprehensive, cross-platform path manipulation library for Dart. The path package provides common operations for manipulating paths: joining, split

Dart 159 Dec 29, 2022
Easy to use cross-platform regex replace command line util

replace Easy to use cross-platform regex replace command line util. Can't remember the arguments to the find command? or how xargs works? Maybe sed is

Rob Becker 3 Feb 1, 2022