Configuration Reference
Ruflet reads project settings from ruflet.yaml in the project root. Set RUFLET_CONFIG to read a different file. If ruflet.yaml is absent, Ruflet also checks ruflet.yml.
app
app:
name: my_app
display_name: My App
package_name: my_app
organization: com.example
version: 1.0.0+1
description: A Ruflet app.
company_name: Example Company
bundle_identifier: com.example.my_app
android_application_id: com.example.my_app
ios_bundle_identifier: com.example.my_app
macos_bundle_identifier: com.example.my_app
linux_application_id: com.example.my_app
short_name: MyApp
backend_url: https://app.example.com
nameis the project and package-safe app name.display_nameis the user-facing name.package_nameis the generated package name.organizationsets the reverse-domain organization.orgis an accepted
alias.
versionis the release version and build number.descriptionandcompany_namesupply package metadata.bundle_identifiersupplies a shared Apple bundle id. The platform-specific
android_application_id, ios_bundle_identifier, macos_bundle_identifier, and linux_application_id override generated ids.
short_nameis used by platforms with a shorter display-name field.backend_urlis required for server-driven builds and must be reachable from
the installed client.
For compatibility, Ruflet also accepts backend_url, server_url, or ruflet_client_url at the document root or under app. Prefer app.backend_url in new projects.
extensions
Extensions add optional client packages. Supported keys are:
extensions:
- audio
- audio_recorder
- camera
- charts
- code_editor
- color_pickers
- datatable2
- flashlight
- geolocator
- lottie
- map
- permission_handler
- qrcode_scanner
- rive
- secure_storage
- video
- webview
Selecting qrcode_scanner also adds the required camera declarations. Rebuild after changing extensions. Protected service declarations can add required extensions automatically, so applications normally declare device permissions in services.yaml instead of duplicating them here.
assets
assets:
dir: assets
splash_screen: assets/splash.png
splash_dark: assets/splash-dark.png
icon_launcher: assets/icon.png
icon_android: assets/icon-android.png
icon_ios: assets/icon-ios.png
icon_web: assets/icon-web.png
icon_windows: assets/icon-windows.png
icon_macos: assets/icon-macos.png
dir is the application asset directory. Shared splash and launcher files are defaults; platform icon keys override the shared launcher image.
build
build:
assets_dir: assets
splash_screen: assets/splash.png
splash_dark: assets/splash-dark.png
splash_dark_image: assets/splash-dark.png
icon_launcher: assets/icon.png
splash_color: "#FFFFFF"
splash_dark_color: "#0B0B0B"
icon_background: "#FFFFFF"
theme_color: "#FFFFFF"
Build-level asset keys override their counterparts under assets. splash_color_dark is accepted as a compatibility alias for splash_dark_color.
services.yaml
Keep protected device access in services.yaml. When both configuration files contain services, services.yaml takes precedence.
services:
- camera:
description: Allows users to capture profile photos.
- microphone:
description: Allows users to record voice notes.
- location:
description: Shows nearby places.
- motion:
description: Detects device movement.
The supported declarations are camera, microphone, location, and motion. A declaration can be a string or a mapping with a user-facing description. Ruflet uses these entries to add client extensions, Android permissions, iOS usage-description keys, and related platform configuration.
Request access only in response to the related user action, and write a description that explains the benefit rather than restating the permission name.
Environment variables
RUFLET_CONFIGselects a project configuration file.RUFLET_PORTsupplies the server port when code or the CLI does not override
it.
RUFLET_HOSTsupplies the host forRuflet::App.RUFLET_CLIENT_DIRselects an existing managed Flutter client directory for
build and debug commands.
RUFLET_FLUTTER_VERSIONselects the managed Flutter SDK version before
Ruflet falls back to the project's .fvmrc and then its built-in default.
Rails applications normally configure build metadata in config/initializers/ruflet.rb; see Rails API Reference.