Skip to content
Shortspan

Search documentation

Find a page by title, section, or summary.

Requirements

The runtime, database, queue, and mail transport a working deployment needs.

Runtime

ComponentRequirementNotes

PHP

8.3 or newer

With ext-sodium. It is not optional - it is the encryption.

Composer

2.x

For dependencies.

Node

20 or newer

Build-time only. Not needed at runtime.

Web server

nginx or Caddy

Serving public/, with PHP-FPM.

TLS

Required

The API refuses plaintext outside loopback.

Database

PostgreSQL 14+ is the recommended production database. MySQL 8 works. SQLite is used for tests and is fine for a single-user evaluation, but not for anything with concurrent writes.

Cache, queue, and sessions all default to database-backed drivers, so a working deployment needs no Redis. Redis is worth adding once queue throughput matters, but it is not a prerequisite.

Processes

Three, and two of them are silent when they stop.

ProcessCommandWhat breaks without it

Web

PHP-FPM behind nginx

Everything. Obvious.

Queue worker

php artisan queue:work

No email is ever delivered. No verification, no password reset, no security notification, no invitation.

Scheduler

* * * * * php artisan schedule:run

Temporary grants never expire. Expiry reminders stop. Health checks stop. Rollups stop.

Mail

A real transport is required in production. The default log driver writes mail to a file and sends nothing, which means no email verification, no password reset, and no platform-admin invitation - and since admin access requires a verified address, nobody can become an administrator either.

Resend is what the application is configured for; any Laravel-supported transport works. Before sending, verify the domain and publish SPF, DKIM, and DMARC records. An unauthenticated domain gets security notices filed as spam, which is the one place they are useless.

Several templates invite a reply, and individual messages override the sender per category - security@, support@, privacy@, sales@. Those addresses need to accept mail.

Network

  • A TLS certificate for the application hostname. The API refuses plaintext.

  • A second hostname for the documentation, if you want it served separately - see Configuration reference.

  • Outbound access to your mail provider, and to your billing provider if you use one.

  • Outbound access to wherever you host CLI artifacts, if you distribute your own build.

Sizing

The workload is small. Requests are short, payloads are tiny, and the expensive operation - unwrapping two keys and decrypting a value - is measured in microseconds.

ScaleAdequate

A team of ten

1 vCPU, 2 GB, and a managed database on the smallest tier.

A hundred people

2 vCPU, 4 GB, plus a separate queue worker.

Beyond that

Scale the web tier horizontally; the database is the first thing to feel it, and the audit log is what grows.

Plan storage growth around audit entries rather than secrets. Secrets are small and bounded by how many resources you register; audit entries accumulate for as long as people work.

Something here wrong or missing? Tell us.