{"id":18544471,"url":"https://github.com/instructure/canvas-android","last_synced_at":"2025-04-12T22:25:28.591Z","repository":{"id":37444141,"uuid":"179290947","full_name":"instructure/canvas-android","owner":"instructure","description":"Canvas Android apps","archived":false,"fork":false,"pushed_at":"2025-04-10T16:56:00.000Z","size":73403,"stargazers_count":136,"open_issues_count":4,"forks_count":102,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-04-10T18:11:37.865Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Kotlin","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/instructure.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-04-03T13:00:40.000Z","updated_at":"2025-04-09T14:12:45.000Z","dependencies_parsed_at":"2023-10-24T09:24:52.452Z","dependency_job_id":"e95e0e9f-eaff-409d-8947-ee2c1a5de3b9","html_url":"https://github.com/instructure/canvas-android","commit_stats":null,"previous_names":[],"tags_count":152,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instructure%2Fcanvas-android","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instructure%2Fcanvas-android/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instructure%2Fcanvas-android/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/instructure%2Fcanvas-android/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/instructure","download_url":"https://codeload.github.com/instructure/canvas-android/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248638922,"owners_count":21137730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-06T20:16:39.422Z","updated_at":"2025-04-12T22:25:28.548Z","avatar_url":"https://github.com/instructure.png","language":"Kotlin","funding_links":[],"categories":["Android Apps (Search Results)"],"sub_categories":[],"readme":"# Instructure Android\n\nInstructure's Open Source Android Code\n\nThe open source code provided by the Android Team at Instructure.\n\n## Building\n\nFirst, install the Flutter SDK using the instructions found [here](https://flutter.dev/docs/get-started/install).\n\nNext, run `./open_source.sh` once. You may now use Gradle to build the apps.\n\n### Student, Teacher and native Parent\n\n1. Open `apps/build.gradle` in Android Studio\n```\nAndroid Studio \u003e Import Project \u003e canvas-android/apps/build.gradle\n```\n\n2. Select the app from the list of configurations (`student` or `teacher`)\n3. Tap 'Run' (`^R`) to run the app\n\n### Flutter Parent\n\n1. Open `canvas-android/apps/flutter_parent` in Android Studio.\n2. Make sure the `main.dart` configuration is selected\n3. Tap 'Run' (`^R`) to run the app\n\nApp | Command | Build Status\n--- | --- | ---\nStudent | `./gradle/gradlew -p apps :student:assembleDevDebug` | [![Student build Status](https://app.bitrise.io/app/9417c28328c02b7c/status.svg?token=D7fHdeUlz19PurcEPIQNzw\u0026branch=master)](https://app.bitrise.io/app/9417c28328c02b7c)\nTeacher | `./gradle/gradlew -p apps :teacher:assembleDevDebug` | [![Teacher build Status](https://app.bitrise.io/app/4f5339d0ec3436ca/status.svg?token=ATqaYNnYyS4eDUxc0d9EZQ\u0026branch=master)](https://app.bitrise.io/app/4f5339d0ec3436ca)\nParent  | (in apps/flutter_parent) `flutter pub get; flutter build apk` | [![Parent build Status](https://app.bitrise.io/app/39fd3312f33be200/status.svg?token=jiiPeSZlSxrx5lkqccLN1Q\u0026branch=master)](https://app.bitrise.io/app/39fd3312f33be200)\n\n## Running tests\n\nTo run unit tests for Student, Teacher and native Parent\n1. Open the Build Variants window and set the variant to `qaDebug` for the app that you wish to test.\n2. You can run the tests by tapping on the play button next to the test case or the test class.\n\n## Applications:\n\n#### The Applications we have published on Google Play.\n\nApp | Description\n--- | ---\n[Canvas Student][canvas]      | Used by Students all over the world to be smarter, go faster, and do more.\n[Canvas Teacher][teacher]     | User by Teachers all over the world to update course content or grade on the go.\n[Canvas Parent][parent]       | Used by Parents all over the world to be parents.\n\n[canvas]: https://play.google.com/store/apps/details?id=com.instructure.candroid\n[teacher]: https://play.google.com/store/apps/details?id=com.instructure.teacher\n[parent]: https://play.google.com/store/apps/details?id=com.instructure.parentapp\n\n## Modules:\n\n#### These are things that we use internally to create our applications.\n\nModule | Description\n   --- | ---\nannotations     | A wrapper for the PSPDFKit library and logic for annotation handling and converting in PDF documents.\nbuildSrc        | Library for common gradle dependencies and gradle transformers that are used by the project.\ncanvas-api-2    | Canvas for Android Api used to talk to the Canvas LMS and is testable.\ndataseedingapi  | gRPC wrapper for Canvas that enables creating data to test the apps.\nDocumentScanner | A wrapper for document scanning features.\nespresso        | The UI testing library built on Espresso.\ninteractions    | Interactions for navigation used in the apps.\nlogin-api-2     | The libarary used to make logging in and getting a token relative easy and is testable.\npandares        | Collection of resources used in our apps.\npandautils      | The core library for the apps. All the common code is implemented here that is reused by the 3 apps.\nrceditor        | A wrapper for rich content editing used in our apps.\nrecyclerview    | A fancy RecyclerView library that supports expanding and collapsing, pagination, and stuff like that. (deprecated)\n\n#### Our applications are licensed under the GPLv3 License.\n\n```\nCopyright (C) 2016 - present  Instructure, Inc.\n\nThis program is free software: you can redistribute it and/or modify\nit under the terms of the GNU General Public License as published by\nthe Free Software Foundation, version 3 of the License.\n\nThis program is distributed in the hope that it will be useful,\nbut WITHOUT ANY WARRANTY; without even the implied warranty of\nMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\nGNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License\nalong with this program.  If not, see \u003chttp://www.gnu.org/licenses/\u003e.\n ```\n\n#### Our Modules are licensed under the Apache v2 License.\n\n```\nCopyright (C) 2016 - present Instructure, Inc.\n\nLicensed under the Apache License, Version 2.0 (the \"License\");\nyou may not use this file except in compliance with the License.\nYou may obtain a copy of the License at\n\n    http://www.apache.org/licenses/LICENSE-2.0\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstructure%2Fcanvas-android","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Finstructure%2Fcanvas-android","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Finstructure%2Fcanvas-android/lists"}