Photo by Franco Atkins from Pexels

Hello and let’s get straight to the point.

Strapi is great headless CMS. Besides, its cron module can be so useful in certain cases, for example, regular fetching some data from 3rd-party API. But there is a little problem.

A little problem

Everything works fine if we stick to a single-process configuration, i.e. single database and a single Strapi app instance using it. However today we use containers and orchestration tools and infrastructure can be scaled quite easy, multiple application instances can be created in the blink of an eye. So the code should be written with these things in mind.

Imagine we…


An easy way to organize routes in an Express app

Photo by Paul IJsendoorn from Pexels

Express is probably the most popular web framework for Node.js, and tons of tutorials and instructions have already been written about it. However, most of them don’t cover the topic I’m going to tell you about.

A standard approach to routing that is seen across various docs looks like this:

Or like this:

So, your routing structure probably looks somewhat similar to the picture below.


Imagine you are writing a Solidity smart contract and one of its properties can be characterized like type or state. In other words, something from a limited set of options. You immediately say to yourself: ”Great, I’ll just use enum type for this state variable.” On the one hand, this approach has some benefits like increased readability. On the other hand, it can easily take you down a tricky road potentially leading to problems.

Photo by Dewa Prabawa from Pexels

What are you talking about?

Well, everything is OK if enum members are encapsulated within only one contract and are never ever mentioned in other files. However, DApps usually consist of…


A web tool for interacting with Ethereum smart contracts

Here I’d like to introduce a website developed by me and my friend in order to provide a better experience for Ethereum smart contracts developers and blockchain enthusiasts — https://justsmartcontracts.dev/. But first I’m going to explain the reasons lead to creating of this website.

Why did we need it?

For the last two years, I’ve been closely working on a project based on the Ethereum blockchain. That job includes both developing smart contracts and performing various off-chain interactions. The process of developing a smart contract itself is pretty straightforward. Write code- truffle compile- truffle test-repeat. However, the interaction with already deployed contract and the deployment…


In this article, I am going to demonstrate a simple approach to caching Ethereum events. Here I won’t describe what events are as there are a lot of articles covering that topic (here is the perfect one). I’ll just say that typically we use events for some off-chain operations, for examples tracking token’s transfers or retrieving the filtered list of particular transactions, just like a good old SQL query.

Let’s suppose we want to make a website that tracks some token transfers, a kind of Etherscan. We definitely need such simple operations like:

  • get all the token transfers
  • get transfers…

Oleg Kondrakhanov

Software engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store