Everything below is stored only in this browser. There is no server and no analytics. Google Drive is optional and read-only: connect it in the Drive section to sync word counts from the Docs you map. Export a backup before clearing data.
Google Drive
Optional. Connect your school Google account, paste the folder that holds this assignment's Docs, and DraftPulse matches file names to students. Access is read-only, the sign-in token stays in memory for this tab, and document text is counted then discarded. Syncing repeats on the scan cadence set above. No roster yet? The first scan does the setup: it names the assignment after the folder and turns each Doc's file name into a student. Import a roster CSV at any time to swap in your own student names. The sample roster stays out of Drive because its students have no Google Docs behind them.
Teacher or IT setup: switch Drive sync on for this site
Drive sync stays off until a public OAuth client ID is added to config.js beside this page. One person with Google Cloud console access does this once for everyone:
Pick or create a Google Cloud project, then enable the Google Drive API and the Google Docs API for it.
On the OAuth consent screen, choose External for a school account and add the read-only scopes DraftPulse asks for: Drive metadata and Google Docs. Add Drive read access too if teachers should rebuild past days from a Doc's version history.
Create an OAuth client ID of type Web application and add this page's origin (scheme and host only, no path) under Authorized JavaScript origins . That public ID is everything DraftPulse needs, so nothing else has to be copied into this page.
Paste that client ID into googleClientId in config.js, redeploy, reload this page, then choose Connect Google Drive .
Before a whole school uses it: Drive metadata is a restricted scope, so Google requires app verification (including a CASA security assessment) before accounts outside your test users can approve it, and some Workspace domains must trust the app first. Until then, add each teacher as a test user. The sign-in token is kept in memory for this tab only, so a reload or a new tab asks you to connect again; nothing is written to storage, cookies, or the URL.
Console notices: Google's own sign-in script can log a Cross-Origin-Opener-Policy message about window.closed while it opens the account window. It comes from Google's script, not from DraftPulse, and sign-in still works. Scan and sync results appear in this panel, so nothing here depends on the browser console.
Connect Google Drive
Disconnect
Pause Drive sync
Assignment folder link or ID
Demo mode: scanning shows fake students and reports instead of reading the Docs.
Scan folder
Sync now
Rebuild past days
Choose Rebuild past days to count the words typed on days you did not open DraftPulse. It reads each Doc's saved versions, which asks Google for read access to those Docs once and needs edit access on them; today's count always comes from live syncing.
Only file names, IDs, timestamps, and word counts are saved in this browser; document text is never stored. Disconnecting clears the token, and the next sync asks you to reconnect.
Local data & backups
Import a CSV with course, assignment, student, words columns (optional docUrl, stage ), or restore a DraftPulse JSON backup. The first CSV import or backup restore replaces the sample roster; later imports merge with the roster already on this device.
Download JSON backup
Import CSV / backup
Load sample roster
Paste CSV or backup JSON
Import pasted data
Clear local data
Removes DraftPulse's saved data and leaves an empty dashboard. The sample roster is a session-only preview and is never reloaded automatically. This cannot be undone; download a backup first.
Type Clear Local Data to confirm
Clear Local Data