Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/DefactoSoftware/Hours

Time registration that doesn't suck
https://github.com/DefactoSoftware/Hours

rails ruby time-tracker

Last synced: 8 days ago
JSON representation

Time registration that doesn't suck

Awesome Lists containing this project

README

        

Hours
=====

[![Build Status](https://travis-ci.org/DefactoSoftware/Hours.svg?branch=master)](https://travis-ci.org/DefactoSoftware/Hours)
[![Code Climate](https://codeclimate.com/github/DefactoSoftware/Hours/badges/gpa.svg)](https://codeclimate.com/github/DefactoSoftware/Hours)
[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)

[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/DefactoSoftware/Hours)

Maintenance mode
----------------

This project is now in maintenance mode. We will not accept new feature
development or contributions other than dependency updates, security fixes and
major bug fixes.

Hours is a dead simple project based time tracking application that we use
for internal time-tracking. It allows users to register how many hours they've
worked on a project with a certain category (think `design`, `software development`,
`testing` for software teams) and add any tag they like to it. This gives us a lot of
insight on how we spend our time on different projects.

It looks like this:

Projects overview

Single project

Entries

Audit Log

Entry

Roadmap
-------

As we're using Hours we're constantly thinking of ways to improve it and we'd love to hear your thoughts!

System Dependencies
-------------------

- Ruby 2.4.2 (install with [rbenv](https://github.com/sstephenson/rbenv))
- Rubygems
- Bundler (`gem install bundler`)
- PostgreSQL
- qmake (`brew install qt`) or read extensive instructions [here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit)
- memcached (`brew install memcached`, an older version ships with OSX)(optional)
- imagemagick (`brew install imagemagick`)

Getting Started
---------------

This repository comes equipped with a self-setup script:

% ./bin/setup

After setting up, you can run the application using [foreman]:

% foreman start

Since we're using subdomains to point to accounts, you can't run the app on localhost.
If you have [pow] set up or if you use linux an alternative is [prax], it will be automatically configured by the setup script, otherwise
you need to point apache/nginx to the port foreman is running the app on (7000 by default). With pow/prax the app will run on http://hours.dev

In order to activate caching in development you can add `CACHE_DEVELOPMENT="anything"` to your `.env`. Make sure to run `$ memcached` when you do need this.

[foreman]: http://ddollar.github.io/foreman/
[pow]: http://pow.cx
[prax]: http://ysbaddaden.github.io/prax/

Getting Started with Docker
---------------------------

This repository comes equipped to be run within Docker, but this requires a few more local dependencies. For instructions on installing and getting started with Docker go [here](https://www.docker.com/products/docker). You'll also need [`docker-compose`](https://docs.docker.com/compose/overview/), but it will be installed for you through Docker for Mac or Windows.

This repository comes equipped with a self-setup script for using Docker:

% ./bin/docker_setup

On first boot you'll also need to create your database, for that use:

% docker-compose run --rm app rake db:create db:migrate

After setting up, you can run the application and dependencies using [docker-compose]:

% docker-compose up -d

If your Docker host is running on `localhost` then you should be able to use pow/prax, otherwise you'll need to connect to it via:

http://DOCKER_IP:7000

Feature Flags
-------------

Description:

Single Tenant Mode: Initialize application in single tenant mode. Disabled by default.

Usage:

To use the single tenant mode, you can add SINGLE_TENANT_MODE to your enviroment variables with the value `true`. On development you can set this in your .env with `SINGLE_TENANT_MODE=true` and restart foreman. On heroku it's under the `Config Variables`.
The first user in single tenant mode can be created by a rake task `rake create_user`. We'll ask you for your credentials.

Guidelines
----------
- Pull requests are welcome! If you aren't able to contribute code please open an issue on Github.
- Write specs!
- Develop features on dedicated feature branches, feel free to open a PR while it's still WIP
- Please adhere to the [Thoughtbot ruby styleguide](https://github.com/thoughtbot/guides/tree/master/style#ruby)
- All code and commit messages should be in English
- Commit messages are written in the imperative with a short, descriptive title. Good => `Return a 204 when updating a question`, bad => `Changed http response` or `I updated the http response on the update action in the QuestionController because we're not showing any data there`. The first line should always be 50 characters or less and that it should be followed by a blank line.
- Please localize all strings and add i18n keys to the locale files sorted by key in ascending order

License
-------
Hours is distributed under the MIT license.