packages feed

Villefort-0.1.2.18: README.md

# Villefort
Villefort is a time management system written in Haskell.

## Version 1.2.18
- New json endpoint for active tasks
- Improved logging
- [Emacs Ormode intergration](https://alicereuter.com/posts/Villefort%20Orgmode%20Integration.html)

## json api
added json api to get current active tasks and to time completed today.
```
alice$ curl localhost:3002/tasks
[{"subject":"cs","due":"2019-04-28","rid":177,"time":0,"title":"cs lab","dueIn":0,"description":""},{"subject":"bio","due":"2019-04-30","rid":176,"time":0,"title":"bio hw","dueIn":2,"description":""},{"subject":"probality","due":"2019-05-01","rid":178,"time":0,"title":"probability hw","dueIn":3,"description":""}]
alice$ curl localhost:3002/done
[{"subject":"bio","time":30,"title":"bio hw"}]
```
[default config](https://github.com/alicereuter/Villefort/blob/master/src/Villefort/Config.hs)

# Home screen
![alt text](https://raw.githubusercontent.com/alicereuter/Villefort/master/data/screen.png)
# Add new todos
![alt text](https://raw.githubusercontent.com/alicereuter/Villefort/master/data/screen01.png)
# Stats page 

![alt text](https://raw.githubusercontent.com/alicereuter/Villefort/master/data/screen02.png)

```
usage: Villefort [options] 
  options:
    -r, --recompile     recompiles Villefort using a custom config file found in ~/.Villefort/villefort.hs
    -h,                 prints this help manual
```

# To install 
1. Install cabal (https://www.haskell.org/platform/)
2. In terminal or command prompt run `cabal install Villefort`.
3. and then `cabal run Villefort`.
4. You will be able to see the home screen by typing localhost:3002 into your favorite browser.

## Configure your villefort
create a custom main method in ~.villefort/villefort.hs. Below is an example.


```haskell
module Main where

import Villefort.Server
import Villefort.Config
import Villefort.Definitions
import System.Random
import System.IO.Strict as S

main :: IO ()
main = villefort def {
  daily = [calendar ],
  weekly = defWeekly {
    monday = [push],
    wednesday = [push],
    friday = [push,
              scan]
 
    }
 }
 
--              description, heading, subject
calendar = pure ["","check calendar","admin"]
scan     = pure ["scan notes","scan","admin"] 

-- | generate increasing sets of push ups
push = do
  rawNum <- S.readFile "push"  -- readfile to get # push ups
  let num = read rawNum :: Double
  writeFile "push" (show (num+0.3))
  sets <- pushUps num
  return $ [show sets,"push ups","fit"]

pushUps level = do
  dubs <-  mapM gen $ replicate 5 level :: IO [Double]
  return $ map floor dubs
  where gen x =  randomRIO (x-(x/3),x+(x/3))
 
```

Use ```Villefort --recompile``` to recompile Villefort with your custom config. Recompilation requires ghc to be in your $PATH.
The next time you run villefort it will run with your custom config. The default Config is found in Villefort.Config. 

## How to copy data between versions of Villefort.
1. Install the new version through cabal.
2. Navigate to ~/.cabal .
3. Navigate to share/ .
4. Navigate into your architecture folder mine is x86_64-linux-ghc-7.10.3.
5. You should now see different versions of Villefort.

Villefort-0.1.2.12/
```
    |-- data/
    |   |-- date
    |   |-- day
    |   |-- todo.db
    |-- templates/
    |-- js.js
```
Villefort-0.1.2.13/
```
	|-- data/
	|   |-- date
	|   |-- day
	|   |-- todo.db
	|-- templates/
	|-- js.js
```
Just copy the data/todo.db from the old version into data/todo.db of the new version.
Remember to rebuild Villefort so that your custom build uses the new version of Villefort.

    Villefort --recompile