Skip to content

Instantly share code, notes, and snippets.

@datapimp
Last active August 29, 2015 14:10
Show Gist options
  • Save datapimp/9987deb0bc9d6a599606 to your computer and use it in GitHub Desktop.
Save datapimp/9987deb0bc9d6a599606 to your computer and use it in GitHub Desktop.
An introduction to Brief

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment