mobile-app
mobile-app copied to clipboard
Mobile App for CircuitVerse
CircuitVerse Mobile
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
intomobile_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
-
FB_APP_ID
Github Configuration
-
GITHUB_OAUTH_CLIENT_ID
-
GITHUB_OAUTH_CLIENT_SECRET
Google Configuration
For Google OAuth we use google_sign_in. You'll require a Java KeyStore(.jks
)
- Add
cv_debug.jks
inandroid/app/
. - Add
key.debug.properties
inandroid/
.
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
Dark Mode
Community
We would love to hear from you! We communicate on the following platforms:
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.