Metadata-Version: 2.4
Name: alcove-dux
Version: 0.1.1
Summary: Local-first plagiarism and text-reuse evidence toolkit
Author: Spitfire Cowboy
License-Expression: Apache-2.0
License-File: LICENSE
Keywords: document-analysis,local-first,plagiarism,semantic-similarity,text-reuse
Classifier: Development Status :: 2 - Pre-Alpha
Classifier: Environment :: Console
Classifier: Intended Audience :: Education
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Topic :: Text Processing :: Linguistic
Requires-Python: >=3.11
Provides-Extra: alcove
Requires-Dist: alcove-search>=0.4; extra == 'alcove'
Provides-Extra: all
Requires-Dist: chromadb>=0.5; extra == 'all'
Requires-Dist: datasets>=3.0; extra == 'all'
Requires-Dist: faiss-cpu>=1.8; extra == 'all'
Requires-Dist: fastapi>=0.115; extra == 'all'
Requires-Dist: httpx>=0.27; extra == 'all'
Requires-Dist: pypdf>=6.10.2; extra == 'all'
Requires-Dist: python-docx>=1.1; extra == 'all'
Requires-Dist: python-multipart>=0.0.9; extra == 'all'
Requires-Dist: pyyaml>=6.0; extra == 'all'
Requires-Dist: sentence-transformers>=3.0; extra == 'all'
Requires-Dist: uvicorn[standard]>=0.30; extra == 'all'
Provides-Extra: api
Requires-Dist: fastapi>=0.115; extra == 'api'
Requires-Dist: httpx>=0.27; extra == 'api'
Requires-Dist: python-multipart>=0.0.9; extra == 'api'
Requires-Dist: uvicorn[standard]>=0.30; extra == 'api'
Provides-Extra: dev
Requires-Dist: build>=1.2; extra == 'dev'
Requires-Dist: pytest-cov>=5.0; extra == 'dev'
Requires-Dist: pytest>=8.0; extra == 'dev'
Requires-Dist: ruff>=0.6; extra == 'dev'
Requires-Dist: twine>=5.0; extra == 'dev'
Provides-Extra: documents
Requires-Dist: pypdf>=6.10.2; extra == 'documents'
Requires-Dist: python-docx>=1.1; extra == 'documents'
Provides-Extra: eval
Requires-Dist: datasets>=3.0; extra == 'eval'
Provides-Extra: semantic
Requires-Dist: faiss-cpu>=1.8; extra == 'semantic'
Requires-Dist: sentence-transformers>=3.0; extra == 'semantic'
Provides-Extra: vector-chroma
Requires-Dist: chromadb>=0.5; extra == 'vector-chroma'
Provides-Extra: vector-zvec
Requires-Dist: zvec>=0.2; extra == 'vector-zvec'
Provides-Extra: yaml
Requires-Dist: pyyaml>=6.0; extra == 'yaml'
Description-Content-Type: text/markdown

<h1 align="center">Alcove Dux</h1>

<p align="center">
  <strong>Local-first similarity evidence for teachers and academic reviewers — you decide what it means.</strong>
</p>

<p align="center">
  <a href="https://github.com/Spitfire-Cowboy/alcove-dux/actions/workflows/ci.yml"><img src="https://github.com/Spitfire-Cowboy/alcove-dux/actions/workflows/ci.yml/badge.svg" alt="CI" /></a>
  <img src="https://img.shields.io/badge/status-pre--alpha-orange.svg" alt="Pre-alpha" />
  <img src="https://img.shields.io/badge/python-3.11%20%7C%203.12-blue.svg" alt="Python 3.11 and 3.12" />
  <a href="https://github.com/Spitfire-Cowboy/alcove-dux/blob/develop/LICENSE"><img src="https://img.shields.io/badge/license-Apache%202.0-lightgrey.svg" alt="License" /></a>
</p>

![Alcove Dux review screenshot](docs/assets/hero.png)

Alcove Dux is an open-source, local-first toolkit for K-12 teachers, instructors, academic reviewers, and small institutions that need transparent similarity review without sending student documents to a closed service.

Alcove Dux is a review aid, not a verdict machine. It helps teachers and reviewers inspect similarity evidence on their own hardware, and unlike Turnitin and similar cloud services, Alcove Dux never uploads student documents to a third-party server. Similarity evidence stays on your device and is reviewed by you, not scored by an algorithm and stored by a vendor.

## ⚡ Start Here

- [Live Demo](https://spitfire-cowboy.github.io/alcove-dux/): try a browser-only sample scan.
- [Quick Start](docs/quickstart.md): install locally and run a sample scan.
- [Institutional Deployment](docs/deployment.md): run Alcove Dux on a shared departmental or school server.
- [Demo Walkthrough](docs/demo.md): run the sample demo and inspect the generated report.
- [CLI Usage](docs/cli.md): command reference for pairwise scans, corpus scans, semantic matching, and calibration.
- [Reports](docs/reports.md): JSON, public HTML, local review HTML, and report privacy behavior.
- [Privacy Boundary](docs/privacy.md): what Alcove Dux does and does not expose.

## 🔎 What It Does

An instructor uploads two documents, runs a scan, and gets a side-by-side highlighted report — locally, without sending text to any server.

No command line is required for the main workflow: open the local dashboard in your browser, upload documents, and review the results there.

## 🖥️ Dashboard preview

The local dashboard is the main review surface for most teachers and academic reviewers:

![Alcove Dux dashboard screenshot](docs/assets/dashboard-screenshot.png)

- Local FastAPI dashboard for document upload, scan creation, and side-by-side review.
- Text, Markdown, PDF, and DOCX ingestion.
- Exact, fuzzy, semantic, and reranked similarity evidence.
- Pairwise scans and local-corpus scans from the CLI.
- Screen-reader-friendly dashboard and HTML reports with privacy-preserving exports.

## 👩‍🏫 Who This Is For

- Classroom teachers reviewing student submissions.
- Instructors comparing assignments against known sources.
- Department or institution-level academic integrity reviewers.
- Small schools and colleges that want local control instead of cloud document retention.

## 🏫 Institutional deployment quick path

For a shared departmental or school installation, the fastest path is usually Docker Compose on an inward-facing server:

```bash
docker compose up --build
```

Then open `http://localhost:8000` on that machine, or place it behind your institution's normal internal access controls. See [Deployment Notes](docs/deployment.md) for role separation, retention, and hosted-mode guidance.

## 📚 Documentation

- [Research Notes](docs/research.md) and [Benchmarks](docs/benchmarks.md)
- [AI-use stigma note](docs/research-ai-use-stigma.md): why self-reported AI use is biased in education and what that changes for Alcove Dux.
- [Configuration](docs/configuration.md), [Datasets](docs/datasets.md), and [Multilingual Detection](docs/multilingual.md)
- [Vector Stores](docs/vector-stores.md) and [Alcove Plugin Plan](docs/alcove-plugin.md)
- [Deployment Notes](docs/deployment.md), [Hosted Hardening](docs/hosted-hardening.md), and [Repository Setup](docs/repository-setup.md)
- [Roadmap](roadmap.md) and [Demo Video Script](docs/demo-video.md)

## 📦 Package

The package name is `alcove-dux`, the import path is `alcove_dux`, and the CLI command is `alcove-dux`. The core engine can be used as a CLI, Python library, local FastAPI app, or Alcove plugin.

## 🤝 Contributing

Alcove Dux is maintained as a public open-source project. Contributions are encouraged to keep the local-first privacy boundary intact, include tests for behavioral changes, and keep private corpora, generated reports, model caches, and vector indexes out of public commits.

See [CONTRIBUTING.md](CONTRIBUTING.md) for setup, checks, and privacy rules.
