What innovation and automation look like in our web team
In this article, we'll talk about some of the exciting innovations we've been working on through the Innovation Platform that have pushed our web team and app development for the better.
The field of technology is developing at a staggering pace. New technologies are constantly coming, the possibilities and need for innovation is important for us as well. That's why we decided to set up an Innovation Platform in the web team some time ago. It is a constantly evolving internal project in which any member of the team can participate. Our colleague Ľubo is responsible for coordinating tasks and validating requirements. If someone on the team gets an interesting idea or finds a space where we should improve, they can let us know using a simple form. The inputs from the form are then transformed into JIRA tasks, which can be worked on directly by the person who entered the task or anyone else on the team.
Automatic generation of API documentation
You may have heard about how we decided not to spend another minute writing API documentation. If not, you can read more about this in the article on creating a library to automatically generate API documentation from Joi validation schemes, which was created at one of our corporate Hackathons. We are gradually improving and expanding the @goodrequest / express-joi-to-swagger library. Version 0.3.2 is latest published version. Since the hackathon, we have managed to add, for example, the ability to define an authentication strategy, so it is possible to call each of the endpoints directly from the generated swagger UI. You can read about other news in the library's official repository.
TypeScript interface on the frontend
One of the goals we had was to generate and interface interfaces available for client applications. It was one of the topics that we managed to complete within the innovation platform. As a result, the client application can get a new version of the interface every time the API changes, and it knows what response it can expect from the server.
Generating TypeScript types on the backend
We use Typescript for web application development. It brings a large number of benefits, especially for larger or long-term projects. However, as programmers, we are lazy by nature, and writing interfaces or creating types for the objects we work with in code manually seemed annoying. Therefore, we decided to find a way to generate them automatically. After reviewing the existing solutions, we decided to modify the TBD library, which generates types from Joi validation schemes. We already use them, so we didn't have to write almost anything extra to automatically get the types of input and output objects.
We use a linter tool on each of the projects. This is essential for large projects that several developers are working on. It helps us keep the code clear and readable, so it's much easier to upkeep. However, according to several studies, the use of such tools also has a positive effect on the functionality of the code itself.
Although each project used eslint, its configuration always differed slightly. If we wanted to keep it the same, we had to copy the configuration settings from project to project, and when they were updated on one repository, the changes on the other did not occur in most cases. Therefore, we decided to create our own library with a set of ready settings, which we will use on all projects.
There are currently three libraries:
The list of things we would like to look at in innovation is really extensive. Our upcoming projects include, for example, the automatic generation of changelogs or the extension of application testing.
And what are your plans? We've open position for you, check it out!