feat: add license activation system with feature gates
- License key generator tool at ~/Desktop/LicenseGenerator - Backend validator route (GET /api/license/status, POST /api/license/activate) - Activation page in sidebar with status, key input, and free/premium feature list - useLicense hook for frontend license state - Feature gates: premium eligibility buttons (DDMA, DeltaIns, Tufts, United, CCA) disabled without license - Feature gates: premium claim buttons (CCA, Delta MA, United, Tufts) and all PreAuth buttons disabled without license - Free features always active: MassHealth eligibility/claim, Documents, Payments, Backups, Reports - README: license key generator usage instructions Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
41
README.md
41
README.md
@@ -387,6 +387,47 @@ Each office runs its own `cloudflared` tunnel on its own PC. Ports never conflic
|
||||
|
||||
---
|
||||
|
||||
## License Key Generator
|
||||
|
||||
The license key generator is a private tool that lives only on your dev PC. Use it to generate a new license key for any office every 3 months.
|
||||
|
||||
**Location:** `/home/ff/Desktop/LicenseGenerator/`
|
||||
|
||||
**Generate a 3-month key (default):**
|
||||
```bash
|
||||
node /home/ff/Desktop/LicenseGenerator/generate-license.js
|
||||
```
|
||||
|
||||
**Generate a key with a custom duration:**
|
||||
```bash
|
||||
node /home/ff/Desktop/LicenseGenerator/generate-license.js --months=6
|
||||
```
|
||||
|
||||
**Example output:**
|
||||
```
|
||||
=== Dental App License Key ===
|
||||
|
||||
License Key: DENTAL-8ED7AAEF3E0CA008D98CC1E0-2026-08-26
|
||||
Expires: 2026-08-26
|
||||
Duration: 3 month(s)
|
||||
|
||||
Paste this key into the Activation page in the app.
|
||||
```
|
||||
|
||||
**Workflow:**
|
||||
1. Office pays renewal fee
|
||||
2. Run the generator script above
|
||||
3. Copy the License Key
|
||||
4. Paste it into the **Activation** page in the app (via RustDesk or in person)
|
||||
5. Record the key, office name, expiry, and payment in your records
|
||||
|
||||
**Important — `secret.key`:**
|
||||
- `/home/ff/Desktop/LicenseGenerator/secret.key` is the private secret used to sign all keys
|
||||
- Back it up on a USB drive or password manager
|
||||
- If lost, all existing keys become invalid and new keys must be issued to all offices
|
||||
|
||||
---
|
||||
|
||||
## Claude Code Memory
|
||||
|
||||
Claude Code (the AI assistant used to build this project) stores its memory locally on the PC. This memory contains project context, architecture decisions, feature history, and working preferences — allowing Claude to pick up where it left off in new sessions.
|
||||
|
||||
Reference in New Issue
Block a user