DigitalMeve — The .MEVE Standard: timestamp, hash, and certify digital documents.
Project description
🌍 DigitalMeve — The .MEVE Standard
👉 The first global platform to certify and verify the authenticity of your documents.
📑 Table of Contents
- Overview
- 🚀 Patches Snapshot
- 📖 TL;DR
- 🔧 Quickstart
- ✨ Features
- 📚 Documentation
- 🧪 Examples
- 🔑 Certification Levels
- 🛡 Security
- 📊 Use Cases
- 🚀 Roadmap
- 🌐 Web Integration
- 💻 Development & Contribution
- 📦 Releases
- ⚖ License
1. Overview
DigitalMeve provides a fast and universal way to verify the authenticity of any .meve proof.
Verification ensures:
- Integrity → the document has not been tampered with (SHA-256 validation).
- Timestamp → the proof contains a valid UTC timestamp.
- Issuer → the identity level (Personal, Pro, Official) matches expectations.
2. 🚀 Patches Snapshot (already implemented)
- ✅ Core library:
generator.py+verifier.py - ✅ CLI:
digitalmeve generate / verify / inspect - ✅ Tests:
pytestpassing on Python 3.10 → 3.12 - ✅ Official Schema:
schemas/meve-1.schema.json - ✅ CI/CD GitHub Actions:
- ✅ Docs: overview, specification, guides, roadmap, security, API usage
- ✅ Examples: reproducible scripts (
examples/make_examples.sh) - ✅ Governance: LICENSE, CODE_OF_CONDUCT.md, CONTRIBUTING.md, SECURITY.md
3. 📖 TL;DR
DigitalMeve defines the universal format .meve (Memory Verified) to timestamp, hash, and certify digital documents.
👉 Goal: make .meve the “PDF of digital proof”.
Why .meve?
- Existence → the file existed at a given time.
- Integrity → SHA-256 hash guarantees no tampering.
- Authenticity → issuer is visible.
- Metadata → optional custom key/values.
- Portable → sidecar
.meve.jsonworks with any file type.
4. 🔧 Quickstart
Install
pip install digitalmeve
CLI
digitalmeve generate path/to/file.pdf --issuer "Alice" digitalmeve verify path/to/file.pdf.meve.json --issuer "Alice" digitalmeve inspect path/to/file.pdf.meve.json
Python API
from digitalmeve.generator import generate_meve from digitalmeve.verifier import verify_meve
proof = generate_meve("mydoc.pdf", issuer="Alice") ok, info = verify_meve(proof, expected_issuer="Alice") print(ok, info["subject"]["hash_sha256"])
✅ With .meve, you can prove existence, integrity, and authenticity in seconds.
5. ✨ Features
- SHA-256 hashing → guarantees file integrity
- Timestamp (UTC ISO-8601) → proof of existence at a given time
- Issuer levels → Personal / Pro / Official
- JSON Schema validation → machine-verifiable against
schemas/meve-1.schema.json - Metadata embedding → free-form key/values (author, project, notes…)
- Sidecar
.meve.json→ scalable for any file type or size - CLI & Python API → generate, verify, inspect in seconds
- CI/CD ready → GitHub Actions (tests, quality, publish)
6. 📚 Documentation
- Overview
- Specification
- Generator Guide
- Verification Guide
- API Usage
- Security
- Examples
- Pro
- Official
- Roadmap
- FAQ
- Glossary
7. 🧪 Examples
-
Scripts disponibles :
- make_examples.sh → génère des fichiers
.meve - verify_examples.sh → vérifie les preuves générées
- make_examples.sh → génère des fichiers
-
Ressources complémentaires :
- examples/ (répertoire complet)
- docs/examples.md (documentation détaillée)
8. 🔑 Certification Levels
- Personal → auto-certification (preuve d’existence uniquement)
- Pro → vérification par e-mail (identité liée à un professionnel réel)
- Official → vérification institutionnelle (DNS / organisation validée)
ℹ️ Le niveau est déterminé par le verifier, et non auto-déclaré.
9. 🛡 Security
- Hashing (SHA-256) & immutability → toute modification invalide la preuve
- Schema validation (
MEVE/1) → validation automatique contre le schéma officiel - Pro verification → authentification par e-mail (magic-link)
- Official verification → vérification DNS via enregistrement TXT
_meve.<domaine> - Ed25519-ready → support des signatures numériques (
key_id,signature) - Transparency-ready → intégration future dans des journaux de transparence
🔐 Pour les détails de sécurité et la divulgation responsable, voir SECURITY.md.
10. 📊 Use Cases
DigitalMeve can be used across different contexts:
- Individuals → authorship proof, personal archives, evidence of existence
- Professionals → invoices, contracts, certifications, automation workflows
- Institutions → diplomas, tenders, official archives, public records
✅ The .meve standard ensures existence, integrity, and authenticity regardless of the use case.
11. 🚀 Roadmap
The project is evolving in clear phases:
- Phase 1 (MVP) → core library (
generator,verifier), CLI, schema v1, CI/CD pipelines - Phase 2 (≤ 6 months) → Pro/Official onboarding, PDF/PNG embedding, public API, web integration
- Phase 3 (1–2 years) → standardization, external integrations, transparency logs, broader adoption
✅ The roadmap is tracked in docs/roadmap.md.
12. 🌐 Web Integration
Planned integration with web services and APIs:
-
Endpoints (future)
POST /api/generate→ returns.meve.jsonor embedded.meve.pdf/.pngPOST /api/verify→ returns{ ok, info }JSON object
-
Integration with Framer / Websites
- Simple drag-and-drop of documents
- Proof verification directly in the browser
-
Security for the API
- CORS enabled (restricted in production)
- X-API-Key required for private endpoints
📌 More details: docs/web-integration.md
13. 💻 Development & Contribution
We welcome contributions from the community 🤝
🛠 Setup (local dev)
Clone the repository
git clone https://github.com/BACOUL/digitalmeve.git cd digitalmeve
Install in editable mode with dev dependencies
pip install -e .[dev]
🧪 Run tests
pytest -q --cov=digitalmeve --cov-report=term-missing
📐 Code style
Linting: Ruff
Formatting: Black
Type checking: mypy
📜 Contribution Guidelines
Please read CONTRIBUTING.md before submitting a PR.
Follow CODE_OF_CONDUCT.md.
All new code should include tests.
✅ Contributions = issues, documentation, code, and feedback are all welcome!
14. 📦 Releases
DigitalMeve uses semantic versioning (MAJOR.MINOR.PATCH).
🔄 Release process
-
Bump version in
pyproject.toml -
Update CHANGELOG.md
-
Commit & tag:
git commit -am "chore(release): v1.x.x" git tag v1.x.x git push --tags
- GitHub Actions (publish.yml) will automatically publish to PyPI.
📦 Current version
Development: 1.7.1-dev
Stable: see PyPI DigitalMeve
📝 Changelog
See CHANGELOG.md for a history of added / changed / fixed features.
✅ Guarantee: the latest GitHub tag = latest PyPI release.
15. ⚖ License
DigitalMeve is released under the MIT License.
- You are free to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the software.
- Attribution is required: include the original copyright and license notice in any copy.
- The software is provided “as is”, without warranty of any kind.
📄 See the full license text here → LICENSE
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file digitalmeve-1.7.1.tar.gz.
File metadata
- Download URL: digitalmeve-1.7.1.tar.gz
- Upload date:
- Size: 20.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
813ce24aab856d72414ef31ceeefece7d4d0280c901653920db18cced782f497
|
|
| MD5 |
6c99a2b776b7ae7128b5d2f4abe6dc7b
|
|
| BLAKE2b-256 |
1eb4cba5fef0726e31d298b73bf32a5866dbbb48abdc1f7cfcf100ace7921eec
|
Provenance
The following attestation bundles were made for digitalmeve-1.7.1.tar.gz:
Publisher:
publish.yml on BACOUL/digitalmeve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
digitalmeve-1.7.1.tar.gz -
Subject digest:
813ce24aab856d72414ef31ceeefece7d4d0280c901653920db18cced782f497 - Sigstore transparency entry: 480551857
- Sigstore integration time:
-
Permalink:
BACOUL/digitalmeve@21e7088fa1c0a8d7b4e4d67e4aa0a1076d0d38ec -
Branch / Tag:
refs/tags/v1.7.1 - Owner: https://github.com/BACOUL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@21e7088fa1c0a8d7b4e4d67e4aa0a1076d0d38ec -
Trigger Event:
release
-
Statement type:
File details
Details for the file digitalmeve-1.7.1-py3-none-any.whl.
File metadata
- Download URL: digitalmeve-1.7.1-py3-none-any.whl
- Upload date:
- Size: 16.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a1e829c14d39af83b44c1f4df8dda08d808809ea5d88089a46b3b35f6b228dc0
|
|
| MD5 |
a27ab12e889607931815d7ca0a1c3790
|
|
| BLAKE2b-256 |
32b545fa8418c6ae747b93628b05767da34445fe22a80eff281f54003d29c9f9
|
Provenance
The following attestation bundles were made for digitalmeve-1.7.1-py3-none-any.whl:
Publisher:
publish.yml on BACOUL/digitalmeve
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
digitalmeve-1.7.1-py3-none-any.whl -
Subject digest:
a1e829c14d39af83b44c1f4df8dda08d808809ea5d88089a46b3b35f6b228dc0 - Sigstore transparency entry: 480551860
- Sigstore integration time:
-
Permalink:
BACOUL/digitalmeve@21e7088fa1c0a8d7b4e4d67e4aa0a1076d0d38ec -
Branch / Tag:
refs/tags/v1.7.1 - Owner: https://github.com/BACOUL
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@21e7088fa1c0a8d7b4e4d67e4aa0a1076d0d38ec -
Trigger Event:
release
-
Statement type: