PHPackages                             smtech/grading-analytics - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. smtech/grading-analytics

AbandonedArchivedLibrary[Utility &amp; Helpers](/categories/utility)

smtech/grading-analytics
========================

Track and present rich feedback on faculty behavior in Canvas (akin to the course analytics data on on students)

v2.0(9y ago)201[10 issues](https://github.com/smtech/grading-analytics/issues)GPL-3.0PHP

Since Jul 2Pushed 9y ago3 watchersCompare

[ Source](https://github.com/smtech/grading-analytics)[ Packagist](https://packagist.org/packages/smtech/grading-analytics)[ RSS](/packages/smtech-grading-analytics/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (5)Dependencies (6)Versions (5)Used By (0)

Canvas Grading Analytics
========================

[](#canvas-grading-analytics)

[![Latest Version](https://camo.githubusercontent.com/91b102ab3a877bd6bba49dcd7cd74d544f110ad2f7d7733f761d95b8daa514fa/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f736d746563682f67726164696e672d616e616c79746963732e737667)](https://packagist.org/packages/smtech/grading-analytics)[![Scrutinizer Code Quality](https://camo.githubusercontent.com/65ab7614a136888ea3cb7fb2967a5d9389886841dc7d74daf6f74bd33746d55b/68747470733a2f2f7363727574696e697a65722d63692e636f6d2f672f736d746563682f67726164696e672d616e616c79746963732f6261646765732f7175616c6974792d73636f72652e706e673f623d6d6173746572)](https://scrutinizer-ci.com/g/smtech/grading-analytics/?branch=master)

Generate some reporting on faculty grading practices. To start automated data-collection, run the private/data-collection.sh script once. It will harvest the first round of data and then create a crontab job to repeat that process every night at midnight.

A description of the information collected by is [available online](https://smtech.github.io/grading-analytics/definitions.html).

### Install

[](#install)

#### Requirements

[](#requirements)

- Apache 2
- MySQL 5.5 or better
- PHP 5.6 or better
- [Composer](https://getcomposer.org)

#### Step-by-step

[](#step-by-step)

This generically follows a standard PHP app install pattern, with some additional excitement thrown in for good measure.

1. Clone the repository to your web root.

```
cd path/to/web/root
git clone https://github.com/smtech/grading-analytics.git
```

2. Run the setup script (this will install dependencies, set file permissions, schedule Cron jobs, etc. -- it's good about telling you what it's doing as it does it, and it will require a sudo password periodically).

```
cd grading-analytics
./setup
```

3. Edit the newly created `config.xml` file to include your credentials for the app (a MySQL login for data storage and credentials for Canvas to communicate with the API -- either a developer key and secret or an API access url and token).
4. Point your browser at the install to finish the app setup (this will read in the configuration file, setup database tables and so forth).

```
https://server.com/path/to/grading-analytics

```

If you need to re-run the install process later, point your browser at:

```
https://server.com/path/to/grading-analytics?action=install

```

The end result of the install process is to drop you into the LTI consumers management page, where you will need to create a new consumer key and secret.

5. Install the API in Canvas. It should be installed in the sub-account that contains all of the courses that will be monitored for example, we install into the Academics sub-account which contains all of our departmental sub-accounts. Use Canvas' "By Url" option to paste in the consumer key, shared secret and configuration URL from the consumers management page.
6. Visit the account navigation placement of the LTI to complete installation (this will capture the account ID of that root account via LTI authentication, which allows the data collection script to know *which* account to monitor).

#### Upgrading from v1.x to v2.0

[](#upgrading-from-v1x-to-v20)

The rationale for switching from the 1.x branch to 2.0 is largely framed around the change in underlying LTI authentication structure. This requires that existing users both re-run the app install process described above (steps 1-4) and then *also* re-install the LTI in Canvas (steps 5-6).

Underlying data *is* preserved between the 1.x and 2.0 branches, without change. However, the change in LTI structure also created a `tool_metadata` table in the MySQL database which replaces the `app_metadata` table, which can be deleted.

In the `course_statistics` table, I did opt to run a quick script to update all of the `analytics_page` fields to point to the new LTI install, but that's not really necessary, since, as soon as new data is collected, those old links won't be visible again.

###  Health Score

23

—

LowBetter than 26% of packages

Maintenance0

Infrequent updates — may be unmaintained

Popularity4

Limited adoption so far

Community11

Small or concentrated contributor base

Maturity66

Established project with proven stability

 Bus Factor1

Top contributor holds 94.4% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~354 days

Total

3

Last Release

3310d ago

Major Versions

v0.9 → v1.42017-03-27

v1.4 → v2.02017-06-08

### Community

Maintainers

![](https://www.gravatar.com/avatar/d0554a28104c65004c6de4d335ada25cf2763c8a9691dc5611314486d461fa4c?d=identicon)[battis](/maintainers/battis)

---

Top Contributors

[![battis](https://avatars.githubusercontent.com/u/419619?v=4)](https://github.com/battis "battis (17 commits)")[![scrutinizer-auto-fixer](https://avatars.githubusercontent.com/u/6253494?v=4)](https://github.com/scrutinizer-auto-fixer "scrutinizer-auto-fixer (1 commits)")

### Embed Badge

![Health badge](/badges/smtech-grading-analytics/health.svg)

```
[![Health](https://phpackages.com/badges/smtech-grading-analytics/health.svg)](https://phpackages.com/packages/smtech-grading-analytics)
```

###  Alternatives

[civicrm/civicrm-core

Open source constituent relationship management for non-profits, NGOs and advocacy organizations.

751291.4k40](/packages/civicrm-civicrm-core)[open-feature/sdk

PHP implementation of the OpenFeature SDK

42781.1k19](/packages/open-feature-sdk)[sylius/refund-plugin

Plugin provides basic refunds functionality for Sylius application.

701.8M20](/packages/sylius-refund-plugin)[seboettg/citeproc-php

Full-featured CSL processor (https://citationstyles.org)

771.4M32](/packages/seboettg-citeproc-php)[timeweb/phpstan-enum

Enum class reflection extension for PHPStan

443.4M27](/packages/timeweb-phpstan-enum)[php-unit-conversion/php-unit-conversion

A fully PSR-4 compatible PHP library for converting between standard units of measure.

691.2M2](/packages/php-unit-conversion-php-unit-conversion)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
