Skip to content

Add 30-day trial licensing system with offline key validation#2

Merged
GrigoriLab merged 8 commits into
mainfrom
feature/licensing-system
Jan 29, 2026
Merged

Add 30-day trial licensing system with offline key validation#2
GrigoriLab merged 8 commits into
mainfrom
feature/licensing-system

Conversation

@GrigoriLab

Copy link
Copy Markdown
Collaborator

Summary

  • Adds a licensing_app Django app with a singleton License model tracking trial start date and license key
  • Implements offline license key validation using HMAC-SHA256 checksum (format: POSTAI-XXXXX-XXXXX-XXXXX-XXXXX)
  • Adds GET /api/v1/license/status/ and POST /api/v1/license/activate/ endpoints
  • Adds frontend LicenseGate component that blocks app access when trial expires
  • Integrates license check in App.tsx — fetches status after backend connects, shows gate if expired

Test plan

  • python manage.py test licensing_app — 9 tests pass
  • npm run typecheck passes
  • Fresh install → status returns is_trial=true, days_remaining=30
  • Set trial_started_at 31 days ago → LicenseGate shown
  • Invalid key → error displayed
  • Valid key → gate dismissed, app loads normally

🤖 Generated with Claude Code

GrigoriLab and others added 2 commits January 29, 2026 16:15
Implements a licensing gate that allows full app use for 30 days,
then requires a POSTAI-XXXXX-XXXXX-XXXXX-XXXXX license key validated
offline via HMAC-SHA256 checksum.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@GrigoriLab GrigoriLab force-pushed the feature/licensing-system branch from 8e9d182 to c40ecc2 Compare January 29, 2026 15:16
GrigoriLab and others added 6 commits January 29, 2026 17:32
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
HMAC-SHA256 signature is computed over trial_started_at, license_key,
and activated_at fields. Verified on every status check — if any field
is edited directly in SQLite, the app treats it as expired.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Usage: python manage.py generate_license_key [-n COUNT]

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Adds a visual letter indicator next to the link icon so users can
quickly identify which variables belong to the same linked group.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Add a new 'link-groups' tab type that displays linked environment
variables grouped by link_group as side-by-side editable cards.
Supports inline value editing, adding/deleting value rows across
all linked variables, and renaming link groups. Also adds variable
reordering, order field, and linked value dropdown improvements.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@GrigoriLab GrigoriLab merged commit a6bd7ea into main Jan 29, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant