apiVersion: capsule.dev/v0.1 kind: Capsule name: scnmnt-web-app-core version: 0.1.0 type: template purpose: summary: 'The main frontend application for SceneMint, built with Astro and React. It provides the user interface for image generation, prompt enhancement, quota management, and displays image history. It integrates with the backend API services. ' owns: - All application-specific React components for the image generator UI - Frontend state management for image generation, history, and quota - Client-side utilities for fingerprinting, HTTP requests, and history persistence - Astro pages and configuration for the single-page application - Public assets like logos and favicons does_not_own: - Generic UI components (delegated to scnmnt-web-ui-components) - Backend API implementations interfaces: provides: - kind: http_api name: / description: The main frontend single-page application. requires: - kind: http_api name: /api/session from_capsule: scnmnt-security-middleware description: To fetch CSRF tokens. - kind: http_api name: /api/quota/* from_capsule: scnmnt-quota-service description: To manage and display user quotas. - kind: http_api name: /api/prompts/enhance from_capsule: scnmnt-image-generation-service description: To enhance user prompts. - kind: http_api name: /api/images/* from_capsule: scnmnt-image-generation-service description: To generate images, check task status, and retrieve images. - kind: library name: React UI Components from_capsule: scnmnt-web-ui-components description: Generic UI components used to build the application interface. dependencies: capsules: - name: scnmnt-web-ui-components version: '>=0.1.0' agent: summary_for_ai: 'An agent working on this capsule would focus on frontend development, user experience, and integrating with backend APIs. They should be proficient in Astro, React, TypeScript, and understand client-side state management and API consumption. ' avoid: - Modifying backend Go code - Changing the core logic of generic UI components verification: invariants: - The application must correctly display image generation status and history. - Quota information must be accurately reflected from the backend. - All user interactions must be responsive and provide appropriate feedback. x-reuse: notes: 'This capsule is marked as `template` due to its heavy project-specific branding and content. `BrandHeader.tsx` contains the ''SceneMint'' brand name, ''Codex App'' attribution, and a hardcoded `githubUrl`. `copy.ts` contains all hardcoded UI text, storage keys (`scenemint:language`, `scenemint:size`, `scenemint:enhanceDirection`), and constants like `maxReferenceSizeMB`. Public assets (`brand-logo.png`, `favicon.ico`, etc.) are also specific. The `astro.config.mjs` includes a proxy for `/api` which is specific to the backend integration. The `fingerprint.ts` utility is tied to the quota system''s use of browser fingerprints. ' x-reconstruct: install: install.json