Code Monkey home page Code Monkey logo

freebilly's Introduction

Sorry for the name !

This is a massively over-engineered implementation of a simple task, meant to help me learn domain-driven design and python packaging. And other things.

But it works and can be useful.

Purpose

It's a CLI interface that allows you to

  1. record start/end time of your work with around a click, instead of opening a csv and typing date-time. You may directly add a work session that you pre-define yourself (useful e.g. if you forgot to run the program while working, or if it crashed).

  2. fits all that into a template bill with around a click, instead of manually filling yourself your file.

Usage

  1. Keeping track of work : when you start working, open a terminal window and start recording your work session running freebilly record-session. See freebilly record-session --help for more information. You may directly supply a work session with freebilly supply-session. See freebilly supply-session --help.
  2. Billing : build whatever bill template you want (for example, a .tex file), and fill it with your work log information and other extra things by running freebilly produce-bill on your terminal. See freebilly produce_bill --help for more information.

Installation

It's stored in the TestPyPi package repository, which doesn't have everything PyPi does. So make sure your environment has the dependencies specified in setup.cfg. Then run :

python3 -m pip install --index-url https://test.pypi.org/simple/ --no-deps freebilly

freebilly's People

Contributors

emileten avatar

Watchers

James Cloos avatar  avatar

freebilly's Issues

what to do with ongoing sessions when the program unexpectedly terminates?

With the current CLI interface, If I start a session on my terminal window and my macbook crashes or I reboot it before ending the session, all the data is lost.

That's not very convenient.

A solution could be (1) another interface (would a web interface mitigate that? it would still run on my computer though?) or (2) let the app record non ended sessions or (3) let the app end the session if an unexpected crash happens.

(3) is kind of appealing. But what if a user does KeyBoardInterrupt? It would be nice if I could identify from within python the reason the program is ended (if I put it in a dumb way, something like MacbookRebootedInterrupt....). Then the program would do something if that kind of interruption happens, which is ending the session for the user. You'd still be in trouble though because, it means the user's session might be ended without that user being aware of it.... Which is the boundary of the app I guess, I don't think there is a solution to this. It does make sense to say 'my work is over' if my macbook crashes.

If I had a nice app (with a UI other than the terminal), I'd let it notify the user after the crash that it automatically ended the session : 'hey, I ended your session because something unexpected happened. Would you like to resume it?'.

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.