Holidays and ending 2020 with some open source projects
Written by Walter on 28/12/2020
Best wishes and merry christmas for anyone reading this ;).
Most of my holidays will be spent renovating our new house we bought last year. However also some other time can be spent on my other projects including this blog.
Thanks to Meemoo some of my work has been open sourced. This is actually the first time in +10years of working as a contractor that this actually happened ;). Many companies talked about it but somehow other things were always more important than sharing back.
Subloader
The first open sourced project is 'subloader' a small project for adding subtitle files to video content in Meemoo's archives and used by onderwijs.hetarchief.be in one of their administration pages.
It has to generate a specific xml document and also show the subtitles in a video player before submitting.
It was written in just a week using python with flask as webframework.
On the client side it's a minimal amount of vanilla js and some barebones css using nothing other than some cross-browser reset rules. However it seems to look and work pretty well now.
Being one of my professional projects, test coverage is really good at around 93%. It uses a nice python package to convert between srt and webvtt formats for the flowplayer to preview your subtitels before uploading it to MediaHaven with a generated xml sidecar. The readme in the git repo explains how to run, install and show test coverage report. Authorization is done using JWT.
subloader git repository here
The screenshots show some testing data and subtitles (not actual production stuff here).
Syncrator-API
Another Meemoo open sourced project is syncrator-api.
Again this is a flask application but it also connects with a database using sqlalchemy and creates + removes openshift docker images in the background. It basically configures and creates an openshift pod running a 'syncrator' process which is a larger ruby application that imports data from various sources like other postgres databases and stores them in various targers like solr or another database.
In some cases it also pulls data from mediahaven api and then stores it into yet another postgres database etc. Syncrator is highly dynamic/configurable and used in various in-house projects to get data from one place to another. The syncrator-api sits on to of it and allows simple curl commands to trigger these sync jobs. And allows fetching the status of a certain job etc. Again authorization is done with a jwt token.
Sitwebfacturen
Following the good example of Meemoo I also open sourced another one of my in-house smaller projects 'sitwebfacturen'. It was first written in Ruby On Rails about a decade ago just for myself and to improve my rails coding skills. Over the years it's been updated during lunchtime whenever it didn't start anymore or got too outdated. A little while ago the adminlte styling was added and it was bumped to rails 5 and got a small overhaul with rubocop.
It gives you a nice overview of all your clients (klanten in dutch) and your invoices and pro forma invoices (offertes) per client and allows searching in them. Really simple but also really handy tool I've used myself over the years.
On the left some screenshots of the webpages and also what the actual generated pdf's look like (ofcourse this is dummy data not actual figures or real data is shown here).
sitweb invoice tool git repo
Edit and search your clients
Your companies (yes I do actually have 2 now, but this is just demo/dummy data here)
Creating an invoice or a proforma invoice is just a selectbox away ;). You can add multiple invoice lines. A nice little howto do nested resources quick and easy is shown off here look in the invoice and invoice_lines models in the sources. And some js code to allow adding new lines with nested forms is done here too.
Notice here the invoice number is auto generated but also later used on the pdf
The pdf contains a 'gestructureerde mededeling' which has a valid crc appended so the belgian banking applications
recognize and validate it. Basically most official invoices from bigger companies in belgium do this. It's nice to have your own little tool generate something that works in real life on the banking servers ;).
Again all data here is dynamic pulled from the database (like client adres, vat nr etc). Yes its in dutch but can be easily translated to other languages because its a rails app it basically just involves filling in some translations into a yaml file etc. But I haven't had the need nor time to actually work on making it multi-lingual. Again this is just dummy data but the demo pdf shows the layout is clean and nicely printeable with a generated code that contains your actual invoice number for easy tracking on your homebanking