Giter VIP home page Giter VIP logo

tallyho's Introduction

TallyHo

A time tracker for the uncomplicated freelancer.

Preview

Demo at: tallyho.steveleggat.com

Features:

  • Flat file (text/Yaml) ‘database’. Makes backups/syncing data super easy.
  • Add a New task, or continue a previous task. New Clients/Projects created on-the-fly.
  • Edit tasks (double-click, or select via dropdown)
  • Duplicate / Restart tasks
  • Filter by Client and/or Project
  • Delete tasks
  • Select rows/days to show a tally of costs and hours
  • Add Reimbursable expenses (e.g. printing costs, client's domain name, 'research' trip to Bali)
  • Different hourly rates; Default Rate / Client Rate / Project Rate
  • Easily see which tasks have been invoiced and which need to be

Features I'd like to add at some point;

  • Filtering by date range
  • Basic Reports/Charts (Historical and Projection)
  • Basic exporting to CSV

TallyHo is simple by design and I have no intention of adding the following;

  • Invoice Creation
  • Multiple User/Team Support, including authentication
  • Multiple currencies (e.g per client)

Installation:

Unzip and put the 'tallyho' in your '~/Sites' folder or wherever localhost points to. You'll want to configure default hourly rate, timezone and other stuff first. Just open up and edit guts/config.php

Once installed, just open 'http://localhost/tallyho' up in your web browser. Upon first-run TallyHo will create some demo tasks which you can edit/duplicate/delete until you're ready to start adding your own.

Flat-file Structure:

TallyHo uses flat-files (.txt/.yaml) instead of a database.

Why flat-files instead of a MySQL database? I much prefer being able to copy/backup and manually edit a bunch of text files rather than having to deal with a MySQL database. Keeps things simple.

A typical file structure;

/tallyho/data/ClientO/ProjectX/20191009-1230.txt
/tallyho/data/SupertouchX/Website2020/20201010-1645.txt

Additional info:

Hourly rates and invoicing info can be entered into a _info.yaml file in a client or project folder. In the future, this will be available from the frontend.

Hourly Rates

Varying hourly rates can be set up per client and project.

/tallyho/data/ClientO/ProjectX/_info.yaml

Add an hourly rate like so:

Rate: 75

The heirarchy is Project>Client>Default

Marking Tasks as Invoiced

I have implemented some basic invoice marking. Again this goes in a _info.yaml file in the client or project folder.

Adding this line will mark everything on or before Christmas 2020 as invoiced (represented by the check/tick icon)

Invoiced: '20201225'

The Backstory:

Over the course of my 17 years as a freelance designer/developer I've tried out a decent number of time-trackers, from native apps, browser-based and even just using MacOS' Notes app. For the last year I have been using Kimai and have for the most part been pretty happy with it. Trouble is, it occupies over 2.5GB of my server space, and with over 21,000 files it's no surprise that it's quite slooooow and easy to break ...

... so I created TallyHo, with a 'simple by design' philosophy.

Disclaimer:

TallyHo's code is not particularly elegant, yet. Please feel free to contribute!

Don't put TallyHo where malicious users might mess with your data. Put it in a password-protected folder if you have to.

TallyHo has been tested and works sweet on PHP v5.6 and PHP v7.2

tallyho's People

Contributors

sleggat avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Forkers

mankovadara

tallyho's Issues

Form handling needs more checks

Forms need proper validation;

Most importantly, Client/Project and Description fields need to be cleaned so they adhere to filename conventions (currently '.' will break things.

add_task, update_task and delete_task should be merged into a single file.

Note: Dates/Times fields are currently ok as DateRangePicker.js always returns a valid date. It would be worth doing a check that dates don't conflict and overwrite previous ones.

Warning when deleting

Warning: DateTime::modify(): Failed to parse time string (- minutes) at position 0 (-): Unexpected character in /nfs/c03/h04/mnt/170464/domains/tallyho.steveleggat.com/html/guts/functions.php on line 172

Warning: date_format() expects parameter 1 to be DateTimeInterface, bool given in /nfs/c03/h04/mnt/170464/domains/tallyho.steveleggat.com/html/guts/functions.php on line 172

Time format

What would be the correct formatting in config.php of public static $defaultDateFormat = 'Y-m-d h:i A';
for using 24hrs instead of AM/PM?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.