The Spec
In Acai.sh, every spec is a feature spec — a singlefeature.yaml file that defines a slice of your product.
This guide doesn’t get into the details of how to write the spec itself, for that see our feature.yaml guide.
Specs are most commonly colocated with your code in a features/ folder, but they don’t have to be. Your specs can live anywhere (as long as it’s a git repo).
mapperoni.com
features
map-editor
artifacts
feature.yaml
map-viewer
data-export
map-data-explorer
Key Principles
Function, not form
Specs should describe what the software does for the user, and how it behaves, not how it looks.
Not a status tracker
Specs describe what your feature should do. It is not a todo list nor a notepad. To track progress and delegate work, use an acai.sh server instead.
Requirements vs constraints
A good spec focuses on the surface requirements and ignores the plumbing. Only the most important constraints are included in the spec; like authn, security or engineering must-haves.
Feature & Implementation Boundaries
Think of your product as a heirarchy. A product has many features, and a feature can have many parallel implementations.1. Product
A Product is any software system that has many features. It can be a microservice, an API, an SDK, a robot, a data pipeline, a mobile app, or a website.2. Feature
A Feature is a clearly delineated “slice” of your software that brings value to the user. Example features might bepersonal-access-tokens, account-settings-page, role-based-access or webhook-service.
Features are strongly user-oriented. They are not tightly coupled to a single UI component or code module, and can often span multiple git repositories.