How instructure/canvas-android works
This repository contains Canvas Student, Teacher, and Parent Android apps plus shared libraries. The tree and README establish the product breadth, but sampled code is concentrated in shared API/routing behavior and a few Student and Parent components; unsampled app feature flows are therefore represented as capability nodes without asserted internal call chains.
Main entry points: parent Parent app · canvasapi2 Canvas API client · CanvasContext.kt Course context models · NotificationViewWidgetService.kt Student widgets
Components 26
Canvas Apps
- Student app
apps/student - Teacher app
apps/teacher - Parent app
apps/parent - Parent login
apps/parent/src/main/java/com/instructure/parentapp/features/login - Student pairing
apps/parent/src/main/java/com/instructure/parentapp/features/addstudent - Parent dashboard
apps/parent/src/main/java/com/instructure/parentapp/features/dashboard - Courses and grades
apps/parent/src/main/java/com/instructure/parentapp/features/courses - Alerts and settings
apps/parent/src/main/java/com/instructure/parentapp/features/alerts - Calendar and to-dos
apps/parent/src/main/java/com/instructure/parentapp/features/calendar - Parent inbox
apps/parent/src/main/java/com/instructure/parentapp/features/inbox - Student widgets
apps/student/src/main/java/com/instructure/student/widget/NotificationViewWidgetService.kt - Student routing
apps/student/src/main/java/com/instructure/student/activity/BaseRouterActivity.kt
Shared Platform
- Shared navigation
libs/interactions/src/main/java/com/instructure/interactions/router/Route.kt - Discussion routing
libs/pandautils/src/main/java/com/instructure/pandautils/features/discussion/router/DiscussionRouterFragment.kt - Enrollment repository
libs/pandautils/src/main/java/com/instructure/pandautils/data/repository/enrollment/EnrollmentRepositoryImpl.kt - Reminders
libs/pandautils/src/main/java/com/instructure/pandautils/features/reminder - Career learning
libs/horizon - PDF annotations
libs/annotations - Rich content editor
libs/rceditor
Canvas API
- Canvas API client
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2 - Enrollment manager
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/managers/EnrollmentManager.kt - Course context models
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/CanvasContext.kt - API preferences
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/utils/ApiPrefs.kt - Request callbacks
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/StatusCallback.kt
Other components
- App user
- Canvas LMS
Connections 22
- App user → Student app: uses
README.md - App user → Teacher app: uses
README.md - App user → Parent app: uses
README.md - Parent app → Parent login: supports sign-in
- Parent app → Student pairing: supports pairing
- Parent app → Parent dashboard: shows overview
- Parent app → Courses and grades: shows courses
- Parent app → Alerts and settings: manages alerts
- Parent app → Calendar and to-dos: manages schedule
- Parent app → Parent inbox: supports messaging
- Student app → Student routing: routes requests
apps/student/src/main/java/com/instructure/student/activity/BaseRouterActivity.kt - Student routing → Shared navigation: uses routes
apps/student/src/main/java/com/instructure/student/activity/BaseRouterActivity.kt - Student widgets → Canvas API client: fetches activity
apps/student/src/main/java/com/instructure/student/widget/NotificationViewWidgetService.kt - Student widgets → Course context models: renders contexts
apps/student/src/main/java/com/instructure/student/widget/NotificationViewWidgetService.kt - Parent app → Canvas API client: uses client
apps/parent/src/main/java/com/instructure/parentapp/util/BaseAppManager.kt - Teacher app → Canvas API client: uses client
apps/teacher/src/main/java/com/instructure/teacher/features/syllabus/ui/SyllabusRepositoryFragment.kt - Canvas API client → Canvas LMS: requests data
- Enrollment manager → Request callbacks: reports results
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/managers/EnrollmentManager.kt - Enrollment manager → Course context models: returns enrollments
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/managers/EnrollmentManager.kt - Enrollment repository → Canvas API client: queries enrollments
libs/pandautils/src/main/java/com/instructure/pandautils/data/repository/enrollment/EnrollmentRepositoryImpl.kt - Discussion routing → Shared navigation: routes discussion
libs/pandautils/src/main/java/com/instructure/pandautils/features/discussion/router/DiscussionRouterFragment.kt - API preferences → Course context models: stores user context
libs/canvas-api-2/src/main/java/com/instructure/canvasapi2/models/CanvasContext.kt