/mobile-app

Mobile app for circuitverse

Primary LanguageDartMIT LicenseMIT

CircuitVerse Mobile

Flutter CI

CircuitVerse for mobile is a cross platform appication built in flutter using CircuitVerse API.

Getting Started

Follow these instructions to build and run the project

Setup Flutter

A detailed guide for multiple platforms setup could be find here

Next Steps

  • Clone this repository.
  • cd into mobile_app.
  • flutter pub get to get all the dependencies.
  • flutter run

Android OAuth Config

This project uses flutter version 1.20.2 and hence the support for compile time variables. To use compile time variables pass them in --dart-defines as flutter run --dart-define=VAR_NAME=VAR_VALUE. Supported dart-defines include :

Facebook Configuration

  1. FB_APP_ID

Github Configuration

  1. GITHUB_OAUTH_CLIENT_ID
  2. GITHUB_OAUTH_CLIENT_SECRET

Google Configuration

For Google OAuth we use google_sign_in. You'll require a Java KeyStore(.jks)

  1. Add cv_debug.jks in android/app/.
  2. Add key.debug.properties in android/.

Note: The OAuth Configuration section is not mandatory to get started. To get hold of the above secrets/files drop a message on slack with clear requirements and we'll take care.

Project Structure

mobile-app/lib/
├── config/                         # configuration files like environment_config
├── enums/                          # enum files
|   └── view_state.dart             # defines view states i.e Idle, Busy, Error
|   └── auth_state.dart             # defines auth states i.e logged in using Google/FB/Github/Email
├── l10n/                           # localization files like intl_en.arb
├── locale/                         # AppLocalization & AppLocalizationDelegate
├── managers/
|   └── dialog_manager.dart         # show dialogs using dialog navigation key
├── models/                         # model classes
|   └── dialog_models.dart          # dialog request and response models
        ...
├── services/                       # services
|   ├── API/                        # API implementations
|   └── dialog_service.dart         # handles dialog
|   └── local_storage_service.dart  # handles local storage (shared prefs)
├── ui/                             # UI layer
|  ├── views/                       # views
|  |  └── base_view.dart
|  |  └── cv_landing_view.dart
|  |  └── startup_view.dart
|  └── components/                  # shared components
├── utils/                          # utilities such as api_utils routes.dart and styles.dart
├── viewmodels/                     # Viewmodels layer
├── app_theme.dart                  # Shared App Colors/border decorations etc.
├── constants.dart                  # App constants
├── locator.dart                    # dependency injection using get_it
├── main.dart                       # <3 of the app

Features

Groups

  • Create Groups.
  • Edit/Update/Delete Groups.
  • Add/Delete Members to the group.

Assignments

  • Create/Add Assignment to a Group.
  • Edit Assignments.
  • Check Assignment Submissions.
  • Grade Assignment's projects.
  • Update/Delete Grades.

Projects/Circuits

  • Fork Project.
  • Edit/Delete Project.
  • Add/Delete Collaborators.
  • Star Project to favourites.
  • View Projects you created/starred.

Profile

  • View/Edit Profile

Screenshots

Splash View Home View NavDrawer View Teachers View About View Contribute View Group Details View Groups View Assignment Details View Assignment Date View Assignment Time View Login View Profile View

Community

We would love to hear from you! We communicate on the following platforms:

Slack

Contributing

Whether you have some feauture requests/ideas, code improvements, refactoring, performance improvements, help is always Welcome. The more is done, better it gets.

If you found any bugs, consider opening an issue.

License

This project is licensed under the MIT License.