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. download the repo
$ pensil-inc/flutter_pensil_app.git
$ cd flutter_pensil_app/
3. setup the firebase app (used for google authentication)
- you’ll need to create a firebase instance. follow the instructions at https://console.firebase.google.com.
- 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/
.
- (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
- intl
- dio
- share
- share
- dartz
- get_it
- freezed
- provider
- equatable
- file_picker
- filter_list
- build_runner
- url_launcher
- add_thumbnail
- image_picker
- firebase_auth
- firebase_core
- google_sign_in
- json_annotation
- webview_flutter
- contacts_service
- permission_handler
- firebase_messaging
- json_serializable
- freezed_annotation
- shared_preferences
- advance_pdf_viewer
- cached_network_image
- cached_network_image
- flutter_launcher_icons
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.
Comments are closed.