Project Configuration

Project configuration in Azu CLI manages project-specific settings, metadata, and build configurations. This includes project name, version, dependencies, build settings, and other project-wide options.

Overview

Project configuration is stored in multiple files and locations:

  • shard.yml: Crystal project metadata and dependencies

  • config/azu.yml: Azu-specific project configuration

  • config/application.yml: Application-wide settings

  • .env: Local environment variables (optional)

Project Metadata

Shard Configuration (shard.yml)

The shard.yml file contains Crystal project metadata and dependencies:

name: my-azu-app
version: 0.1.0

authors:
  - Your Name <your.email@example.com>

targets:
  my-azu-app:
    main: src/main.cr

dependencies:
  azu:
    github: azutoolkit/azu
    version: ~> 0.1.0
  cql:
    github: azutoolkit/cql
    version: ~> 0.1.0
  topia:
    github: azutoolkit/topia
    version: ~> 0.1.0

development_dependencies:
  spec2:
    github: waterlink/spec2.cr
    version: ~> 0.1.0

crystal: ">= 1.0.0"

license: MIT

Project Configuration (config/azu.yml)

The main Azu project configuration file:

Project Structure Configuration

Directory Layout

Configure the project directory structure:

Custom Directory Configuration

Override default directory paths:

Build Configuration

Compilation Settings

Configure Crystal compilation options:

Development Build

Development-specific build settings:

Production Build

Production build configuration:

Dependency Management

Crystal Dependencies

Manage Crystal shard dependencies:

External Dependencies

Configure external system dependencies:

Testing Configuration

Test Framework Settings

Configure testing framework and options:

Code Quality

Configure code quality tools:

Documentation Configuration

API Documentation

Configure API documentation generation:

Deployment Configuration

Deployment Settings

Configure deployment options:

Environment-Specific Configuration

Development Environment

Test Environment

Production Environment

Configuration Commands

Project Configuration Commands

Azu CLI provides commands for managing project configuration:

Configuration Management

Best Practices

Configuration Organization

  1. Separate Concerns: Keep different types of configuration separate

  2. Environment Variables: Use environment variables for sensitive data

  3. Default Values: Provide sensible defaults for all settings

  4. Validation: Validate configuration at startup

  5. Documentation: Document all configuration options

Security

  1. Secrets Management: Never commit secrets to version control

  2. Environment Variables: Use environment variables for sensitive data

  3. Access Control: Restrict access to configuration files

  4. Validation: Validate configuration values

Performance

  1. Lazy Loading: Load configuration only when needed

  2. Caching: Cache configuration values

  3. Validation: Validate configuration once at startup

  4. Optimization: Use appropriate build settings for each environment

Last updated