TaskRoller is an issue tracking app with the added ability to assign tasks to address your projects' bugs and feature requests.
- Built using Ruby on Rails, JavaScript, HTML, and CSS.
- Uses devise and OmniAuth which allows logging in with a GitHub account
- GitHub API Integration: allows connecting to a repo's issues and automation using git commit messages.
Issues are opened to report problems, offer suggestions, and ask questions. While Tasks are created to address problems or add features. Both follow Workflows that set the Status and provide information. Issues and Tasks both reside in Projects, which are organized into Categories. In addition, collaboration is encouraged with markdown enabled comments.
Users can subscribe to Issues & Tasks to get automatic emails after status updates and new comments. Categories and projects can also be subscribed to; any new issues/tasks within will have a subscription.
User accounts are organized by levels to allow a focus on responsibilities and add security. Here is a short description of each:
One or two people responsible for the initial app setup and user management. They have the same abilities as Reviewers, but they can also edit/remove other people's issues, tasks, comments, etc.
Project managers. They can do some app setup like create Categories and Projects. However, their main responsibility is managing issues and tasks.
The busy bees working on tasks. In addition, they can report issues and self-assign tasks.
Everyone else can open issues, add comments, and see activity.
Issues can have five statuses: Open, Being Worked On, Addressed, Resolved, and Closed. Here is the basic status workflow:
Tasks can have six statuses: Open, Assigned, In Progress, In Review, Complete, and Closed. Here is the basic status workflow:
This part is up to you and must be added initially by an Admin. However, it's easy, just enter a name and pick one of the available colors and icons. For issues, I suggest: "Bug", "Suggestion", and "Question". For tasks: "Bug", "Improvement", and "Feature Request".
Connect your TaskRoller app to a GitHub repo to simplify things:
- When a new issue is added on github.com, an Issue is added to your TaskRoller app.
- Tasks can be created from this Issue, which can be progressed with commit message callouts.
- When the TaskRoller Issue is closed, the issue on GitHub is also closed.
- Automated comments are added to the GitHub issues which provide info and links.
- Start/Progress -> Start working on Task
- Pause -> Pause working on task
- Fix/Close/Complete -> Mark Issue is ready for review
Fix the widget color
This commit fixes the color of the widgets.
Fixes Task#12
When a callout is added last in a commit message. It is picked up by TaskRoller and updates the corresponding Task. For the above example, it will mark Task#12 done and ready for review. In addition, different callout formats and tenses are allowed. These all perform the same action: Fix Task 12
, Completed Task #12
, completes task-12
- App can be set to allow anyone to sign up or limited to invite only.
Please feel free to check out a live version of the app. It houses issues and tasks for this app and connected to this GitHub repo.
- Ruby
- rbenv, rvm, or similar
- PostgreSQL
Clone from GitHub and cd
into project directory
# install ruby version set in .ruby-version
rbenv install # or `rvm install`
gem install bundler
bundle install --without production
Install yarn on your system. This step might also install Node.js, but please see below to ensure that you use the right version when working on the project.
I use Node Version Manager to maintain a more consistent Node.js version. The version number is stored in ./.nvmrc. Please use that version of node or use nvm to install it.
# using nvm
# cd into project directory
nvm install
nvm use
# finally, install packages
yarn install
Environment variables are used to store passwords and tokens. The gem dotenv-rails is used in test and development environments. An example file is included in the repo that shows the key options. For production, set variables when running the app.
- Rename
.env.example
to.env
and add the real values
bin/rails db:setup
bin/rails rspec spec/
I use guard to automate local development
bundle exec guard -g backend # start rspec and bundler watchers
bundle exec guard -g frontend # start server (port 3000) and livereload watcher
The app is open source and you are free to run on your own servers. However, database/web hosting and custom features can be provided with a moderate fee. Please contact [email protected] if interested.