apiVersion: capsule.dev/v0.1 kind: Capsule name: scnmnt-app-core version: 0.1.0 type: subsystem purpose: summary: 'Manages the overall Go application lifecycle, configuration loading, logger setup, and serves static frontend assets. It acts as the orchestrator, integrating various backend services and exposing the main HTTP server. ' owns: - Application entry point and main function - Centralized configuration loading from environment variables - Global logger setup - Static file serving for the frontend - Core build and development scripts (Makefile, Dockerfile) - Repository-level documentation and ignore files does_not_own: - Specific API route definitions (delegated to scnmnt-api-router) - Business logic for image generation, quota, or security interfaces: provides: - kind: cli name: run description: Main application entry point to start the HTTP server. - kind: http_api name: /api/status description: Provides a basic 'ok' status endpoint for health checks. - kind: env name: Config description: Application configuration loaded from environment variables. requires: - kind: library name: image.Client from_capsule: scnmnt-image-generation-service description: Image generation and prompt enhancement client. - kind: library name: quota.Store from_capsule: scnmnt-quota-service description: Quota management store. - kind: library name: security.Middleware from_capsule: scnmnt-security-middleware description: Security middleware for HTTP headers, CSRF, and source guarding. - kind: library name: router.Register from_capsule: scnmnt-api-router description: Function to register all API routes onto the Echo instance. dependencies: capsules: - name: scnmnt-image-generation-service version: '>=0.1.0' - name: scnmnt-quota-service version: '>=0.1.0' - name: scnmnt-security-middleware version: '>=0.1.0' - name: scnmnt-api-router version: '>=0.1.0' agent: summary_for_ai: 'This is the core Go application that orchestrates other backend services. An agent working on this capsule would focus on application startup, configuration, logging, and serving static files. It should ensure proper initialization and shutdown of dependent services. ' avoid: - Implementing specific business logic for image generation or quota management - Modifying frontend code directly verification: invariants: - All required environment variables must be present and valid at startup. - The HTTP server must start successfully and serve static files from 'web/dist'. x-reuse: notes: 'The Dockerfile is a multi-stage build that includes both Go backend and Bun/Astro frontend. For reuse, it would need to be split or adapted to only build the Go backend. The `quota.DefaultPath` (`data/quota.db`) is hardcoded. The `gox/server` dependency is specific and might need replacement if moving to a different HTTP framework. Environment variable names like `CHATGPT2API_BASE_URL` are specific to the upstream API. ' x-reconstruct: install: install.json