Skip to content

Getting started

Licence key

A licence covers production domains: a registrable domain such as example.com, with all of its subdomains. Single covers one domain. Unlimited covers any number of domains, your clients' sites included, each registered on your licence. Installing it on your customers' own servers, or shipping it inside a product you sell, needs a different agreement: email [email protected].

The one thing to do

Put the licence key from your purchase email in your app's .env:

FAST_TABLES_LICENCE=the-key-from-your-purchase-email

Nothing else. On your local machine the table works at once. When you deploy, the plugin takes care of the rest.

What happens on a production host

The first time a panel page renders on a production host, the plugin finishes serving the page and then makes one request to fasttables.com with your licence key and the host name. The answer is a domain key: a signed token naming the domains your licence covers. The plugin stores it in storage/app/fast-tables/licence.key and checks it offline from then on. Your app does not contact fasttables.com again.

The first domain on a licence is issued in that first request. A few cases wait for a quick check on our side, usually within a day: a second domain on a licence whose tier we have not seen yet, the any-host key of an Unlimited licence, a renewal. While a domain waits, the plugin asks again once a day, the table keeps working, and nothing is shown for 14 days.

Hosts that need no key

Nothing is sent, checked or shown on:

  • localhost, loopback and private network addresses;
  • *.test, *.local, *.localhost, *.example, *.invalid, *.internal;
  • hosts whose first label is dev, test, staging, stage, preview, local, sandbox or qa, such as staging.example.com or preview-42.example.com;
  • any application whose APP_ENV is local, development, dev, testing, test, staging, stage, preview, sandbox or qa.

The commands

php artisan fast-tables:licence --host=example.com

prints what the key covers and whether it fits the host: the licence id, tier, domains, the last release date it covers, and where the domain key came from.

php artisan fast-tables:activate

fetches the domain key now, for the host of APP_URL (or --host=), instead of waiting for the first page or the next daily attempt. It also prints the domain key as a .env line:

FAST_TABLES_LICENCE=FT1....

Use that form where storage does not survive a deploy (Vapor, read-only containers, images built in CI) or where production must not make outbound requests: a domain key in .env is checked offline and never activates anything. FAST_TABLES_ACTIVATION=false turns the automatic request off; FAST_TABLES_KEY_PATH moves the stored key.

Vapor, Docker and read-only hosts

Automatic activation stores the domain key under storage/app. That works wherever storage persists between deploys: a VPS, Forge, Ploi, Cloudways, a Kubernetes pod with a persistent volume. It does not work where every deploy or every container starts from a clean filesystem, because the key would be fetched again and again and the grace period would still run out. On those platforms, activate once from your machine and ship the domain key as an environment variable:

php artisan fast-tables:activate --key=the-key-from-your-purchase-email --host=app.example.com

This can run from any checkout, your laptop included; it only talks to fasttables.com. Copy the FAST_TABLES_LICENCE=FT1.... line it prints:

  • Laravel Vapor: add it to the environment in the Vapor dashboard or with vapor env:pull / vapor env:push, then deploy. Set FAST_TABLES_ACTIVATION=false too, so cold starts never try the request. A Vapor staging environment with APP_ENV=staging needs no key at all. For production, register your own domain: the default *.vapor-farm-….com address Vapor gives you belongs to Vapor, not to you.
  • Docker, Kubernetes, Fly, Render, Heroku-style platforms: pass it as a runtime environment variable or secret, not baked into the image. Images built in CI never need the Privato key at all.
  • Read-only or config:cached filesystems: same; a domain key in .env is read through the config and needs no writable path. If you would rather keep automatic activation, point FAST_TABLES_KEY_PATH at a writable, persistent location.

A domain key in .env is checked offline and never activates anything, so none of these hosts make an outbound request. One domain key covers every host it names: an Unlimited licence with several domains needs one .env value, refreshed with fast-tables:activate after you add a domain or renew.

Several servers, several licences

Each app's .env holds the key of the licence it belongs to.

  • An Unlimited licence on many servers: every server activates with the same key and its host is added. Servers activated earlier keep their own domain key, which still covers them. Nothing to redeploy.
  • An Unlimited licence: the same key everywhere; every server gets the any-host key, so there is no domain list to keep.
  • Two apps on one domain, such as admin.example.com and app.example.com, on a Single licence: both activate with the same key; the second is instant because it is under the same domain.
  • An agency with an Unlimited licence: register each client's domain on it. The site keeps working when the client hosts it themselves, because the domain is on your key.
  • An agency with a Single licence per client site: each site has its own key in its own .env.
  • A site handed over from an agency to its client: either the domain stays registered on the agency's Unlimited licence, or the client buys their own licence and puts its key in .env; the next activation moves the domain over.

What a missing key does

The table renders exactly as licensed. After 14 days, signed-in panel users see a small dismissible notice linking here, and the log gets one line a day. Nothing else changes. FastTablesPlugin::make()->licenceNotice(fn ($user) => $user->isAdmin()) limits who sees it; config('fast-tables.licence_notice') set to false turns it off.

Renewals and new releases

A domain key covers every release published before your licence's update date. A release published after it shows the notice until you renew; after renewing, the plugin picks up a new domain key on its next daily attempt, or run fast-tables:activate. Versions you already have keep working. Where the key lives in .env (Vapor, containers), renewing means running fast-tables:activate again, replacing the FAST_TABLES_LICENCE value and deploying once.

Managing domains by hand

fasttables.com/licence lets you sign in with your licence key to see the domains on it, remove one, request the any-host key of an Unlimited licence, or copy the current domain key. Most people never need it.

What is sent

One request per host, at activation: your licence key, the host name and the plugin version. Nothing about your data, your users or your tables, and nothing on page loads. See the privacy policy.