# License Forge Architecture

## Stack

- PHP 8.2+
- Laravel 11
- Blade templates
- Tailwind CSS via CDN for shared-hosting-safe deployment
- Alpine.js via CDN
- MySQL or MariaDB
- Database queues and standard cron scheduling

## Core modules

- Customer authentication and verified accounts
- Admin dashboard and role-gated operations
- Product catalog with versioned releases
- License issuing, activation, deactivation, transfer requests, and verification
- Subscription, invoice, transaction, and ticket tracking
- API request signing and offline license cache issuance
- Browser installer for hosting environments without SSH access

## Key business rules

- One activation slot is only consumed when a new normalized domain is activated.
- Reinstalling on the same domain revalidates the existing activation and does not consume a new slot.
- Suspended, revoked, or expired licenses fail verification and update checks.
- Offline validation is time-bounded with a configurable grace window.
- Domain validation is normalized to avoid false mismatches from protocol or `www`.
