{"id":21866883,"url":"https://github.com/rootmos/time","last_synced_at":"2026-05-11T16:03:06.578Z","repository":{"id":36217606,"uuid":"40521887","full_name":"rootmos/time","owner":"rootmos","description":"Time card system written in Haskell with MongoDB as backend","archived":false,"fork":false,"pushed_at":"2015-08-21T16:41:34.000Z","size":180,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-01-26T16:12:51.871Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/rootmos.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2015-08-11T04:47:03.000Z","updated_at":"2015-08-13T06:40:07.000Z","dependencies_parsed_at":"2022-09-04T03:51:45.349Z","dependency_job_id":null,"html_url":"https://github.com/rootmos/time","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Ftime","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Ftime/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Ftime/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/rootmos%2Ftime/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/rootmos","download_url":"https://codeload.github.com/rootmos/time/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244870827,"owners_count":20523937,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-28T05:07:47.314Z","updated_at":"2026-05-11T16:03:01.492Z","avatar_url":"https://github.com/rootmos.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"time\n====\nTime card system written in Haskell with MongoDB as backend, with a shell-like\ninterface\n\nBackground\n----------\nThis project was written with the sole purpose of learning Haskell and MongoDB,\nbut the program is working fine and I'm using it as my time card system (at the\ntime of writing). But the polish is not, well, polished.\n\nNoteworthy features \n-------------------\nMeaning, parts that were particularly fun to write :)\n\n* The [Maybeify](https://github.com/rootmos/time/blob/master/Maybeify.hs)\n  module, which uses [Template Haskell](https://wiki.haskell.org/Template_Haskell)\n  to wrap all types in a data constructor with Maybe:s, making all fields\n  optional! This was used to read the configuration data, which may not contain\n  all necessary information.\n* Using [Optparse-Applicative](https://hackage.haskell.org/package/optparse-applicative)\n  was a blast! I used it to parse the command line options and implement the\n  shell with its subcommands-feature.\n\nInstallation\n------------\nThe dependencies are listed in the file `dependencies` and can be installed\nwith [cabal](https://www.haskell.org/cabal/). A wrapper is provided in the make\ntarget: `make deps`.\n\nCompilation is done by `make`, after that a nice `time` binary should be\npresent in your repository!\n\nUsage\n-----\nAfter compilation you can run the `time` program like this:\n```\ntime --host=localhost --port=27017 --name=foobar\n```\nThis will try to connect to a MondoDB server running on the `localhost`, as a\nuser foobar. If the user don't exist then the program asks if you want to\ncreate it.\n\nAfter getting a nice `\u003e` prompt, you can `add` time, `show` status for periods,\nor use `week` to get a summary of the week! Happy time-reporting!\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Ftime","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frootmos%2Ftime","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frootmos%2Ftime/lists"}