GithubHelp home page GithubHelp logo

kifu's Introduction

Kifu

Kifu is my home-made personal time tracking & invoicing application; written in Python.

Kifu

It is highly custom-tailored, so you may not find all the features useful. However; if you are a freelancer issuing time based invoices, you can still benefit from this app. Or; if you are a Python developer, you may fork this application and change according to your own needs. Better than starting from the scratch.

Preparation

You will find a sample dataset under the folder sample_data.

  • Copy those files somewhere safe
  • Change constants.json so that DATA_DIR_PATH contains your data path
  • Ensure that /config.json points to constants.json
  • Change .json files according to your own company structure

Execution

Simply start main.py in your Python environment.

To start the app in test mode, you can add the arg -test . When you do that, the application will backup all your data files and start running using this backup as the database.

Trivia

Kifu is the scoreboard of the ancient game Go. As a freelancer, I found it appropriate to name my time tracker after that. After all, I'm keeping "score" with this app, right?

kifu's People

Contributors

keremkoseoglu avatar

Watchers

 avatar  avatar

kifu's Issues

recurrence select error

Excerpt from the terminal:

DrKKs-MacBook-Pro:~ kerem$ /Users/kerem/Dropbox/Software/Kerem/Development/Kifu/venv2/bin/python3 /Users/kerem/Dropbox/Software/Kerem/Development/Kifu/main.py
Exception in Tkinter callback
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.7/lib/python3.7/tkinter/init.py", line 1705, in call
return self.func(*args)
TypeError: _recurrence_select() takes 1 positional argument but 2 were given

work days missing activity

  • report: work days missing activity (prev month, this month)
  • make this report part of month end closing

Test - live data split

The app needs the ability to run in test or live mode.

  • Add startup parameter for test mode
  • On test mode, app should copy data files somewhere safe and change CONSTANTS accordingly
  • Make obvious that the user is in test mode
  • Debug profile should start with test data
  • Live execution should start with live data
  • Add distinction & configuration to readme.md

auto currency update

  • make option in config (test mode, live mode separate)
  • test mode -> update currency on startup if requested
  • live mode -> (same)
  • default: disabled on tests, enabled on live

update currency on startup means: the first execution of the day. therefore, we need to understand somewhere (backups? new file?) when the program was last executed.

auto mail activity XLS

When an activity XLS is generated, an E-Mail window can be opened automatically.

  • JSON field: Billing contacts
  • When an activity Excel is generated, E-Mail windows to corresponding billing contacts should be opened (if present)

report: asset evaluation

Data:

  • new asset field: purchase date

Report:

  • get usd currency at asset date
  • calculate usd price
  • List: asset, purchase price, purchase USD, todays price, resale
  • list non-home currency assets directly

Notion:

  • year end closing step: re-evaluate assets

notif refresh

after deleting completed payments, refresh notification list.
there might be other events to refresh this list as well, check.

Currency investment ratio

  • New JSON field: Foreign currency investment percentage
  • Foreign currency purchase should act accordingly
  • New foreign currency + update code: BTC
  • Plan BTC IRL
  • Add BTC % to foreign currency file

easy credit card bank statement

  • credit card master data: payment day
  • new window for credit card bank statement: ask for card and amount
  • auto-book transfer payment for the selected card

Make public on GitHub

  • Ensure that there are no other issues present
  • Ensure that no sensitive data is present
  • Update readme
  • Make public
  • Plan to tweet

refresh notifications

refresh notifications on the gui after:

  • saving an activity
  • paying income tax
  • paying VAT
  • what else?

Stock management

  • Implement asset JSON as stock XLS
  • New field: Asset type (stock, estate)
  • Report: Asset profit
  • Implement current stocks as asset
  • Month end closing: Asset evaluation
  • Net worth: split stock with estate
  • Advance #81

startup action

action: start with new activity
app should start with a new activity window
edit morning startup to support this action

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.