Villefort: Villefort is a task manager and time tracker written in haskell.

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.


Villefort is a browser based time tracker. It offers the creation of weekly and daily triggered tasks. It also offers stats on both daily, weekly and total time spent on tasks.

[Skip to ReadMe]


Change logNone available
Dependenciesbase (>=4.7 && <5), bytestring, directory, filepath, HDBC (>=2.4.0 && <2.5), HDBC-sqlite3 (>=2.3.3 && <2.4), MissingH, mtl (>=2.2.1 && <2.3), process, random, scotty (>=0.11.0 && <0.12), split (>=0.2.3 && <0.3), strict, text, time (>=1.6.0 && <1.7), transformers, unix, Villefort [details]
Copyright2017 Chris Reuter
AuthorChris Reuter
Home page
Source repositoryhead: git clone
UploadedSun Mar 4 05:54:42 UTC 2018 by ChrisReuter




Maintainers' corner

For package maintainers and hackage trustees

Readme for Villefort-

[back to package description]


Villefort is a time managment system written in Haskell.

Version 1.2.10

Home screen

alt text

Add new todos

alt text

Stats page

alt text

To install

  1. Install cabal (
  2. In terminal or command prompt run cabal install Villefort.
  3. and then cabal run Villefort.
  4. You will be able to see the homescreen by typing localhost:3002 into your favorite browser.

Configure your villefort

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

module Main where

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

main :: IO ()
main = villefort def {
  daily = [xcalendar ],
  weekly = defWeekly {
    monday = [moref],
    wednesday = [more],
    friday = [more,
    showDatabase = True

calendar = pure ["","check calendar","admin"]
scan     = pure ["scan class notes","scan","admin"] 

path = "/home/chris/.villefort/push"
more = do
  z <- S.readFile path   -- readfile to get # push ups
  let num = read z :: Double
  writeFile path (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))

Then run Villefort --recompile the next time you run villefort it will run with your configuration. 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-
    |-- data/
    |   |-- date
    |   |-- day
    |   |-- todo.db
    |-- templates/
    |-- js.js


    |-- 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 if you have a custom build to rebuild with the new version. Villefort --recompile