# Zero Cheating

A Chrome extension that replays the edit history Google Docs already keeps, so a teacher can see how an essay grew, not just read the final draft.

Year: 2024
Stack: JavaScript, Chrome Extension APIs, IndexedDB, React, Node, MongoDB

## 01 / The problem

A finished essay does not show its own history. A teacher cannot tell a steady week of writing from a rewrite done the night before, not just from reading the final text. Google Docs already keeps every change, but nothing was turning that record into something a teacher could actually read.

## 02 / What I built

- **A replay of the whole document** The extension reads the revision history Google Docs already keeps, then replays it as a diff with word counts, so you can watch the writing grow.
- **A timeline you can scrub** Pauses, bursts and a words per minute read out, across the whole document.
- **Flags from plain math** Long gaps with no activity, unusual typing speed, and writing time far below what the document should have taken.
- **Nothing leaves the browser** All writing data stays in IndexedDB, on the student's machine. Only account and sign in calls reach the server.
- **An admin dashboard for accounts** Bulk actions, CSV import and export, and live updates over sockets.
- **A Canvas connection with a token** Reads courses and assignments with a teacher supplied access token, straight from the Canvas API.

## 03 / Key decisions

### 1. Nothing records a keystroke

The extension re-reads the revision history Google Docs already keeps and replays it. It never runs a keylogger over a student's shoulder.

### 2. Writing data stays on the student's machine

It lives in IndexedDB in the browser, which keeps the sensitive part private and keeps server cost near zero, at the price of losing the record if the browser data gets cleared.

### 3. Every flag is plain arithmetic, not a model

Gaps, typing speed and expected editing time are all computed from Google's own changelog, so every flag can be explained to a student in one sentence.

### 4. Long documents stay fast

Diffs render in a bounded window and the timeline gets downsampled, so a 20,000 word essay does not lock up the page.

### 5. Account changes push live, not on next login

When an admin bans or edits an account, the change reaches that person's signed in extension right away over a socket, instead of waiting for their next request.

## 04 / Outcome

Zero Cheating is live, with the extension listed on the Chrome Web Store and used by more than 1,000 people.

A teacher opens a document and sees how it grew, not just how it ended.

[See zerocheating.com](https://zerocheating.com)