gui/pkg/config/docs/architecture.md
Snider 032c426ac3 feat: initial Wails v3 desktop framework
GUI packages, examples, and documentation for building
desktop applications with Go and web technologies.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 08:44:23 +00:00

1.9 KiB

Architecture Overview

This project implements a modular configuration system with a Go backend and an Angular frontend, orchestrated by a CLI runner.

Components

The architecture consists of three main components:

  1. Backend Library (pkg/config)

    • Responsibility: Manages configuration loading, saving, and persistence.
    • Tech Stack: Go.
    • Features:
      • Struct-based configuration with JSON persistence.
      • Generic key-value storage supporting JSON, YAML, INI, and XML.
      • XDG-compliant directory management.
    • Integration: Can be used via static (New) or dynamic (Register) dependency injection.
  2. Frontend (ui)

    • Responsibility: Provides a user interface for the application.
    • Tech Stack: Angular.
    • Deployment: Built as a static asset (or Custom Element) served by the backend.
  3. CLI Runner (cmd/demo-cli)

    • Responsibility: Entry point for the application.
    • Tech Stack: Go (spf13/cobra).
    • Functions:
      • serve: Starts a web server that hosts the compiled Angular frontend and API endpoints.

Data Flow

  1. Initialization: The CLI starts and initializes the pkg/config service to load settings from disk.
  2. Serving: The CLI's serve command spins up an HTTP server.
  3. Interaction: Users interact with the Angular UI in the browser.
  4. API Communication: The UI communicates with the backend via REST API endpoints (e.g., /api/v1/demo).
  5. Persistence: Configuration changes made via the backend service are persisted to the filesystem.

Directory Structure

├── cmd/
│   └── demo-cli/       # CLI Application entry point
├── pkg/
│   └── config/         # Core configuration logic (Go)
├── ui/                 # Frontend application (Angular)
└── docs/               # Project documentation