The Brief gem is a tool for developing applications whose primary interface is a collection of text files.
An application built on Brief is the Architects.io Software Blueprint, which takes a bunch of writing people do about software, and turns into into a project design specification which integrates with the software environment in order to automate project management activities.
Let's look at an example:
- E-Commerce Software Project
-- Epics
--- browse-products.md
--- checkout.html.md
--- account-management.md
-- Wireframes
--- home-page.md
--- product-search-page.md
In this project, we have some markdown files inside two different folders. One called Epics, and one called Wireframes.
An Epic is a collection of User Stories, which describe users, the features they desire for a piece of software, and the goal they're trying to achive.
Brief allows us to write these epics as a single markdown file, and then provides an easy way to access the smaller components and do things with them.
---
type: Epic
status: draft
title: Browse Products
owner: Jonathan Soeder
---
## Required Wireframes
- Browse Products Page
- Category Tree
## User Stories
### Browse Products (4 Points)
As a **Site Visitor** I would like to **Browse products by category** so that I can **easily find what I am looking for**
### Product Details (4 Points )
As a **Site Visitor** I would like to **View details about a product** so that I can **make an informed purchase decision**
### Product Administration
As a **Site Owner** I want to **Manage which products I inventory** so that I can **Sell products to my Customers**
With a bunch of files like this, we can do things like:
project= Brief::Project.new("./E-Commerce Software Project")
project.velocity= 10 # => Points per week
project.weekly_price= 6000.00
project.weekly_cost= 4000.00
epic = project.epics.find('Browse Products')
stories = epic.stories
epic.personas => ['Site Visitor', 'Site Owner']
epic.goals_for_persona('Site Visitor') #=> ['Make informed purchase decisions', 'Easily find what I am looking for']
epic.starts_at(7.days.from_now)
epic.projected_completion # => 28.days.from_now
epic.total_time #=> 3.weeks
epic.total_cost #=> 12000.00
epic.total_price #=> 1800.00
epic.publish_to_github_issues()
epic.status #=> 'published'
# 100 weeks later
epic.completion_progress => 20% ( just kidding. )
Developing an application like this on top of Markdown can help make many common writing activities much more powerful.