Type something to search...

Architecture Overview

Project structure and design decisions

Architecture Overview

Understanding Astrolock’s design and structure.

Dual System Architecture

Astrolock consists of two main systems:

User-facing command-line interface built with Bashly.

  • Purpose: Content management, site configuration, deployment
  • Technology: Bash scripts
  • Entry point: bin/astrolock
  • Definition: cli/bashly.yml

Key Directories

See Directory Structure for detailed file organization.

Configuration Flow

  1. User site has config/*.json files
  2. Environment variables (ASTROLOCK_CONFIG_DIR) point to user config
  3. Build process uses src/lib/config/getSiteConfig.ts to load config
  4. Astro components use dynamic config loaders
make build
    └── yarn build
        └── astro build
            └── Reads config via getSiteConfig()
            └── Processes content collections
            └── Generates dist/

Content Collections

Astro content collections defined in src/content.config.ts:

  • blog - Blog posts
  • authors - Author profiles
  • pages - Static pages
  • user-guide - Documentation
  • [dynamic] - User-defined media collections

Environment Variables

VariablePurpose
ASTROLOCK_CONFIG_DIRUser’s config directory
ASTROLOCK_PUBLIC_DIRUser’s public assets directory
ASTROLOCK_CONTENT_DIRUser’s content directory

Design Principles

Info

Astrolock follows these core principles across all components.

  1. Separation of concerns - CLI handles user interaction, Astro handles generation
  2. Convention over configuration - Sensible defaults everywhere
  3. Environment-based configuration - Same codebase for all sites
  4. Static output - No runtime dependencies