Skip to content

Tarbell 0.9 Release Roadmap

David Eads edited this page Aug 23, 2013 · 8 revisions

The core Tarbell templating and publishing components have been relatively stable for the better part of a year. However, to reach a 1.0 release, some major architectural work is needed. The 0.9 release (October, 2013) will be the next step towards a 1.0 release (end of 2013/early 2014).

Goals

  • One-liner installer script for OS X and Ubuntu. (Must have) #6
  • Friendly starter template with integrated, interactive docs. (Interactive docs: Nice to have; templates: Must have)
  • Allow reliable publication to arbitrary paths (e.g. /sports/bears/special-feature-about-bears). Current URL_ROOT directive is primitive and not thoroughly tested. (Must have)
  • tarbell command: A command to create, manage and publish projects. (Must have)
  • Branch-based workflow: Use one branch per project. (Must have)
  • Rethink base template architecture: The current base template should become more of a dependency system. Base assets and templates should be mounted under current project directory and can be directly overridden with templates/assets of the same name in the project's 'static' dir. (Must have in some form) Flask-Tarbell #2
  • Custom routes: Allow static publication of custom routes under the root dir. (Nice to have) #26
  • Use s3cmd for s3 deployment: Allow automatic asset deletion and faster syncing (allow per-project override settings). (Nice to have)
  • Upgrade to Bootstrap 3 (Arguably nice to have)
  • Javascript: Move to Bootstrap-like component architecture (jQuery plugins that read data- attributes)
  • Destroy templates / static distinction, run all text files through Jinja... carefully, e.g. potentially using <%= ... %>-style markers for Javascript. (Very nice to have) Flask-Tarbell #1
  • Design/front end development user testing (Must have)
  • Deployment / development user testing (Must have)
  • Automated testing (Must have)
  • Project linting/checking on publication (Very nice to have)
  • Use Drive API consistently (Nice to have) #22

Questions

Display project name only in preview server or display full path ex. news/local/project-name?

Design

  • Opening screen should by type focused or a single dominant image, not both. Using a drop cap can create the visual drama a half size photo cannot.
  • I completely agree with the phone first model. Phone version doesn't and shouldn't have to include all the story assets, but should incorporate more sophisticated elements on larger break points. What about media query to add and subtract contact, leaving a link to a free standing page if the content doesn't fit with the page? Ex. dropping a large image in favor of a head and deck and linking to a photo gallery
  • Reduce project size
  • Share buttons after the byline are a good alternative to the header --- Add to base template
  • Add credits to templates
  • I'd like to tear up the way we do landing pages in general in favor of developing a universal design that accounts for:
  • Title design
  • Introduction/abstract
  • Dominant visual - Image, visualization (subject of the story(s))
  • Advertisement
  • Initial stories
  • Background content (about the reporting, basic visual explainer of topics)
  • Place for updates
  • Users guide -- trouble shooting > training

Code usability

Freeze current version in 0.8 branch. Next version is 0.9

New command:

$ tarbell unpublish

$ tarbell switch: I'm a little confused by some of the commands. Isn't this the same as Git legit? Are we not using git? Activate virtual env, change directory, restart the server. (This is outlined below...)

Ask what template to set as index.html with $ tarbell create : ex. I'm making a story page, can I have a story page template be my index.html (TODO Turn into newtemplate command)

$ tarbell newtemplate: Create a new template in the project's "templates" directory. Should ask what to name the file and what type of template, story page, graphic, photo(gallery), landing page.

Variable in the Google spreadsheet that must be filled out to publish. (Kill switch!)

Fail safe to keep a project from publishing without changing the headline, deck, byline or any other content that comes with a template. Give report of what's missing -- Check string > built into publishing -- check add paths (Can we try the kill switch and do this in a later iteration if it's not enough -- @eads)

When publishing to staging are there any validator type tools we can automatically run to tip a developer off to a potential error? -- Built into publishing

Add resources to launch page - W3S, Moz, bootstrap docs

Testing

Add browser stack to testing

Automated test for base template -- page load time, console errors, regressions

Command line tool

Uses ~/.tarbell configuration file to set up default directories -- this file will be created by the install script.

If the user is in a Tarbell directory, the current parent will be used. If not, the default directory specified in the configuration file will be used. (@TODO: Perhaps all site-specific commands can take an optional site argument and offer an error if no site has been created).

`tarbell newsite <site git repository (optional)> <target directory (optional)>

Create a new site based on a git repository (by default, Chicago Tribune News Apps open source template will be used). By default, the command will prompt for a directory. If a target directory is specified, it will be used.

Usage

Standard usage

$ tarbell newsite https://github.com/newsapps/tarbell-template
What domain do you plan to publish to? (e.g. http://apps.chicagotribune.com)
[Required]: projects.mydomain.tld
Where would you like to install `tarbell-template`? 
[Default: /home/eads/Repos/projects.mydomain.tld] 
Installing `tarbell-template` in /home/eads/Repos/projects.mydomain.tld
...
Done! 
Would you like to set up Amazon S3 publication now? [y/N] Y

Awesome! 
What's your production bucket (e.g. projects.mydomain.tld)? 
What's your staging bucket (e.g. beta.projects.mydomain.tld)?
What's your Amazon S3 access key ID? 
What's your Amazon S3 access key?

tarbell newproject <projectname (optional)>

Aliases: tarbell create <projectname>

Create a new Tarbell project that uses optional directory name <projectname>.

Usage

$ tarbell create
@TODO stuff related to create

tarbell list

Aliases: tarbell projects

List projects.

Usage

$ tarbell list
Use `tarbell switch <projectname>` to work on a project.

under-the-gun       Under the Gun         /news/local/crime/under-the-gun Last update 12-01-2012 @ 10:00am by Heather Billings
democracy-denied    Democracy Denied      /news/local/politics/democracy-denied Last update 01-17-2013 @ 01:32pm by Jen Lindner
hadiyas-friends     Hadiya's Friends      /news/local/crime/hadiyas-friends Last update 01-16-2013 @ 09:05am by Alex Bordens
school-utilization  School Utilization    /news/local/education/school-utilization Last update 01-19-2013 @ 11:15am by Abe Epton

tarbell switch <projectname (required)> --no-env (optional) --no-server (optional)

Aliases: tarbell workon <projectname (required)>

Use the switch command to work on an existing project. By default, this command activates the default virtual environment and runs a local preview server.

Flags:

--no-env: Don't activate Python virtualenv.

--no-server: Don't run preview server.

Usage

$ tarbell switch hadiyas-friends
You are now working on "Hadiya's Friends". To preview this site, visit 
    http://localhost:5000/

To stop the development server, run
    tarbell stop

Publish to staging:
    tarbell publish

Publish to production:
    tarbell publish -t production

(hadiyas-friends) $ 

Conflicting projects

$ tarbell switch gamechangers
Project `gamechangers` exists in:

  [1] /home/eads/Repos/apps.chicagotribune.com
  [2] /home/user/Code/mysite.com

Which project would you like to switch to? [1]

No project

$ tarbell switch truancy
Project 'truancy' does not exist. To create a new project with this name, run:

    tarbell newproject truancy 

tarbell serve --project/-p <projectname (optional)>

Manually run a Tarbell preview server. Defaults to parent directory or local config.

Usage

No project

(litfest) $ tarbell serve
Running Tarbell preview server for "Lit Fest 2013". To preview this site, visit 
    http://localhost:5000/
To stop the server, run 
    tarbell stop
Improve the project by editing the files in </path/to/project>.

Project specified

$ tarbell serve --project elections-general-2013
Running Tarbell preview server for "2013 General Elections". To preview this site, visit 
    http://localhost:5000/
To stop the server, run 
    tarbell stop
Improve the project by editing the files in </path/to/project>.

Error

$ tarbell serve
No active project. Work on a new project with `tarbell switch <projectname>`
or specify a project with the `--project` flag.

tarbell stop

Stop the currently running server.

Usage

(hadiyas-friends) $ tarbell stop
Stopping preview server for "Hadiya's Friends"...
Done!

Error

$ tarbell stop
No server running. Oh well!

tarbell update

Update the current project with any base updates.

Usage

(hadiyas-friends) $ tarbell update
This command will update your current project's dependencies to their latest versions.
Here are the outstanding changes:

   v1.01: Fix bug in navigation, upgrade to Flask-Tarbell v1.1.
   v1.02: Update Google analytics component to use spreadsheet variables.

Would you like to continue (y/N): 

Merging base changes...
Installing new requirements.... 

It worked! Your project is up to date.

Error

$ tarbell update
No project specified. To work on a project, run:

    tarbell switch <projectname>

To list available projects, run:

   tarbell list

tarbell publish --project/-p <projectname (optional)> --target/-t <target (optional)>

Publish a project to Amazon S3.

Usage

Basic

(democracy-denied) $ tarbell publish
This will publish "Democracy Denied" to Staging at:
  http://apps.beta.tribapps.com/news/local/democracy-denied
Do you want to continue (y/N): 
Rendering HTML...
Uploading to Amazon S3...
Done! 

Specify target

(democracy-denied) $ tarbell publish --target production
This will publish "Democracy Denied" to Production at:
  http://apps.tribapps.com/news/local/democracy-denied
Do you want to continue (y/N): 
Rendering HTML...
Uploading to Amazon S3...
Done! 

Specify project and target

$ tarbell publish --project restaurant_app --target restaurant_production
This will publish "Chicago Tribune Restaurant Reviews" to Restaurant Production at:
  http://restaurants.chicagotribune.com/entertainment/dining/reviews
Do you want to continue (y/N): 
Rendering HTML...
Uploading to Amazon S3...
Done!

tarbell unpublish --project/-p <projectname (optional)> --target/-t <target (required)>

Delete a project from the specified target.

Usage

Specify target

(gamechangers) $ tarbell unpublish --target production
This will remove "Game Changers" from Production at:
   http://apps.chicagotribune.com/sports/hawks/gamechangers
Do you want to continue (y/N): 
Deleting files...
Done!

Specify project and target

$ tarbell unpublish --project under-the-gun --target staging
This will remove "Under The Gun" from Staging at:
   http://apps.beta.tribapps.com/news/local/under-the-gun
Do you want to continue (y/N): 
Deleting files...
Done!

tarbell deactivate

Deactivate a project.

Usage

(rabies) $ tarbell deactivate
No longer working on a Tarbell project.
$