I started working on hscalendar because I was beginning to feel confident with Haskell. I already had implemented a few terminal games, and finished a whole bunch of coding-game challenges.
And now I needed something more ambitious, something that feels like a real life project.
I had this need for a specific tool in my previous work. At the end of each month we needed to report on a half-day basis on which project we have worked. I’ve been using a Google spreadsheet for this so far.
It is actually a very good fit. Well firstly because it answers an actual need that I have, so it’s very good for the motivation. And also it contains everything a programmer needs to know to be fluent in a programming language.
To summarize it’s got:
- command line tools
- web backend server
- web frontend
- database access
- command line parsing
- text parsing
- external process launching
- unit tests
- deployment process
For the frontend, I’ve implemented it in Elm using the library haskell-to-elm.
I also spent some time to automate the deployment. When the compilation succeed and the tests pass, the CI builds a docker image and upload it on dockerhub. So deployment is now just a matter of pulling the latest image and restart the service.
The project has been a success as I’ve used it for more than six months without any trouble. This project has allowed me to get to use servant, lenses, RIO, QuickCheck. It was a great fun to learn all this.