All runtime configuration in Boletilandia is driven by theDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/AndresLopezCorrales/Boletilandia/llms.txt
Use this file to discover all available pages before exploring further.
.env file in the project root. The repository ships an .env.example with safe, development-oriented defaults so you can be up and running quickly — but several values must be changed before the application is usable, and others need attention before you go to production. This page documents every variable from .env.example, grouped by concern.
App Settings
These variables control the application’s identity, environment, debugging behavior, and URL.The human-readable name of the application. Displayed in notifications, emails (via
MAIL_FROM_NAME="${APP_NAME}"), and the browser tab via VITE_APP_NAME="${APP_NAME}". Set this to Boletilandia (or your branded name).The current environment. Accepted values are
local, staging, and production. Laravel uses this to adjust error verbosity and certain service behaviors. Set to production on live servers.The 32-character AES-256-CBC encryption key used to encrypt cookies, sessions, and other sensitive values. Must not be empty. Generate it with
php artisan key:generate.When
true, full stack traces are shown on errors. Set to false in production to display a generic error page and avoid leaking internal paths or credentials.The default PHP timezone for the application. All date and time values (event schedules, ticket timestamps) are interpreted relative to this timezone. Change to your local timezone (e.g.,
America/Mexico_City) when deploying regionally.The canonical URL of the application. Used by Artisan to generate absolute URLs (e.g., in password-reset emails) and by Sanctum to derive stateful domains. Update to your actual domain in production.
Localization
These variables control the application’s language and locale settings.The default locale used by Laravel’s translation helpers. Change to
es or another locale code if you want Spanish-language validation messages and date formatting.The locale Laravel falls back to when a translation key is not found in
APP_LOCALE. Keep this as en unless you have a full alternative locale set up.The locale Faker uses when generating fake data in factories and seeders. Only relevant during testing and seeding.
Maintenance
The driver used to store the maintenance-mode flag.
file writes a marker to the filesystem (default). database stores it in the cache table — useful when multiple server instances share the same database. Corresponds to the APP_MAINTENANCE_STORE variable (commented out in .env.example) when using the database driver.Security
The number of rounds used when hashing passwords with bcrypt. Higher values are more secure but slower. The default of
12 is appropriate for most production workloads; increase to 13 or 14 on hardware that can sustain the extra cost.Logging
These variables control where and how Laravel writes application logs.The primary log channel.
stack aggregates multiple channels defined under LOG_STACK. Other single-channel options include single, daily, syslog, and errorlog.The comma-separated list of channels that form the
stack channel. Defaults to single, which writes all logs to storage/logs/laravel.log.The channel to send PHP and Laravel deprecation notices to. Set to
null to discard them (the default), or point to a channel to surface them during upgrades.The minimum severity level that will be logged. Levels from lowest to highest:
debug, info, notice, warning, error, critical, alert, emergency. Set to error or higher in production to reduce log noise.Database
Boletilandia defaults to SQLite for zero-config local development. Switch to MySQL or MariaDB for production.The database driver. Supported values (from
config/database.php): sqlite, mysql, mariadb, pgsql, sqlsrv. When set to sqlite, the remaining DB_* variables below are not required.Hostname or IP of the database server. Only used when
DB_CONNECTION is not sqlite. Commented out in .env.example because the default driver is SQLite.Port the database server listens on. Default is
3306 (MySQL/MariaDB). Use 5432 for PostgreSQL or 1433 for SQL Server. Commented out in .env.example.Name of the database (or the absolute path to the SQLite file when
DB_CONNECTION=sqlite). Commented out in .env.example.Database user with
CREATE, ALTER, and SELECT privileges. Commented out in .env.example.Password for
DB_USERNAME. Leave empty for passwordless local setups. Commented out in .env.example.Switching to MySQL
Session
Boletilandia uses the database session driver by default. The session is critical for PDF ticket delivery — the generated download URL is stored in the session immediately after a successful purchase.Where user sessions are stored. Defaults to
database (the sessions table, created by the 0001_01_01_000000_create_users_table migration). Boletilandia uses the session to hand off the generated PDF ticket immediately after purchase — ensure the session driver is reliable in production.How long (in minutes) a session remains valid after the last activity. After this window the user is logged out automatically. The default of
120 minutes is suitable for most ticketing workflows.When
true, session data is encrypted at rest using APP_KEY before being written to the session store. Set to true in production for an extra layer of security.The URL path for which the session cookie is available. The default
/ makes the cookie available for the entire application.The domain/subdomain the session cookie is scoped to. Set to your root domain (e.g.,
.boletilandia.com) to share sessions across subdomains. null defaults to the current host.Broadcasting
The broadcast driver. Defaults to
log, which writes broadcast events to the log file (no real-time WebSocket connection). Switch to pusher, ably, or reverb to enable live event broadcasting if you extend the application with real-time features.The mail transport.
log writes emails to the Laravel log file (useful during development). For production use smtp, mailgun, ses, or postmark.SMTP server hostname. Only used when
MAIL_MAILER=smtp.SMTP port. Common values:
587 (STARTTLS), 465 (SSL/TLS), 25 (plain). The default 2525 is compatible with services like Mailtrap.SMTP authentication username. Set to
null to disable authentication.SMTP authentication password.
Encryption protocol for the SMTP connection. Accepted values:
tls, ssl, or null (no encryption).The “From” address on all outgoing mail. Change to a real address your domain is authorized to send from.
The “From” display name. Inherits from
APP_NAME by default.Queue & Cache
The queue driver. Defaults to
database, which stores jobs in the jobs table created by the 0001_01_01_000002_create_jobs_table migration. Other options: sync (immediate, no worker needed — useful for local dev), redis, sqs.The cache backend. Defaults to
database, using the cache table. Other options: file, redis, memcached, array.A string prepended to all cache keys. Useful when multiple applications share the same cache store (e.g., the same Redis instance or database). Leave empty for single-application deployments.
Redis
Redis can be used as a faster alternative for cache, queue, and session storage. The.env.example ships with phpredis client settings pointing to a local Redis instance.
The PHP Redis client library. Accepted values:
phpredis (requires the phpredis PHP extension — default) or predis (pure-PHP, install via composer require predis/predis).The hostname of your Redis server.
The Redis authentication password. Set to
null for unauthenticated local Redis instances.The port Redis listens on.
6379 is the standard default.The hostname of your Memcached server. Only relevant when
CACHE_STORE=memcached.AWS / S3 Storage
These variables configure the AWS S3 driver for thes3 filesystem disk. They are not required for the default local or public disk configurations but are provided in .env.example for teams that want to store uploaded event images in an S3-compatible bucket.
Your AWS IAM access key ID. Required when using
FILESYSTEM_DISK=s3 or explicitly storing files on S3.The secret key paired with
AWS_ACCESS_KEY_ID. Keep this value out of version control.The AWS region where your S3 bucket is hosted (e.g.,
us-east-1, eu-west-1).The name of your S3 bucket. Event images would be uploaded here when the S3 disk is active.
Set to
true when using an S3-compatible service (e.g., MinIO, LocalStack) that requires path-style URLs instead of virtual-hosted-style URLs.Storage
The default filesystem disk. Set to
public if you want file operations to default to the publicly accessible disk. For event image uploads, Boletilandia writes to storage/app/public/imagen_path/, which maps to the public disk regardless of this setting.How event image storage works
When an admin uploads a cover image for an event, the file is stored at:imagen_path column of the evento table. The storage:link command creates a symlink at public/storage → storage/app/public, making the image accessible at:
php artisan storage:link once after installation. Without it, uploaded event images will not display in the browser.
Frontend (Vite)
Exposes the application name to Vite and the front-end JavaScript bundle. Inherits from
APP_NAME by default. Available inside JavaScript files as import.meta.env.VITE_APP_NAME.Creating the First Admin User
Boletilandia does not ship a database seeder or an Artisan command for creating admin accounts. Every new registration goes through the standard Jetstream flow and automatically receivesusertype = 'user' (the column default defined in the 2024_10_10_032435_update_users_table migration).
To promote a user to admin, update the usertype column directly in the database after they register:
usertype is set to admin, the admin middleware (registered in bootstrap/app.php as \App\Http\Middleware\Admin::class) will grant access to the protected admin routes.