Skip to main content

Documentation 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.

All runtime configuration in Boletilandia is driven by the .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.
APP_NAME
string
default:"Laravel"
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).
APP_ENV
string
default:"local"
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.
APP_KEY
string
default:""
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.
The application will throw a RuntimeException and refuse to boot if APP_KEY is blank. Always run php artisan key:generate immediately after copying .env.example.
APP_DEBUG
boolean
default:"true"
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.
APP_TIMEZONE
string
default:"UTC"
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.
APP_URL
string
default:"http://localhost"
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.
APP_LOCALE
string
default:"en"
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.
APP_FALLBACK_LOCALE
string
default:"en"
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.
APP_FAKER_LOCALE
string
default:"en_US"
The locale Faker uses when generating fake data in factories and seeders. Only relevant during testing and seeding.

Maintenance

APP_MAINTENANCE_DRIVER
string
default:"file"
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

BCRYPT_ROUNDS
integer
default:"12"
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.
LOG_CHANNEL
string
default:"stack"
The primary log channel. stack aggregates multiple channels defined under LOG_STACK. Other single-channel options include single, daily, syslog, and errorlog.
LOG_STACK
string
default:"single"
The comma-separated list of channels that form the stack channel. Defaults to single, which writes all logs to storage/logs/laravel.log.
LOG_DEPRECATIONS_CHANNEL
string
default:"null"
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.
LOG_LEVEL
string
default:"debug"
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.
DB_CONNECTION
string
default:"sqlite"
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.
DB_HOST
string
default:"127.0.0.1"
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.
DB_PORT
integer
default:"3306"
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.
DB_DATABASE
string
default:"laravel"
Name of the database (or the absolute path to the SQLite file when DB_CONNECTION=sqlite). Commented out in .env.example.
DB_USERNAME
string
default:"root"
Database user with CREATE, ALTER, and SELECT privileges. Commented out in .env.example.
DB_PASSWORD
string
default:""
Password for DB_USERNAME. Leave empty for passwordless local setups. Commented out in .env.example.

Switching to MySQL

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=boletilandia
DB_USERNAME=root
DB_PASSWORD=your_password

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.
SESSION_DRIVER
string
default:"database"
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.
SESSION_LIFETIME
integer
default:"120"
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.
SESSION_ENCRYPT
boolean
default:"false"
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.
SESSION_PATH
string
default:"/"
The URL path for which the session cookie is available. The default / makes the cookie available for the entire application.
SESSION_DOMAIN
string
default:"null"
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

BROADCAST_CONNECTION
string
default:"log"
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.

Mail

Boletilandia uses Laravel’s mail system (via Jetstream/Fortify) for password-reset and email-verification flows.
MAIL_MAILER
string
default:"log"
The mail transport. log writes emails to the Laravel log file (useful during development). For production use smtp, mailgun, ses, or postmark.
MAIL_HOST
string
default:"127.0.0.1"
SMTP server hostname. Only used when MAIL_MAILER=smtp.
MAIL_PORT
integer
default:"2525"
SMTP port. Common values: 587 (STARTTLS), 465 (SSL/TLS), 25 (plain). The default 2525 is compatible with services like Mailtrap.
MAIL_USERNAME
string
default:"null"
SMTP authentication username. Set to null to disable authentication.
MAIL_PASSWORD
string
default:"null"
SMTP authentication password.
MAIL_ENCRYPTION
string
default:"null"
Encryption protocol for the SMTP connection. Accepted values: tls, ssl, or null (no encryption).
MAIL_FROM_ADDRESS
string
default:"hello@example.com"
The “From” address on all outgoing mail. Change to a real address your domain is authorized to send from.
MAIL_FROM_NAME
string
default:"${APP_NAME}"
The “From” display name. Inherits from APP_NAME by default.

Queue & Cache

QUEUE_CONNECTION
string
default:"database"
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.
CACHE_STORE
string
default:"database"
The cache backend. Defaults to database, using the cache table. Other options: file, redis, memcached, array.
CACHE_PREFIX
string
default:""
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.
REDIS_CLIENT
string
default:"phpredis"
The PHP Redis client library. Accepted values: phpredis (requires the phpredis PHP extension — default) or predis (pure-PHP, install via composer require predis/predis).
REDIS_HOST
string
default:"127.0.0.1"
The hostname of your Redis server.
REDIS_PASSWORD
string
default:"null"
The Redis authentication password. Set to null for unauthenticated local Redis instances.
REDIS_PORT
integer
default:"6379"
The port Redis listens on. 6379 is the standard default.
MEMCACHED_HOST
string
default:"127.0.0.1"
The hostname of your Memcached server. Only relevant when CACHE_STORE=memcached.

AWS / S3 Storage

These variables configure the AWS S3 driver for the s3 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.
AWS_ACCESS_KEY_ID
string
default:""
Your AWS IAM access key ID. Required when using FILESYSTEM_DISK=s3 or explicitly storing files on S3.
AWS_SECRET_ACCESS_KEY
string
default:""
The secret key paired with AWS_ACCESS_KEY_ID. Keep this value out of version control.
AWS_DEFAULT_REGION
string
default:"us-east-1"
The AWS region where your S3 bucket is hosted (e.g., us-east-1, eu-west-1).
AWS_BUCKET
string
default:""
The name of your S3 bucket. Event images would be uploaded here when the S3 disk is active.
AWS_USE_PATH_STYLE_ENDPOINT
boolean
default:"false"
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

FILESYSTEM_DISK
string
default:"local"
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:
storage/app/public/imagen_path/<filename>
The path is saved in the imagen_path column of the evento table. The storage:link command creates a symlink at public/storagestorage/app/public, making the image accessible at:
http://your-app.com/storage/imagen_path/<filename>
Run php artisan storage:link once after installation. Without it, uploaded event images will not display in the browser.

Frontend (Vite)

VITE_APP_NAME
string
default:"${APP_NAME}"
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 receives usertype = '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:
php artisan tinker
Or using a raw SQL statement:
UPDATE users SET usertype = 'admin' WHERE email = 'admin@example.com';
There is no seeder or artisan command to seed an admin user. You must manually set usertype = 'admin' in the database. Without this step, the account will be treated as a regular user and will not have access to the admin dashboard or event management routes.
Once the 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.

Build docs developers (and LLMs) love