Coder Social home page Coder Social logo

simpletimetracking / standaloneclient Goto Github PK

View Code? Open in Web Editor NEW
7.0 8.0 7.0 3.69 MB

Easy to use offline time tracking client

License: GNU General Public License v3.0

ANTLR 0.73% CSS 0.37% Kotlin 98.66% Java 0.24%
java graphical cli timetracker timetracking

standaloneclient's Introduction

Build STT on Push

What?

SimpleTimeTracking is an application to make time tracking as simple and quick as possible.

Main window

Background

Many people struggle with time tracking software which is targeted not at the person tracking his/her time efficiently but on management to provide statistics etc. To remedy this, there already are some great projects (like http://ti.sharats.me/ ) but they lack some features like reporting/aggregation of tasks or a quick way of copy & pasting recorded times to other places.

The creators of STT are not very excited about the time tracking software they have to use in their company, so they try to implement the least annoying time tracking software from which they can copy & paste tracked time into other systems (like the "not exciting one" ;-) ).

Features of STT

  • modular design to allow easy extension
  • simple setup: no complicated installation, just download and start tracking times
  • information privacy: the data is located on your machine
  • simple data storage format: it is just a text file with one time tracking record per line
  • powerful and customizable parser for commands using ANTLR
  • Graphical and command line interface. Use what suits you more

Usage

Graphical UI

To start STT UI, double click STT.jar or (if this does not work) start it by command line

java -jar path/to/STT.jar

Also see https://github.com/SimpleTimeTracking/StandaloneClient/wiki/Intro for other options for launching.

When starting work on a task, just enter a activity about what you are working on in the text field. Comments can span multiple lines. Then either press CTRL+ENTER or click on "Done". The window closes and the task is stored with the current time as start.

CLI

To avoid typing a long command every time you want to use STT, create a little script and put it in your $PATH

#!/bin/bash
java -cp path/to/STT.jar org.stt.cli.Main $*

See https://github.com/SimpleTimeTracking/StandaloneClient/wiki/CLI for additional information about the CLI and available commands

Configuration

When STT is started the first time, a configuration file will be created in your home directory automatically. The file is $HOME/.stt/stt.yaml (Linux) resp. %HOME%.stt\stt.yaml (Windows)

Start hacking

to start hacking on STT:

  • make sure you have an Oracle JDK >= 17
  • clone this repository
  • build it
git clone https://github.com/SimpleTimeTracking/StandaloneClient.git
cd StandaloneClient
gradlew build

The created fat jar can be found in build/libs

License

STT is licensed under the GPLv3. See LICENSE.txt for the license itself.

standaloneclient's People

Contributors

barclay-reg avatar blizzard26 avatar bottomquark avatar bytekeeper avatar fraenkelc avatar jenhae avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

standaloneclient's Issues

Provide GUI

There should be a GUI for creating and modifying time tracking records as well as reporting like "show me all tracked times last week"

The GUI should be as simple as possible and should start quickly.

What license should this project have?

If decided, the license should be added to the README.md so it can be found easily.
Also, the correct LICENSE.txt or LICENSE.md should be put into the repo root

Overhaul GUI

Make it a bit more "eye-efficient": Move command above history etc.

And new command: resume last

It should resume the last activity:

  • Do nothing if the last activity is still active
  • Create a new activity starting now with the same text as the last one

Should allow activities to start with a date

If an ongoing activity is started with the text like "2017-05-08_19:00:00", STT will interpret it as being an ended activity. If the date is before the start date, it will even throw an exception, when trying to enter it.

Todo:

  • Introduce a separator between time and activity: "#"
  • Still parse the "old" format without the "#" but silently migrate to the "#" format on the next change or for new entries at least

Partial copying of items in the report window

It should be possible to copy only a part of the comment:

  • Use grouping to split comments
  • If a comment segment is clicked, it and its remainder will be copied
  • Segments should be colored differently to distinguish them
  • Add config for the prefix grouper to "train" items that are not in the comments already. This allows to split up a common group of normal comments. Ie. if all comments start with "aaa bbb" - but you want the groups "aaa" and "bbb" - you can add the baseline "aaa".

Switch to YAML config

This allows a more flexible config scheme (and better support for stuff like categories etc.)

Automatic backups

The .stt file should be backed up every now and then. Location of backup and interval should be configurable. Defaults should be
location = user home (same directory as .stt file)
interval = 7 days

Add dummy mode with predefined time tracking items

STT should have a "dummy mode" where one can pass a parameter to STT and it will generate some dummy entries without touching the existing .stt file.

This can be used by people who want to try out STT and also for screenshots for documentation.

Provide CLI

There should be a CLI to track time and print reports like "show me all records of last week"

The CLI should also integrate in command line completion of at least Bash and ZSH for

  • CLI options
  • time tracking records

Provide filter to only view the n last days

Instead of listing all items, only show the last n days (with 1 being only the current day). When filtering the items all should be taken into account.
This option should be available in the yaml config and is deactivated by setting it to "all".

Refactor reading from different sources

Currently reading internal STT file and .ti files is configured in .sttrc and when multiple files are given, all of them are read one after the other.

What I want is not reading of all files at once but the possibility to read one file and convert it to the internal STT format or just reading it and displaying reports of the contents.

Idea: provide converting functionality, so the user can do stuff like
stt convert ~/.ti-sheet - | stt report --input-file -
where convert takes two files (or stdin/stdout when given the minus sign)

Additionally this enables the user to import/merge contents like
(stt convert ~/.ti-sheet -; cat ~/.stt) > ~/.stt_merged

Better delete logic

If an item is deleted:
Use cases:

  1. Delete item between equal activities

|--A--|--B--|--A--|
Delete B =>
|-------A----------|

  1. Delete item between non-equal activities

|--A--|--B--|--C--|
Delete B =>
|--A--| |--C--|

  1. Delete item that is ongoing

|--A--|--B--
Delete B =>
|--A---------
(This is problematic if a user tries to end the day with "fin" and mistypes. If he deletes the "typo item", the old activity would continue)

GUI for configuration

Various configuration are available and more should be available, as some stuff is hardcoded.

Add overtime information to report

Reports should provide information about overtimes. Daily working hours should be configurable and the difference between tracked times per day and configured working time should be output as overtime.

There should also be a possibility to define break times as they should not count as working hours

FileNotFoundException when freshly starting STT

  • Download STT on a clean machine (~/.sttrc and ~/.stt do not exist)
  • try to track time using STT CLI or GUI
  • Exception:
    java.lang.RuntimeException: java.io.FileNotFoundException: /X/Y/.stt (Datei oder Verzeichnis nicht gefunden)
    at org.stt.ToItemWriterCommandHandler.executeCommand(ToItemWriterCommandHandler.java:60)
    ...

Rename on edit

If an item is persisted that matches start and end time of an existing item, ask if all item with the "old activity" should be renamed to "new activity".

Encrypted (obfuscated) settings

Credentials shouldn't be stored in plain text. A casual look should not immediately reveal the password. For starters, the key to encrypt the password is stored in code. Future version might generate a local key (in which case an attacker needs to take 2 casual looks).

Implement some kind of categories

When creating a report, it should be possible to group the report items by some kind of category.

Ideas:

  • automatically group by a common prefix of item comments
  • use some kind of marker (like enclosing qoutes) to specify groups.
    Example: stt on "main category""subcategory" the long comment

Quotes may be not the best option because of escaping in shells. Maybe percent signs % or exclamation marks ! would be better.

Optionally, the marker should be configurable by the user

Additional command "from X to Y"

An additional command should be implemented with syntax "[from] 11:00 to 12:00" where "from" is optional.

Example: stt on the comment from 11:00 to 12:00 should create a new item with start time 11:00, end time 12:00 and the given comment

Editing of items from the GUI

Editing items in the GUI should be possible.

Idea: when #10 is implemented, clicking on a new "edit" button will put the comment of the clicked item into the text area and "from $start_time to $end_time" is appended automatically. Saving the item will overwrite the original one.

Reduce matches

When typing an activity, STT displays a list of all entries that matches what you have just typed. It would be an improvement, if STT could filter duplicate entries. This would make it ease to find the correct entry.

Autocompletion for UI

While typing a new item, proposals for the complete item text should be given.
Something along the line:
proposal for autocompletion

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.