PATRONHUBDEVS // DOCS
Documentation
Installation guides, API reference, security architecture, and contribution notes for all PatronHubDevs products.
Getting Started
All PatronHubDevs desktop products are standalone Windows executables. No Python installation required on the end-user machine.
git clone https://github.com/j3fcruz/<product>
cd <product>
pip install -r requirements.txt
python main.py
Python 3.10+ required. Windows 10 / 11 (64-bit) for all products.
NoteArmor Secure Notepad Pro
Authentication sequence
- User provides password → PBKDF2-HMAC-SHA256 (600,000 iterations) → master key
- Keyfile SHA-3-512 hash → mixed into key derivation chain via HKDF
- TOTP code validated against RFC 6238 secret → final session token issued
- Three independent subkeys derived: encryption, HMAC, metadata — none stored
Atlas PDF Secure Vault
Atlas PDF wraps existing PDF files in an AES-256 encrypted container. The original PDF is never modified — the encrypted container is a new file. Access requires Password + Keyfile + TOTP (same architecture as NoteArmor).
Product pageMG SDK Licensing
Embed the same licensing engine used by NoteArmor into your own product.
from mg_sdk import LicenseValidator
validator = LicenseValidator(public_key_pem=PUBLIC_KEY)
result = validator.validate(license_file_path)
if result.valid:
launch_application()
else:
show_license_error(result.reason)
Products API
Public read-only endpoint returning the product catalogue.
# Response:
[
{
"slug": "notearmor",
"name": "NoteArmor Secure Notepad Pro",
"price": 12.99,
"status": "available"
}, ...
]
Security notes
- Never use the development Flask server in production. Use Gunicorn behind nginx.
- SECRET_KEY, MASTER_SECRET, and JWT_SECRET must be set as environment variables. The app will refuse to start if they are missing.
- RSA private keys must never be committed to version control. Use the provided key generation script.
- Internal maintenance routes are network-restricted via Cloudflare WAF and bearer-token guarded.
- Rate limiting uses in-memory storage by default. Set RATELIMIT_STORAGE_URL=redis://... for multi-worker production deployments.
Contributing
- Fork the repository on GitHub
- Create a feature branch:
git checkout -b feature/your-feature - Write tests for any new behaviour
- Ensure no secrets, compiled files, or runtime state is committed (see .gitignore)
- Open a pull request with a clear description of what changed and why