Giter Club home page Giter Club logo

mobile-app's Introduction

CircuitVerse Mobile

CI CD

CircuitVerse for mobile is a cross platform application 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

Setup Project

  • Clone this repository using git clone https://github.com/CircuitVerse/mobile-app.git.
  • cd into mobile_app.
  • flutter pub get to get all the dependencies.
  • Generate files using Builder Runner (required)
flutter pub run build_runner build --delete-conflicting-outputs
  • Switch to mobile-app's git hooks (optional but recommended)
git config core.hooksPath .githooks/

# Make sure npm is installed to run the next command
npm install -g @commitlint/config-conventional @commitlint/cli

Mobile App enforces Conventional Commits specification, make sure to read and follow them.

Running the app

Make sure you have a connected Android/iOS device/simulator and run the following command to build and run the app in debug mode.

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 NavDrawer View Login Teachers View About View Contribute View Groups View Assignment Details View Assignment Date View Assignment Time View Login View Register View Profile View

Dark Mode

Splash View Dark Home View Dark Featured Circuit View Dark About View Dark Contribute View Dark Teachers View Dark Groups View Dark Login View Dark Register View Dark Assignment Details View Dark Assignment Date View Dark Assignment Time View Dark Profile View Dark

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.

mobile-app's People

Contributors

manjotsidhu avatar nitish145 avatar aman-singh7 avatar neha62-lit avatar itsadityaksingh avatar aadeesh11 avatar tachyons avatar noman2002 avatar jaggu21 avatar pavanjoshi914 avatar pratikbaid3 avatar jassi-singh avatar suyash-patil avatar omegaviv avatar dependabot[bot] avatar imgbot[bot] avatar aditya-150 avatar anshnrag02 avatar imgbotapp avatar m-a-d-a-r-a avatar nishantchandla avatar pranavmasekar avatar roopak99 avatar paradox50 avatar cyber-venom003 avatar guptapriyanshu7 avatar icoder-007 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.