{"id":13357043,"url":"https://github.com/defactosoftware/hours","last_synced_at":"2025-05-16T18:06:43.691Z","repository":{"id":14441614,"uuid":"17153103","full_name":"DefactoSoftware/Hours","owner":"DefactoSoftware","description":"Time registration that doesn't suck","archived":false,"fork":false,"pushed_at":"2023-01-20T05:06:04.000Z","size":7947,"stargazers_count":1034,"open_issues_count":72,"forks_count":264,"subscribers_count":41,"default_branch":"development","last_synced_at":"2025-05-16T18:06:36.417Z","etag":null,"topics":["rails","ruby","time-tracker"],"latest_commit_sha":null,"homepage":"https://happyhours.io","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":"johnkil/Android-RobotoTextView","license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DefactoSoftware.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2014-02-24T22:25:47.000Z","updated_at":"2025-05-13T04:12:35.000Z","dependencies_parsed_at":"2023-02-12T00:01:45.374Z","dependency_job_id":null,"html_url":"https://github.com/DefactoSoftware/Hours","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefactoSoftware%2FHours","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefactoSoftware%2FHours/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefactoSoftware%2FHours/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DefactoSoftware%2FHours/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DefactoSoftware","download_url":"https://codeload.github.com/DefactoSoftware/Hours/tar.gz/refs/heads/development","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254582905,"owners_count":22095518,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["rails","ruby","time-tracker"],"created_at":"2024-07-29T21:02:52.371Z","updated_at":"2025-05-16T18:06:43.673Z","avatar_url":"https://github.com/DefactoSoftware.png","language":"Ruby","readme":"Hours\n=====\n\n[![Build Status](https://travis-ci.org/DefactoSoftware/Hours.svg?branch=master)](https://travis-ci.org/DefactoSoftware/Hours)\n[![Code Climate](https://codeclimate.com/github/DefactoSoftware/Hours/badges/gpa.svg)](https://codeclimate.com/github/DefactoSoftware/Hours)\n[![Reviewed by Hound](https://img.shields.io/badge/Reviewed_by-Hound-8E64B0.svg)](https://houndci.com)\n\n[![Deploy](https://www.herokucdn.com/deploy/button.png)](https://heroku.com/deploy?template=https://github.com/DefactoSoftware/Hours)\n\n\nMaintenance mode\n----------------\n\nThis project is now in maintenance mode. We will not accept new feature\ndevelopment or contributions other than dependency updates, security fixes and\nmajor bug fixes.\n\nHours is a dead simple project based time tracking application that we use\nfor internal time-tracking. It allows users to register how many hours they've\nworked on a project with a certain category (think `design`, `software development`,\n`testing` for software teams) and add any tag they like to it. This gives us a lot of\ninsight on how we spend our time on different projects.\n\nIt looks like this:\n\n\u003cimg src=\"http://i.imgur.com/UGotYJu.png\" width=500 alt=\"Projects overview\" /\u003e\n\n\u003cimg src=\"http://i.imgur.com/SZd6Oaw.png\" width=500 alt=\"Single project\" /\u003e\n\n\u003cimg src=\"http://i.imgur.com/gJxWWnc.png\" width=500 alt=\"Entries\" /\u003e\n\n\u003cimg src=\"http://i.imgur.com/QfMsVjb.png\" width=500 alt=\"Audit Log\" /\u003e\n\n\u003cimg src=\"http://i.imgur.com/y4RLCEg.png\" width=500 alt=\"Entry\" /\u003e\n\n\n\n\nRoadmap\n-------\n\nAs we're using Hours we're constantly thinking of ways to improve it and we'd love to hear your thoughts!\n\nSystem Dependencies\n-------------------\n\n- Ruby 2.4.2 (install with [rbenv](https://github.com/sstephenson/rbenv))\n- Rubygems\n- Bundler (`gem install bundler`)\n- PostgreSQL\n- qmake (`brew install qt`) or read extensive instructions [here](https://github.com/thoughtbot/capybara-webkit/wiki/Installing-Qt-and-compiling-capybara-webkit)\n- memcached (`brew install memcached`, an older version ships with OSX)(optional)\n- imagemagick (`brew install imagemagick`)\n\nGetting Started\n---------------\n\nThis repository comes equipped with a self-setup script:\n\n    % ./bin/setup\n\nAfter setting up, you can run the application using [foreman]:\n\n    % foreman start\n\nSince we're using subdomains to point to accounts, you can't run the app on localhost.\nIf you have [pow] set up or if you use linux an alternative is [prax], it will be automatically configured by the setup script, otherwise\nyou 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\n\nIn 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.\n\n[foreman]: http://ddollar.github.io/foreman/\n[pow]: http://pow.cx\n[prax]: http://ysbaddaden.github.io/prax/\n\nGetting Started with Docker\n---------------------------\n\nThis 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.\n\nThis repository comes equipped with a self-setup script for using Docker:\n\n    % ./bin/docker_setup\n\nOn first boot you'll also need to create your database, for that use:\n\n    % docker-compose run --rm app rake db:create db:migrate\n\nAfter setting up, you can run the application and dependencies using [docker-compose]:\n\n    % docker-compose up -d\n\nIf 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:\n\n    http://DOCKER_IP:7000\n\nFeature Flags\n-------------\n\nDescription:\n\nSingle Tenant Mode: Initialize application in single tenant mode. Disabled by default.\n\nUsage:\n\nTo 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`.\nThe first user in single tenant mode can be created by a rake task `rake create_user`. We'll ask you for your credentials.\n\nGuidelines\n----------\n- Pull requests are welcome! If you aren't able to contribute code please open an issue on Github.\n- Write specs!\n- Develop features on dedicated feature branches, feel free to open a PR while it's still WIP\n- Please adhere to the [Thoughtbot ruby styleguide](https://github.com/thoughtbot/guides/tree/master/style#ruby)\n- All code and commit messages should be in English\n- Commit messages are written in the imperative with a short, descriptive title. Good =\u003e `Return a 204 when updating a question`, bad =\u003e `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.\n- Please localize all strings and add i18n keys to the locale files sorted by key in ascending order\n\nLicense\n-------\nHours is distributed under the MIT license.\n","funding_links":[],"categories":["Resources","Open Source Rails Apps"],"sub_categories":["Apps Made with Rails","Articles"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefactosoftware%2Fhours","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdefactosoftware%2Fhours","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdefactosoftware%2Fhours/lists"}