Skip to content

billosys/timi

Repository files navigation

Tímı

Build StatusClojars ProjectClojure version

A time tracker written in Clojure(Script)

Contents

About

Tímı is a project time-tracking tool intended for use by individuals, non-profits, and small companies, originally based on Infi Alibi Time Tracker (more on that in the History section below.)

Screenshot

Tímı in action:

Tími screenshot

Features

This is far from a fully fledged time tracker, yet it has the following features, and more is on the way!

  • Categorize time entries by project and task.
  • Graphical overview of your weekly activity.
  • Indicate whether entries are billable or not.
  • Tasks have an associated billing method, either fixed price, overhead or hourly.
  • Create projects and tasks via a CLI, and the REPL.
  • Extension points for a different data source implementations.
  • OpenID Connect and single user authentication.
  • Out of the box Sqlite3 database support.

Dependencies

The prerequisites for this route are:

  • Have a Git client installed.
  • Make sure Java is installed.
  • Make sure lein is installed.
  • Have npm installed
  • Ensure that make is installed

Documentation

In addition to this README, there is documentation availble once the application is running:

Usage

Initialization

Clone the repo. Then, inside the repo, initialize a time tracker:

$ make var/data/timi.db

This will create a sqlite3 db with filename var/data/timi.db, which contains the right schema, but has no data yet.

Configuration

Before we create some data, you first need to setup a config file. For local development, copy the sample config:

$ cp config/sample/config.edn config/local

You'll want to change the encryption cookie, though. Generate a new one with:

$ make cookie

Then update your new config/local/config.edn file, replacing the same value for :cookie-encryption-key with the one make cookie generated for you.

Build

The Clojure and ClojureScript for the project can be built in one go with the following:

$ make

If you just want to do one or the other, you may use make build-clj or make build-cljs.

Projects and Tasks Population

Now we can populate the database with some projects and tasks. Here's how you create a project:

$ lein timi-create-project "Tími" :billing-method :hourly
Creating new project:
{:project-name "Tími", :billing-method :hourly}
Done. Id for project is 1

The project ID that is returned is what you will use when creating tasks for that project. For example:

$ lein timi-create-task "Project management" :for-project 1 :billing-method :overhead
$ lein timi-create-task "Programming" :for-project 1

Startup

For deployment and non-interactive development, simply run the server:

$ make run

If everything went well, there should now be a web server running on http://localhost:5099 (or whatever port you updated your local configuration to have). Navigate to it and have fun!

If you would like to do interactive development with ClojureScript, Om, and/or CSS, you can run this instead:

$ lein timi-figwheel

As soon as you see the help text with all the functions you can use, open up http://localhost:5099 in your prefered browser. As soon as you do, you should then see the Clojure prompt appear in your terminal where you ran the command. You now have access to Om application state in the REPL and can run the client-side code there.

History

This project started as a fork of the Infi Alibi Time Tracker, but has since undergone major refactorings (with more to come). What started as a handful of changes for our own needs and aesthetics has evolved into something that is a new application in its own right. Still, Tímı owes much of its DNA and all of its beginnings to Unfi's Alibi.

License

Copyright © 2017 Infi Holding B.V. and contributers.

Copyright © 2017 Billo Systems, Ltd. Co.

Distributed under the Mozilla Public License Version 2.0

About

A time tracker for developers, written in Clojure

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • HTML 87.8%
  • Clojure 9.1%
  • CSS 2.0%
  • JavaScript 0.8%
  • Shell 0.1%
  • Dockerfile 0.1%
  • Makefile 0.1%