Skip to main content

ovecc architecture templates

Lists the built-in templates: reference architectures distilled from each ecosystem's published canon, shipped inside the binary and applied with no network access.

Usage: ovecc architecture templates

Example

$ ovecc architecture templates
fsd Feature-Sliced Design: six layers importing strictly downward (app > pages > widgets > features > entities > shared) (JavaScript/TypeScript frontends)
source: https://feature-sliced.design
bulletproof-react bulletproof-react: a unidirectional codebase, imports flow shared > features > app and features never import each other (React / JavaScript / TypeScript apps)
source: https://github.com/alan2207/bulletproof-react
nx-workspace Nx module boundaries by library type: app > feature > (ui, data-access) > util (Nx monorepos (JavaScript/TypeScript))
source: https://nx.dev
clean-architecture Clean/Hexagonal: dependencies point inward to a pure domain (presentation > application > domain, infrastructure implements the ports) (TypeScript backends and libraries)
source: https://blog.cleancoder.com/uncle-bob/2012/08/13/the-clean-architecture.html

Apply one: ovecc architecture init --template <name> (no index required).

The catalog

fsd — Feature-Sliced Design

Six layers importing strictly downward: app > pages > widgets > features > entities > shared, with slice isolation on pages, widgets, features, and entities. FSD's @x public-API escape hatch is honored, so a deliberate cross-import through @x is not a breach.

bulletproof-react

A unidirectional codebase where imports flow shared > features > app, and features never import each other (slice isolation on features).

nx-workspace

Nx module boundaries by library type: app > feature > (ui, data-access) > util.

note

Nx binds types with tags, not folders, so this template approximates them by the conventional libs/<domain>/<type>-<name> layout. Rebind paths if yours differs.

clean-architecture

Clean/Hexagonal: dependencies point inward — presentation > application > domain, with infrastructure implementing the ports. The domain is a pure ring: deny_capabilities forbids it network, filesystem, storage, dom, process, clock, and randomness, and it carries a per-function complexity budget.

Applying one

ovecc architecture init --template clean-architecture

This needs no index, so it works on an empty repository. The result is a target, not a mirror of today's code — see architecture init.