# Decisions ## 2026-07-07 - Build A Go CLI First Decision: Implement `gemcms` first as a Go command-line tool. Rationale: - A single static binary fits the self-hosted Gemini audience. - The core workflows are filesystem and text processing tasks. - Avoiding a web admin panel keeps the first version simple and robust. Consequences: - The first user experience is terminal-first. - A TUI or local web editor can be added later without changing the capsule format. ## 2026-07-07 - Keep Capsules File-Based Decision: Store pages, articles, menus, widgets, and config as project files. Do not use a database. Rationale: - Gemini capsules are naturally static and text-first. - File storage keeps content easy to edit, back up, diff, and publish. - A database would add operational cost before it solves a real problem. Consequences: - Build-time validation and generation are important. - Future features should preserve direct file editability. ## 2026-07-07 - Treat Widgets As Build-Time Blocks Decision: Widgets are static Gemtext blocks expanded during `gemcms build`. Rationale: - Gemini has no browser-side runtime. - Static blocks keep output simple and portable. - Menus, recent articles, indexes, and similar blocks can be generated reliably. Consequences: - Widget behavior is deterministic at build time. - Interactive runtime widgets are out of scope for the core CMS. ## 2026-07-07 - Import Existing Content As A First-Class Workflow Decision: Support importing one file or a directory of Markdown/Gemtext files through `gemcms add`, and support `gemcms create capsule` for creating a capsule, importing content, and optionally building output in one command. Rationale: - Many users will already have notes or articles as `.md` or `.gmi` files. - A CMS for Gemini should reduce setup friction rather than requiring manual folder work. - Keeping imports deterministic and file-based preserves direct editability. Consequences: - Import behavior must infer metadata from frontmatter, headings, and filenames. - Directory imports should skip unrelated files rather than fail on them. - Health/status commands become important for confidence after bulk imports.