Page 21 - Monthly Archives: December 2025
-
Maxim Mironjuk
-
December 04, 2025
Align nested grid elements to the tracks of the parent grid, without JavaScript, without workarounds. CSS Grid Subgrid elegantly and declaratively solves the alignment problem that has long plagued card layouts, forms and multi-column designs.
-
Maxim Mironjuk
-
December 04, 2025
An HTTP security header such as the Content Security Policy or the X-Frame-Options header usually gets carefully configured once, often as part of a security audit, and then barely gets touched again. This exact calm turns into a trap the moment a later web server refactor, a new CDN, or a changed Nginx configuration accidentally shortens, removes, or misconfigures the header, since normal storefront operation gives nobody an immediate signal that a protection mechanism has silently vanished. Adding a fixed assertion for the most important security headers to the existing end-to-end test suite instead lets such a regression surface at the very next test run, long before it turns into a real security problem in production.
-
Maxim Mironjuk
-
December 04, 2025
Magento's native review feature is functionally solid but visually and interactively plain. Building a review UI that actually contributes to purchase decisions means treating the review form as an Alpine component, marking up the star display with correct semantics, and offering sort and filter options without complicating the underlying data model.
-
Maxim Mironjuk
-
December 04, 2025
Catalog Permissions makes it possible to lock or unlock categories and products for individual customer groups, separating pure visibility from actual purchase authorization. This article explains the mechanics behind the feature, a typical B2B scenario with an unlocked product line, and the noticeable impact on full page cache, indexing and category page performance.
-
Maxim Mironjuk
-
December 04, 2025
The raw TypeScript Compiler API is powerful but unnecessarily cumbersome for everyday code generation. ts-morph puts an object oriented, readable layer on top of it and turns ten lines of AST traversal into a single understandable method call, without losing type information or precision.
-
Maxim Mironjuk
-
December 03, 2025
Monorepo JS tooling solves a problem that becomes unavoidable as the number of packages in a project grows: shared dependencies, repeated build steps, and versioning across multiple packages. Workspaces in npm, pnpm and yarn lay the foundation, while Turborepo and Nx build on top of them as task runners and drastically cut build time through caching.
-
Maxim Mironjuk
-
December 03, 2025
An ephemeral review app is automatically created as soon as a pull request is opened, and disappears without a trace once it is merged or closed. Docker Compose builds a dedicated, isolated stack per branch for this, reachable through a dynamic subdomain, with no manual environment management at all.
-
Maxim Mironjuk
-
December 03, 2025
Tests that only ever run locally do not protect a project. Only integration into CI/CD turns test automation into a quality gate: every pull request is checked automatically, coverage reports are stored as artifacts, and failures are reported where they happen, in the code, not first at deploy time. This article shows the complete CI/CD integration of PHPUnit for both major platforms.
-
Maxim Mironjuk
-
December 03, 2025
A quantity stepper seems trivial but is full of detail questions: what happens on manual entry of an invalid value? How is the stock quantity respected as an upper bound? How does it work without a mouse? With Alpine.js a stepper can be built that solves all of this cleanly, without needing an external form library.
-
Maxim Mironjuk
-
December 03, 2025
Dirty read, non-repeatable read, and phantom read are the three concurrency anomalies the SQL standard uses as a reference when defining isolation levels. Each anomaly arises when two transactions overlap in time, and each can be reproduced with a concrete two-transaction timeline instead of only being described abstractly.
-