Blog

Notes on development and products

Practice from our projects: architecture, estimates, integrations and support.

How we defended our clients: the story of one transition between mailing aggregators

How we defended our clients: the story of one transition between mailing aggregators

In the process of creating a mailing service, we started with Mailchimp, then switched to DashaMail. When the business asked to switch to an internal aggregator, we conducted an analysis and identified critical limitations: there is no API, there are no status webhooks, it cannot withstand the load. We proposed a compromise — to use the internal aggregator only for infrastructure emails, and leave the client emails on the external one. The service has become multi-aggregator.

Laravel Mailing service: how we combined email and SMS sending for all internal services

Laravel Mailing service: how we combined email and SMS sending for all internal services

In a large project, each service sent emails and SMS in its own way: code duplication, lack of a status dashboard, and long improvements. We have designed a single mailing service on Laravel and RabbitMQ from three solutions — dashboard, API and sender. Providers connect once, statuses are visible through aggregators' webhooks, and the team no longer spends time on duplicate integrations.

Asynchronous activation of gift cards: the continuation of the story

Asynchronous activation of gift cards: the continuation of the story

After the warehouse was automated, the activity on the site increased. On peak days, the number of activations reached tens of thousands per day. Synchronous activation started to fail: delays, duplicate requests, and data errors. We switched activation to asynchronous processing via RabbitMQ and Laravel Jobs, increased the number of workers, and connected WebSockets for instant balance updates. The load has decreased, duplicates have disappeared, and the user sees the result immediately.

How We Automated Gift Card Inventory: From Excel to a System with an API for 1C

How We Automated Gift Card Inventory: From Excel to a System with an API for 1C

A gift solutions company managed gift cards and promo codes in Excel and processed bonus redemptions manually. We built a Laravel-based system with an admin panel for inventory management, activation, reservations, and reporting, plus an API for 1C integration. The system eliminated manual work, freeing the specialist to focus on higher-priority tasks.

How We Dropped Vue.js for Reliability: The Story of an Authentication Module

How We Dropped Vue.js for Reliability: The Story of an Authentication Module

Recurring authentication loops forced us to investigate the issue in depth. The cause was unexpected: users’ older devices and browsers, combined with corporate security software, were effectively DDoSing the site due to certain Vue.js behaviors. We made a decisive call: rebuild the authentication service using the simplest possible stack—HTML, CSS, and vanilla JavaScript, with no libraries. After the migration, the problem disappeared entirely

ROSTU is an ecosystem for the growth of small businesses.

ROSTU is an ecosystem for the growth of small businesses.

ROSTU is a Belarusian SaaS platform that combines a catalog for attracting customers, CRM, an online booking widget, inventory management, and analytics in a single system. Basic functionality is free. No cash nodes or complex integrations. Suitable for salons, service stations, restaurants, stores, clinics, and fitness clubs.

How Vpodarok evolved from a monolith built on Yii1 to a service‑oriented architecture with its own processing.

How Vpodarok evolved from a monolith built on Yii1 to a service‑oriented architecture with its own processing.

The Vpodarok project started as a regular online store selling gift certificates using Yii1. Over time, it evolved into an ecosystem with B2B showcases, APIs, and complex business logic. We’ll tell you how the team gradually moved the core into a separate service called Processing, why the Data Connector was needed, and what compromises had to be made when transitioning to a service‑based model.

Let’s talk

Tell us about the task — we’ll estimate it in a couple of days

Contacts