PatoLab reads all runtime configuration from aDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/lerichardv/patolab-platform/llms.txt
Use this file to discover all available pages before exploring further.
.env file located in the root of your project. A fully commented template is shipped as .env.example — copy it to .env before running the application for the first time and fill in the values that differ from the defaults. Variables marked required have no sensible default and must be set explicitly; leaving them blank will cause the application to fail to boot or behave incorrectly.
Application
The human-readable name of your PatoLab installation. Displayed in the browser
title, email subjects, and anywhere
config('app.name') is referenced.Deployment environment. Accepted values:
local, staging, production.
Laravel uses this value to decide which service providers and exception-handling
behaviours to activate.A 32-character base64 encryption key used to sign cookies, encrypt sessions, and
protect queue payloads. Always generate a fresh key for every installation.
When
true, full stack traces and variable dumps are rendered in the browser on
unhandled exceptions. Must be set to false in any public-facing environment.The canonical URL of your PatoLab instance, including the protocol
(
https://). Used when generating links in emails, PDF headers, and
the Inertia SSR response.Default locale for translations and date/number formatting.
Set to
es for Spanish-speaking deployments.Fallback locale used when a translation key is missing in
APP_LOCALE.Database
PatoLab supports SQLite, MySQL, and PostgreSQL out of the box. The default configuration targets SQLite, which requires zero setup and works perfectly for development and small deployments.Database driver. Accepted values:
sqlite, mysql, pgsql.Hostname or IP of the database server. Not used for SQLite.
TCP port of the database server. Common defaults:
3306 (MySQL), 5432
(PostgreSQL). Not used for SQLite.Database name (MySQL/PostgreSQL) or absolute path to the
.sqlite file.
When left blank with DB_CONNECTION=sqlite, Laravel resolves to
database/database.sqlite automatically.Database user. Not used for SQLite.
Database password. Not used for SQLite.
Queue & Session
The queue driver. PatoLab relies on the queue for PDF generation and
notification dispatch. The default
database driver stores jobs in the
jobs table — no Redis or Beanstalkd required.Start a worker with:Where to persist sessions. The default
database driver is recommended for
production. Avoid the file driver on load-balanced setups.Number of minutes before an idle session expires. Increase this value
for labs where pathologists tend to keep long-running browser sessions.
When
true, session data is encrypted at rest using APP_KEY.
Recommended for HIPAA-adjacent deployments.Transport driver.
log writes emails to the Laravel log (useful for
development). Switch to smtp, ses, or mailgun in production.SMTP server hostname.
SMTP port. Common values:
587 (STARTTLS), 465 (SSL), 25 (plain).SMTP username credential.
SMTP password credential.
The
From: address for all outbound mail. Set to a real mailbox monitored
by your lab team.The
From: display name. Defaults to the value of APP_NAME.Permanent or temporary access token issued by the Meta developer portal.
The numeric Phone Number ID from your WhatsApp Business Account dashboard.
This is not the actual phone number — it is the internal identifier Meta
assigns to the registered number.
Your WhatsApp Business Account (WABA) ID. Note: the variable name contains a
typo in the upstream source (
BUSINEESS) — reproduce it exactly as shown.Meta Graph API version to use for outbound requests. Update this when Meta
deprecates an older version.
A secret string you define, used during the webhook verification handshake
when registering your callback URL in the Meta developer portal.
PDF / Browsershot
PatoLab generates specimen reports as PDF files using Spatie Browsershot, which launches a headless Chromium process. All four paths must be valid executables on the server.Shell
PATH extension injected before invoking Node/Chromium. Ensures
system binaries are discoverable in restricted environments such as
www-data or container runtimes.Absolute path to the
node executable. Verify with which node.Absolute path to the
npm executable. Required by Browsershot for resolving
the Puppeteer package location.Absolute path to the Chromium or Google Chrome executable.
On Debian/Ubuntu you can install it with:On systems where the binary lives elsewhere (e.g.,
/usr/bin/chromium-browser),
update this variable accordingly.Collaboration Server
PatoLab includes a real-time collaborative report editor powered by Hocuspocus v4 (WebSocket) + Yjs + TipTap. The collaboration server runs as a separate Node.js process ineditor-collaboration-server/.
WebSocket URL the React frontend connects to for real-time document
collaboration. This variable is prefixed with
VITE_ so it is embedded
into the frontend bundle at build time — changing it after a build requires
a rebuild.Logging
Logging channel configuration. The
stack channel aggregates multiple
drivers defined in config/logging.php.Minimum log severity to record. Accepted values follow PSR-3:
debug, info, notice, warning, error, critical, alert, emergency.
Set to warning or error in production to reduce log volume.Quick-start checklist
After copying.env.example to .env, work through this checklist before
your first php artisan migrate:
