Skip to content

drewrodrigues/agile_tracker

Repository files navigation

AgileTracker

Build Status Maintainability Test Coverage

Check out the live app here.

Agile Tracker is an agile project management tool, inspired by Pivotal Tracker. It uses Rails and Postgres on the backend and React and Redux on the frontend.

This project was built in 10 days, although I plan on continuing to use it, add features and improve it.

Features

Authentication

  • Password digest using BCrypt.
  • Session token refreshed upon every sign in & sign out, allowing one session for each user.

Authorization

  • Prevent users from using crud operations on other user's resources.

Projects

  • Allow users to create, update and destroy projects.

Stories

  • Allow users to create, update and destroy stories.
  • Conditionally show next status button or estimate button.
  • Estimate points by clicking on a point estimate component.
  • Modularize components on story to handle different actions:
<StoryCaret 
  showForm={ showForm } 
  toggleForm={ this.toggleForm }/>

<StoryIcon 
  kind={ story.kind }/>

<StoryPoints 
  points={ story.points } 
  status={ story.status }/>

<EstimateOrButton
  acceptStory={ acceptStory }
  story={ story }
  nextStatusForStory={ nextStatusForStory }
  rejectStory={ rejectStory }
  updateStory={ updateStory }/>

Drag and Drop

  • Allow users to drag and drop stories across workflows.
    • Instead of disabling the user's action (such as dragging to an incorrect workflow based upon the status, the way pivotal tracker does) we allow the user to do what they want, then handle the logic to ensure the action is valid on the backend with some simple logic and some routes. With this implementation, you only need one action to accomplish moving a story, instead of having to edit the story's status, then dragging it into the appropriate workflow.
      • /stories/:id/accept
      • /stories/:id/reject
      • /stories/:id/next
class Api::StoriesController < ApplicationController
  def next
    if @story.next_status_and_workflow
    # ...
  end

  def accept
    if @story.accept
    # ...
  end

  def reject
    if @story.reject
    # ...
  end
end

class Story
  def next_status_and_workflow
    next_status
    next_workflow
    save
  end

  def accept
    self.status = "Accepted"
    send_to_done_workflow
    save
  end

  def reject
    self.status = "Rejected"
    save
  end
end

Hot Keys

  • alt + h toggles sidebar
  • alt + i toggles icebox workflow
  • alt + b toggles backlog workflow
  • alt + c toggles current workflow
  • alt + d toggles done workflow

Flows

Creating new project

Creating new project

Loading screen on project load

Loading screen on project load

Creating new story

Adding a story

Starting a story

Starting a story

Estimating story points

Estimating story points

Moving story through statuses to accepted

Moving story through statuses to accepted

Moving story from current to done

Moving story from current to done

Moving story from done to current

Moving story from accepted to current

Story count on sidebar

Story count on sidebar

Hiding and showing workflows from sidebar

Hiding and showing workflows from sidebar

Hiding and showing workflows from button

Hiding and showing workflows from button

Hiding and showing workflows from hotkeys

Hiding and showing workflows from hotkeys

Pages

Landing

Landing Page

Sign up

Sign up

Project Index

Project Index

Project Show Filled

Project Show Filled

Project Show Empty

Project Show Empty

About

πŸ‘Ÿ Sprint based project management tool based on Pivotal Tracker

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published