# Project Context

## Overview

`gemcms` is a command-line CMS for creating and maintaining Gemini capsules with minimal ceremony. It should make common capsule work easy: creating a whole capsule in one command, importing files or directories, creating pages, articles, menus, generated blocks, static builds, and validation.

The target user is comfortable with a terminal and wants file-based content that remains editable, versionable, and deployable without a database.

## Stack

- Language: Go
- Interface: CLI
- Storage: files in the capsule project directory
- Database: none
- Deployment: static generated `public/` directory, publish command planned later

## Architecture

- `cmd/gemcms`: executable entrypoint.
- `internal/cli`: argument parsing and command dispatch.
- `internal/cms`: project creation, content import, content parsing, menu/widget config, build, status, and checks.

The CMS core should be callable without the CLI so tests can cover behavior directly.

## Constraints

- Use a small TOML-like subset for `capsule.toml`, menus, widgets, and content frontmatter until a dependency is justified.
- Do not store secrets in project files.
- Generated output must be Gemini-native Gemtext.
- Widgets are static build-time blocks, not runtime components.
- Directory imports should accept Markdown/Gemtext files and ignore unrelated files.

## Links

