Prove the essay is yours.
Records your real writing process — keystroke rhythm, version history, drafting time — and turns it into a verifiable report your professor can trust.
Next.js 16 · React 19 · Tailwind CSS v4 · next-intl
Turnitin and GPTZero flag real student writing as AI-generated every day. A single percentage becomes a guilty verdict, with no room to defend yourself. Writing Provenance does the opposite of AI detection: instead of guessing whether text looks AI-generated, it records the act of a human writing and packages that process into evidence you can actually submit.
- Not a detector. It doesn't claim to prove a negative — it provides verifiable process evidence.
- Private by design. All writing content, keystroke data, and version snapshots stay in your browser. Nothing is uploaded; the report is generated locally.
- Built to be submitted. Every report carries a SHA-256 hash and ships with appeal email + academic-integrity templates filled in with your report's data.
- Human-writing score
- Keystrokes recorded + median key interval (your typing rhythm over time)
- Drafting timeline and total drafting duration
- Version snapshots saved as you write
- Paste detection
- SHA-256 hash so the report cannot be altered after generation
- Appeal templates built from real student experiences
- Write in the editor — Draft your essay inside the editor. It quietly records each keystroke and saves version snapshots as you go.
- Generate the report — One click turns your writing session into a provenance report.
- Send it to your professor — Export a PDF with a SHA-256 hash and an appeal template, and submit it as evidence.
| Framework | Next.js 16 (App Router, Turbopack, RSC) |
| UI | React 19, Tailwind CSS v4, Motion |
| i18n | next-intl (English / 中文) |
| Theming | Class-based dark mode with a no-FOUC inline script |
| Storage | Browser localStorage (no server, no upload) |
# install dependencies
npm install
# start the dev server
npm run devOpen http://localhost:3000 — the landing page is at /, the editor is at /app (under a [locale] segment, e.g. /en/app).
# production build
npm run build
npm startsrc/
├── app/
│ ├── [locale]/ # i18n routing (en / zh)
│ │ ├── page.tsx # landing page
│ │ └── app/page.tsx # editor
│ ├── layout.tsx # root layout + theme script
│ └── globals.css # theme tokens + dark mode
├── components/
│ ├── landing/ # Hero, Problem, HowItWorks, ReportPreview, Faq, FinalCta, Navbar, Footer
│ └── editor/ # Editor, ReportView, AppealTemplates, AppHeader
├── i18n/ # next-intl navigation + config
messages/ # en.json, zh.json
public/ # logo, icon
- Google Docs plugin support (record from existing drafts)
- Richer keystroke-rhythm analytics
- More appeal template variants
Private project. All rights reserved.
