> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ancestraldev.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Avalex: Software Licensing and Customer Management Overview

> Avalex is an enterprise licensing platform offering sub-millisecond license validation, HWID and IP binding, and a full administration portal.

Avalex is an enterprise software licensing and customer management platform built for software vendors who need reliable, tamper-resistant license enforcement paired with a full CRM workflow. It handles everything from issuing licenses and binding them to specific hardware or IP addresses, to managing your customer base and staff permissions — all through a clean REST API and a ready-to-use administration portal.

## Components

<CardGroup cols={3}>
  <Card title="Core Engine" icon="server">
    The heart of Avalex. A high-performance REST API that handles license issuance, validation, customer records, product definitions, and audit logging. All other components communicate through it.
  </Card>

  <Card title="Admin Portal" icon="gauge">
    A React-based web interface for your operations and support teams. Create products, issue licenses, manage customers, configure staff roles, and monitor validation activity — no API knowledge required.
  </Card>

  <Card title="Client API" icon="plug">
    The public-facing validation endpoint (`POST /licenses/validate`) your deployed applications call at runtime. It is unauthenticated, rate-limited, and optimized for high-volume, low-latency checks from end-user machines.
  </Card>
</CardGroup>

## Key Capabilities

<CardGroup cols={2}>
  <Card title="License Validation" icon="circle-check">
    Validate licenses in sub-millisecond time with atomic checks for product binding, expiration, IP slots, and HWID slots. Every attempt is recorded for audit purposes.
  </Card>

  <Card title="HWID & IP Binding" icon="fingerprint">
    Bind licenses to specific hardware identifiers and IP addresses. Control exactly how many unique machines or networks can activate a single license key.
  </Card>

  <Card title="CRM Admin Portal" icon="users">
    Manage your entire customer base from one interface. Store contact details, link customers to their licenses and orders, and track account history over time.
  </Card>

  <Card title="Role-Based Access" icon="shield-check">
    Assign granular permission strings (e.g., `licenses:write`, `customers:read`) to named staff roles. A Master Admin account holds a wildcard permission and can manage every resource.
  </Card>

  <Card title="Audit Logging" icon="scroll">
    Every validation attempt — whether successful or failed — is written to an immutable history log. Use it to investigate abuse, debug integration issues, or satisfy compliance requirements.
  </Card>

  <Card title="Multi-Language SDKs" icon="code">
    Integrate license validation into your application using ready-made code examples and SDKs. The underlying REST API is language-agnostic, so any HTTP client works out of the box.
  </Card>
</CardGroup>

## How Avalex Works

Avalex follows a straightforward four-stage workflow that fits naturally into any software distribution pipeline.

First, you **create your products** in the Admin Portal or via the API — defining a product name, whether it requires a license, and the maximum number of IP addresses and hardware identifiers a single license may cover.

Next, you **issue licenses** by associating a product with a customer record. Each license carries an expiration timestamp and inherits the slot limits you defined on the product.

Then, you **embed the Client API call** inside your application. On launch (or at a regular interval), your app calls `POST /licenses/validate` with the license ID, product ID, and a hardware identifier computed on the end-user's machine. Avalex responds with `{"valid": true}` or `{"valid": false}` in milliseconds.

Finally, you **monitor activity in the Admin Portal**. The validation history, customer records, and audit logs give you full visibility into how your licenses are being used — and flag anything that looks suspicious.

<Note>
  The public validation endpoint (`POST /licenses/validate`) is unauthenticated and designed for high-volume calls from your deployed applications. You do not need to embed any credentials in your distributed software to perform license checks.
</Note>
