# Learn more from the documentation 
# https://luminova.ng/docs/0.0.0/global/env-variables

# APPLICATION

app.name = Your App
app.hostname = example.com

# Set default application timezone
app.timezone = UTC

# Set default application locale
app.locale = en

# Application version code.
# Used for identifying the current application version and for static caching.
app.version = 1.0.0

# Application assets version.
# Can be incremented to force cache refresh for static assets.
app.file.version = 1.0.0

# Application encryption key.
# Auto-generated during Luminova installation. Can be manually changed if needed.
app.key=

# Application API URI prefix.
# This will serve as the base URI for all API endpoints.
app.api.prefix = api

# Modes: development, staging, production
app.environment.mood = development

# Set application HTML encoding
app.charset = utf-8

# Set the internal encoding for multibyte string functions
app.mb.encoding = UTF-8

# CLI
# [production, development and testing]
;cli.environment.mood = testing 

# PAGE CACHING
 
default.cache.control = no-store, max-age=0, no-cache
;page.caching = false
;page.caching.immutable = false
;page.cache.expiry = 86400

# List of previous application versions (${app.version}) for cache fallback.
# If a cache entry doesn't exist in the latest version, the system will check these older versions.
# Example:
;page.cache.app.versions = [1.1.0, 1.2.0]

# List of views or URI patterns that should always use the latest application version (${app.version}).
# Entries here will ignore older cache and always use fresh content from the latest version.
# Example:
;page.cache.latest.content = [/]

# Enable serving static cached pages to improve performance.
# Specify file types using pipe symbols (|) for multiple extensions.
# Example: page.caching.statics = html|json|text|xml|css|js
# Do NOT include spaces around the pipe symbols (e.g., html|xml|css).
# This allows URLs to be accessed with or without the file extension, e.g.:
#   https://example.com/blog.html or https://example.com/blog
# Works with template view class content rendering types.
# The cached content type will determine the static access format.
;page.caching.statics = html|json

# Determines whether query parameters are included in cache keys.
# true  - Treat different query strings as separate cache entries.
# false - Ignore query parameters to reduce unnecessary cache fragmentation.
page.cache.query.params = false

# Preferred cache driver for PSR cache interface.
# filesystem or memcached
;preferred.cache.driver = filesystem

# PAGE OPTIMIZATION

# Enable HTML minification before sending to the client.
# Removes comments and extra whitespace in HTML documents.
# When using the template view class `codeblock` method, you can retain spacing 
# inside <pre></pre> or <code></code> blocks and optionally add a copy button.
;page.minification = false

script.execution.limit = 30
script.ignore.abort = false
script.output.handler = ob_gzhandler
enable.encoding = true
compression.encoding = gzip
compression.level = 6

# LOGGER

# The maximum size (in bytes) for each log level (e.g., 10485760 for 10 MB). 
# When this limit is reached, a backup of the log file is created if 
# `logger.create.backup` is set to true; otherwise, the logs are cleared.
;logger.max.size = 10485760

# Whether a backup of the log file should be created when the `logger.max.size` limit is reached. 
# Set to 'true' to automatically create a backup and empty the current log file; 
# 'false' to empty the log file only.
;logger.create.backup = true

# Email address
# Comment, leave empty or null if not in use. See /app/Errors/Defaults/mailer.php
;logger.mail.logs = logs@example.com

# Remote server address
# Comment, leave empty or null if not in use. See /app/Errors/Defaults/remote.php
;logger.remote.logs = https://example.com/api/logs

# TELEGRAM BOT
# Comment, leave empty or null if not in use.
;telegram.bot.token=
;telegram.bot.chat.id=

# SESSION

# Enable strict IP login session
;session.strict.ip = false

# DEBUGGING

debug.display.errors = false
debug.show.tracer = true
;debug.alert.performance.tips = true;
;debug.show.performance.profiling = true
;debug.api.performance.profiling = true
debug.coding.ide = vscode
;debug.catch.inline.errors = false
;throw.cli.exceptions = false

# MEMORY CACHE CONFIGURATION
;memcached.persistent.id = null
;memcached.key.prefix = null
;memcached.host = localhost
;memcached.port = 11211
;memcached.server.weight = 0

# EMAIL
; 465, 587, 25
smtp.use.credentials = false
smtp.use.password = false
smtp.debug = false
smtp.host =
smtp.port = 465
smtp.username = 
smtp.password = 
smtp.email.sender = no-reply@yourdomain.com
smtp.encryption = tls
smtp.charset = utf8

# DATABASE

database.hostname = localhost
database.port = 3306
database.charset = utf8mb4
database.connection.pool = false
database.max.connections = 3
database.connection.retry = 1
database.persistent.connection = true
database.emulate.prepares = true

# Choose the cache driver for database builder class 
# Option (memcached or filesystem)
database.caching.driver = filesystem

# Choose any of these 2 database connection driver [MYSQLI or PDO]
database.connection = PDO

# Specify your PDO DBMS version or driver type [mysql, sqlite, oci, dblib, cubrid, sqlsrv and pgsql]
# This is only applicable when database.connection is PDO. Not required for MYSQLI
database.pdo.version = mysql

# Specify your mysql and pgsql driver socket path if you plan to open connection in CLI mode
# Or if you want to force connection through set database.mysql.socket to true and also seth your socket path.
;database.mysql.socket = false
;database.mysql.socket.path = /path/to/var/mysql.sock


# Database Connection Details for production

database.username = 
database.name = 
database.password = 

# Database Connection Details for development

database.development.username = root
database.development.name = my-database-name
database.development.password = 

# Your database sqlite connection path when using PDO driver and sqlite
;database.sqlite.path = writeable/database/production.sqlite
;database.development.sqlite.path = writeable/database/development.sqlite

# FEATURES
# Enable or disable features. Value must be any of these [enable or disable] case sensitivity
# https://luminova.ng/docs/0.0.0/introduction/features

# Enable or disable PHP attribute routing.
feature.route.attributes = enable

# When attribute routing is enabled, use this option to cache route definitions in production.
# This ensures optimal performance instead of repassing attributes on each request
feature.route.cache.attributes = disable

# Enable or disable dependency injection in routable controller methods
# or method-based routable callback handlers.
feature.route.dependency.injection = disable

# Enable or disable loading of custom global helper functions.
# Functions defined in /app/Utils/Global.php will be automatically loaded at runtime.
feature.app.dev.functions = disable

# Enable or disable HMVC architecture.
# When enabled, Luminova uses modules with HMVC structure instead of plain MVC.
feature.app.hmvc = disable

# Enable or disable class name aliases.
# Allows giving a class a different alias name.
feature.app.class.alias = disable

# Enable or disable the application service factory.
feature.app.services = disable

# Enable or disable PSR-4 autoloading for custom classes.
feature.app.autoload.psr4 = disable


# DEVELOPMENT ONLY

# The start URL of your project's front controller this will be used wile generating sitemap.
# This variable defines the starting URL that leads to your project's front controller,
# where all incoming requests are initially routed. 
# Ensure that this URL points to the front controller 
# (e.g., http://localhost/public/, http://localhost/my-project/public/, http://localhost:port/)
# This can also be set in `app/Config/Sitemap.php` or using `--url` option in command

;dev.app.start.url = https://localhost/your-project-path/public/