Permalink
Browse files

Created gh-pages branch via GitHub

  • Loading branch information...
elia committed Apr 24, 2012
0 parents commit f1cb7acac3bccd8c49fd76c6e9167fc22b1782b1
Showing with 514 additions and 0 deletions.
  1. +172 −0 index.html
  2. +17 −0 javascripts/scale.fix.js
  3. +1 −0 params.json
  4. +69 −0 stylesheets/pygment_trac.css
  5. +255 −0 stylesheets/styles.css
@@ -0,0 +1,172 @@
+<!doctype html>
+<html>
+ <head>
+ <meta charset="utf-8">
+ <meta http-equiv="X-UA-Compatible" content="chrome=1">
+ <title>TimeTap by elia</title>
+
+ <link rel="stylesheet" href="stylesheets/styles.css">
+ <link rel="stylesheet" href="stylesheets/pygment_trac.css">
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
+ <!--[if lt IE 9]>
+ <script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
+ <![endif]-->
+ </head>
+ <body>
+ <div class="wrapper">
+ <header>
+ <h1>TimeTap</h1>
+ <p>TimeTap helps you track the time you spend coding on each project while in TextMate.</p>
+ <p class="view"><a href="https://github.com/elia/timetap">View the Project on GitHub <small>elia/timetap</small></a></p>
+ <ul>
+ <li><a href="https://github.com/elia/timetap/zipball/master">Download <strong>ZIP File</strong></a></li>
+ <li><a href="https://github.com/elia/timetap/tarball/master">Download <strong>TAR Ball</strong></a></li>
+ <li><a href="https://github.com/elia/timetap">Fork On <strong>GitHub</strong></a></li>
+ </ul>
+ </header>
+ <section>
+ <p>TimeTap helps you track the time you spend coding on each project while in TextMate.</p>
+
+<p>Once it's launched you don't have to bother anymore starting/stopping timers or
+inventing some arbitrary amount of time to fill your fancy time tracker.</p>
+
+<h2>Installation</h2>
+
+<pre><code>gem install time_tap
+
+timetap --install
+</code></pre>
+
+<p>… and visit <a href="http://localhost:1111/">localhost:1111</a></p>
+
+<p><img src="http://f.cl.ly/items/17025fecf7189518cf07/timetap-project-list.png"><img src="http://f.cl.ly/items/7b96ad2f7b49a95fdfd0/timetap-project-page.png"></p>
+
+<h2>How it works</h2>
+
+<p>TimeTap keeps an eye on the modification time of the frontmost file in TextMate
+and tells you how much time you spent on each project. </p>
+
+<p>If you stop coding for a while while squeezing your brains TimeTap understands.
+TimeTap will consider "coding time" pauses to up to 30 minutes between to saves
+in the same project.</p>
+
+<p>Technically it saves a timestamp+path of the frontmost file in TextMate every
+30 seconds, then it digests all this information in a nice Sinatra webapp.</p>
+
+<p>The server will respond on <a href="http://0.0.0.0:1111/">http://0.0.0.0:1111/</a>.</p>
+
+<h3>Assumptions</h3>
+
+<ul>
+<li>You code on TextMate.</li>
+<li>You save often (like me), at least every 30 minutes.</li>
+<li>You keep your code organized (I use ~/Code as main code folder).</li>
+</ul><h2>Customize</h2>
+
+<p>TimeTap uses a config file to control where projects are kept, etc. the path is:</p>
+
+<pre><code>~/.tap_config
+</code></pre>
+
+<p>Which can look like this:</p>
+
+<pre><code>root: "~"
+# root is where the logs will be saved
+
+code: Code
+# code is where all your projects live
+
+nested_project_layers: 1
+# see below about nested projects
+
+port: 1111
+# the port on localhost for the web interface
+
+ruby: /usr/bin/ruby
+# the ruby you want to use
+
+textmate:
+ projects: ~/Development/Current Projects
+ # where you keep your .tmproj files
+</code></pre>
+
+<h3>About "nested project layers"</h3>
+
+<p>TimeTap assumes you keep your projects inside a specific folder, like this:</p>
+
+<pre><code>~/Code/
+ tap/
+ tik_tak/
+ tk-win/
+ AcmeCorp/
+ website/
+ intranet/
+</code></pre>
+
+<p>But if you keep your projects grouped in subfolders like this:</p>
+
+<pre><code>~/Code/
+ Clients/
+ AcmeCorp/
+ website/
+ intranet/
+ BetaCorp/
+ skunkworks/
+ OpenSource/
+ project_one/
+ timetap/
+</code></pre>
+
+<p>then, the <code>nested_project_layers</code> key tells TimeTap how deep to look for project names inside a hierarchy (in the example a value of 2 will catch <code>AcmeCorp</code>, <code>BetaCorp</code>, <code>project_one</code> and <code>timetap</code>).</p>
+
+<h2>How to Contribute</h2>
+
+<p>Use it, love it, then...</p>
+
+<ul>
+<li>Fork the project.</li>
+<li>Make your feature addition or bug fix.</li>
+<li>Add tests for it. This is important so I don't break it in a
+future version unintentionally.</li>
+<li>Commit, do not mess with rakefile, version, or history.
+(if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)</li>
+<li>Send me a pull request. Bonus points for topic branches.</li>
+</ul><h3>Running &amp; installing in development</h3>
+
+<p>Run <code>ruby -Ilib bin/timetap</code> or run
+<code>rake launcher &amp;&amp; launchctl load ~/Library/LaunchAgents</code>
+to add a plist for OSX's launchd and have it launched automatically at login.</p>
+
+<h3>TODO</h3>
+
+<ul>
+<li>make it more configurable</li>
+<li>gemify (with jeweler)</li>
+<li>support other text editors, or at least make it easy to do so</li>
+<li>(r)spec it!</li>
+<li>flatten encoding quick-fixes with proper solutions (eat and spit only utf8)</li>
+<li>integration with external (online) time tracking tools</li>
+<li>export to csv (?)</li>
+</ul><h2>Copyright</h2>
+
+<p>Copyright (c) 2009 Elia Schito. See LICENSE for details.</p>
+ </section>
+ <footer>
+ <p>This project is maintained by <a href="https://github.com/elia">elia</a></p>
+ <p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
+ </footer>
+ </div>
+ <script src="javascripts/scale.fix.js"></script>
+ <script type="text/javascript">
+ var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl." : "http://www.");
+ document.write(unescape("%3Cscript src='" + gaJsHost + "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
+ </script>
+ <script type="text/javascript">
+ try {
+ var pageTracker = _gat._getTracker("UA-7137430-8");
+ pageTracker._trackPageview();
+ } catch(err) {}
+ </script>
+
+ </body>
+</html>
@@ -0,0 +1,17 @@
+var metas = document.getElementsByTagName('meta');
+var i;
+if (navigator.userAgent.match(/iPhone/i)) {
+ for (i=0; i<metas.length; i++) {
+ if (metas[i].name == "viewport") {
+ metas[i].content = "width=device-width, minimum-scale=1.0, maximum-scale=1.0";
+ }
+ }
+ document.addEventListener("gesturestart", gestureStart, false);
+}
+function gestureStart() {
+ for (i=0; i<metas.length; i++) {
+ if (metas[i].name == "viewport") {
+ metas[i].content = "width=device-width, minimum-scale=0.25, maximum-scale=1.6";
+ }
+ }
+}
@@ -0,0 +1 @@
+{"name":"TimeTap","body":"TimeTap helps you track the time you spend coding on each project while in TextMate.\r\n\r\nOnce it's launched you don't have to bother anymore starting/stopping timers or \r\ninventing some arbitrary amount of time to fill your fancy time tracker.\r\n\r\n## Installation\r\n\r\n gem install time_tap\r\n \r\n timetap --install\r\n \r\n… and visit [localhost:1111](http://localhost:1111/)\r\n\r\n<img src=\"http://f.cl.ly/items/17025fecf7189518cf07/timetap-project-list.png\"/>\r\n<img src=\"http://f.cl.ly/items/7b96ad2f7b49a95fdfd0/timetap-project-page.png\"/>\r\n\r\n\r\n## How it works\r\n\r\nTimeTap keeps an eye on the modification time of the frontmost file in TextMate\r\nand tells you how much time you spent on each project. \r\n\r\nIf you stop coding for a while while squeezing your brains TimeTap understands. \r\nTimeTap will consider \"coding time\" pauses to up to 30 minutes between to saves \r\nin the same project.\r\n\r\nTechnically it saves a timestamp+path of the frontmost file in TextMate every \r\n30 seconds, then it digests all this information in a nice Sinatra webapp.\r\n\r\nThe server will respond on http://0.0.0.0:1111/.\r\n\r\n\r\n### Assumptions\r\n\r\n* You code on TextMate.\r\n* You save often (like me), at least every 30 minutes.\r\n* You keep your code organized (I use ~/Code as main code folder).\r\n\r\n\r\n\r\n\r\n## Customize\r\n\r\nTimeTap uses a config file to control where projects are kept, etc. the path is:\r\n\r\n ~/.tap_config\r\n\r\nWhich can look like this:\r\n \r\n root: \"~\"\r\n # root is where the logs will be saved\r\n \r\n code: Code\r\n # code is where all your projects live\r\n \r\n nested_project_layers: 1\r\n # see below about nested projects\r\n \r\n port: 1111\r\n # the port on localhost for the web interface\r\n \r\n ruby: /usr/bin/ruby\r\n # the ruby you want to use\r\n \r\n textmate:\r\n projects: ~/Development/Current Projects\r\n # where you keep your .tmproj files\r\n\r\n\r\n\r\n### About \"nested project layers\"\r\n\r\nTimeTap assumes you keep your projects inside a specific folder, like this:\r\n\r\n ~/Code/\r\n tap/\r\n tik_tak/\r\n tk-win/\r\n AcmeCorp/\r\n website/\r\n intranet/\r\n \r\nBut if you keep your projects grouped in subfolders like this:\r\n\r\n ~/Code/\r\n Clients/\r\n AcmeCorp/\r\n website/\r\n intranet/\r\n BetaCorp/\r\n skunkworks/\r\n OpenSource/\r\n project_one/\r\n timetap/\r\n\r\nthen, the `nested_project_layers` key tells TimeTap how deep to look for project names inside a hierarchy (in the example a value of 2 will catch `AcmeCorp`, `BetaCorp`, `project_one` and `timetap`).\r\n\r\n\r\n## How to Contribute\r\n\r\nUse it, love it, then...\r\n\r\n* Fork the project.\r\n* Make your feature addition or bug fix.\r\n* Add tests for it. This is important so I don't break it in a\r\n future version unintentionally.\r\n* Commit, do not mess with rakefile, version, or history.\r\n (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)\r\n* Send me a pull request. Bonus points for topic branches.\r\n\r\n\r\n### Running & installing in development\r\n\r\nRun `ruby -Ilib bin/timetap` or run \r\n`rake launcher && launchctl load ~/Library/LaunchAgents` \r\nto add a plist for OSX's launchd and have it launched automatically at login.\r\n\r\n### TODO\r\n\r\n- <strike>make it more configurable</strike>\r\n- <strike>gemify (with jeweler)</strike>\r\n- support other text editors, or at least make it easy to do so\r\n- (r)spec it!\r\n- flatten encoding quick-fixes with proper solutions (eat and spit only utf8)\r\n- integration with external (online) time tracking tools\r\n- export to csv (?)\r\n\r\n\r\n\r\n## Copyright\r\n\r\nCopyright (c) 2009 Elia Schito. See LICENSE for details.\r\n","tagline":"TimeTap helps you track the time you spend coding on each project while in TextMate.","google":"UA-7137430-8","note":"Don't delete this file! It's used internally to help with page regeneration."}
@@ -0,0 +1,69 @@
+.highlight { background: #ffffff; }
+.highlight .c { color: #999988; font-style: italic } /* Comment */
+.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
+.highlight .k { font-weight: bold } /* Keyword */
+.highlight .o { font-weight: bold } /* Operator */
+.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
+.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
+.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
+.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
+.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
+.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gr { color: #aa0000 } /* Generic.Error */
+.highlight .gh { color: #999999 } /* Generic.Heading */
+.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
+.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
+.highlight .go { color: #888888 } /* Generic.Output */
+.highlight .gp { color: #555555 } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #800080; font-weight: bold; } /* Generic.Subheading */
+.highlight .gt { color: #aa0000 } /* Generic.Traceback */
+.highlight .kc { font-weight: bold } /* Keyword.Constant */
+.highlight .kd { font-weight: bold } /* Keyword.Declaration */
+.highlight .kn { font-weight: bold } /* Keyword.Namespace */
+.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
+.highlight .kr { font-weight: bold } /* Keyword.Reserved */
+.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
+.highlight .m { color: #009999 } /* Literal.Number */
+.highlight .s { color: #d14 } /* Literal.String */
+.highlight .na { color: #008080 } /* Name.Attribute */
+.highlight .nb { color: #0086B3 } /* Name.Builtin */
+.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
+.highlight .no { color: #008080 } /* Name.Constant */
+.highlight .ni { color: #800080 } /* Name.Entity */
+.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
+.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
+.highlight .nn { color: #555555 } /* Name.Namespace */
+.highlight .nt { color: #000080 } /* Name.Tag */
+.highlight .nv { color: #008080 } /* Name.Variable */
+.highlight .ow { font-weight: bold } /* Operator.Word */
+.highlight .w { color: #bbbbbb } /* Text.Whitespace */
+.highlight .mf { color: #009999 } /* Literal.Number.Float */
+.highlight .mh { color: #009999 } /* Literal.Number.Hex */
+.highlight .mi { color: #009999 } /* Literal.Number.Integer */
+.highlight .mo { color: #009999 } /* Literal.Number.Oct */
+.highlight .sb { color: #d14 } /* Literal.String.Backtick */
+.highlight .sc { color: #d14 } /* Literal.String.Char */
+.highlight .sd { color: #d14 } /* Literal.String.Doc */
+.highlight .s2 { color: #d14 } /* Literal.String.Double */
+.highlight .se { color: #d14 } /* Literal.String.Escape */
+.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
+.highlight .si { color: #d14 } /* Literal.String.Interpol */
+.highlight .sx { color: #d14 } /* Literal.String.Other */
+.highlight .sr { color: #009926 } /* Literal.String.Regex */
+.highlight .s1 { color: #d14 } /* Literal.String.Single */
+.highlight .ss { color: #990073 } /* Literal.String.Symbol */
+.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #008080 } /* Name.Variable.Class */
+.highlight .vg { color: #008080 } /* Name.Variable.Global */
+.highlight .vi { color: #008080 } /* Name.Variable.Instance */
+.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
+
+.type-csharp .highlight .k { color: #0000FF }
+.type-csharp .highlight .kt { color: #0000FF }
+.type-csharp .highlight .nf { color: #000000; font-weight: normal }
+.type-csharp .highlight .nc { color: #2B91AF }
+.type-csharp .highlight .nn { color: #000000 }
+.type-csharp .highlight .s { color: #A31515 }
+.type-csharp .highlight .sc { color: #A31515 }
Oops, something went wrong.

0 comments on commit f1cb7ac

Please sign in to comment.