Courteye is a tool for tagging matches of various sports with events that occured in those matches (like goals, fauls...etc.) and doing comprehensive reporting on that data later on.
Courtye consists the following 3 components:
- a Windows application
- an API
- an intuitive web application interface
The Windows applications is used for prepping the game videos before uploading them through the API onto the system. Once the videos are uploaded a game can be tagged with events using the Web interface.
After a game is tagged with events Courteye offers a very flexible way of defining various reports that a user can then view in the reporting part of the web application.
When Courteye approached us to build this system for them we were very excited because it meant learning complex things about various sport challenges which we were unaware of before.
Seeing as we were not that knowledgeable about various sport specifics the key part was our collaboration with the Courteye team. We were heavily relying on them for the domain expertise and really leveraging that as much as possible while striving to make the system as flexible as possible without hard-coding and specific things. This allows for easier maintenance and for the system to easily be extended afterwards.
And when we say flexible we really mean it. For example, the tagging interface and tagging criteria are totally free form and the Courteye team is free to design their own tagging schemas with specific events that fit their and the needs of their clients. The same is true for the Reporting part of the system where it's possible to define a free-form report for the Users needs and the system can parse that report and produce comprehensive statistic data and graphs.
To accomplish this, we were relying on a tight feedback loop, very high testing standards (with unit and integration tests) with code review and continuous integration. This enabled us to really push for the fastest turnaround. The code is hosted on Github, and we use Circle CI to run the whole test suite which in turn does a web hook to the production and/or staging servers and does an automatic deploy.
This enabled us to roll out new features and fix bugs very quickly without introducing new potential bugs, and interfering with the ongoing activity on the site.
In the end were able to push for making everyone happy and building a system that lets Courteye really listen and adapt to their clients needs.