About

Oleg Smirnov. Eight years of building sites myself

I work alone, so you discuss the task with the person who then opens the editor. WordPress and WooCommerce, Laravel backends, React and Angular front ends.

100+
projects
50+
on WordPress
30+
with their own backend
3 years
in a big team

Who I am

A developer you talk to directly

I have been freelancing since 2018 and have written the code myself all along: WordPress themes and plugins, Laravel backends, React and Angular interfaces. There are no managers between us, so a question does not get lost on the way and the answer comes from the person who knows the code.

I explain things in plain words: what was there, what I changed, how I checked it. A site that already sells gets edited on a copy, with a backup and a rollback, because a client should never learn about my work from their customers.

I also studied information security and defend my degree in December 2026. It shows in tasks with payments, roles and user accounts.

Availability
Up to 40 hours a week
Paperwork
With or without a contract
Payment
Card or crypto
Code
Always in Git
Work
Remote

Experience

What eight years add up to

100+

projects since 2018

Many kinds of work, all taken to launch

Stores, catalogs, landing pages, platforms with user accounts, bots. Among them the Yudinsky apartment catalog, the Lumos bureau site and the Sona exchange. Whatever your task is, I have most likely solved something close to it.

  • Landing pages
  • Stores
  • Catalogs
  • Platforms
  • Bots
Lumos site
  1. 100+ projects since 2018. Many kinds of work, all taken to launch. Stores, catalogs, landing pages, platforms with user accounts, bots. Among them the Yudinsky apartment catalog, the Lumos bureau site and the Sona exchange. Whatever your task is, I have most likely solved something close to it.
  2. 50+ WordPress sites. My own themes and plugins, no page builders. I do not use Elementor or Divi, so the site carries no extra code. Loopsbook has a theme written from scratch, shipping calculated right in checkout, and edits kept in a child theme so updates do not wipe them.
  3. 30+ projects with their own backend. Where a mistake costs money. The Sona exchange on Laravel: transactions, balances, roles, admin panel. That experience is what you need wherever a site takes payment and delivers something on its own.
  4. 3 years on a large platform. A big team and a big codebase. From 2022 to 2025 I worked in a big team on a large digital platform, one of three front-end developers. The first version was Angular, the second React and Next.js; analytics and charts were written from scratch.
  5. 1 person for the whole project. Front end, backend, admin and payments. I wrote the Kritsky Academy learning platform entirely myself: a React site, a Spring Boot server, roles, a block editor in the admin panel. After payment, access opens automatically.
  6. 1/s request per second, and the catalog keeps up. A third-party API with hard limits. For the Yudinsky residential complex I replaced a widget with a custom apartment catalog on WooCommerce. The API answers once a second at most, so imports run on a schedule and buyers get filters and a floor grid with no waiting.

A big team

Three years on a platform the business press wrote about

A national digital beekeeping platform: sensors in the hive, a cloud, and an account where a beekeeper sees every colony. From 2022 to 2025 I was one of its three front-end developers.

Open the project →

“Just like people, the bees began to sabotage digitalization. They started sealing our sensors with wax.”

The head of the project's regional office, in a business press interview
7
regions took part in the pilot
up to 10
hive parameters tracked by the system
40 km
from the first apiary sold to the nearest village
2024
CNews Awards, Agriculture Digitalization: Technology of the Year
Hours

Happiness index

20:00 ›
Average

3.4 pts

00:0006:0012:0018:00
4.74.23.63.12.62.1
  • Happiness index

Temperature

20:00 ›
Average

32.5 °C

00:0006:0012:0018:00
32.932.732.532.332.131.9
  • Temperature
  • Temperature thresholds

Humidity

20:00 ›
Average

62.5 %

00:0006:0012:0018:00
63.763.362.962.662.261.8
  • Humidity

CO₂

20:00 ›
Average

830 ppm

00:0006:0012:0018:00
857845833820808796
  • CO₂

Hive mass

20:00 ›
Average mass

74.3 kg

Gain for the period

+0.8 kg

00:0006:0012:0018:00
74.874.674.474.274.173.9
  • Absolute mass
  • Positive gain
  • Negative gain

Colony state

20:00 ›
Strength

8.1 pts

Brood

3.9 pts

27 October at 14:00
Strength6.75Brood3.70
00:0006:0012:0018:00
9.48.26.95.64.33.1
  • Strength
  • Brood

An apiary three hours away

The first buyer keeps 40 hives in a national park, at least three hours' drive away. Now he can watch the bees on a screen: temperature, weight gain, even a happiness index. An experienced beekeeper judges a swarm by its hum, so the account has sound recordings from the hive too.

What I built

  • The beekeeper's account: overview, hives, log, calendar, apiary map
  • Analytics: temperature, humidity, CO₂, hive weight, colony state, happiness index
  • Charts from scratch: periods, hourly grouping, tooltips, threshold values
  • The hive card with a “Needs attention” block, sound sessions and notes
  • Both versions of the interface: Angular, RxJS and NgRx, then React and Next.js

What people come with

What brought you here?

  • A developer catalog on WooCommerce. Apartments moved from a third-party widget to the site itself: each has its own page, a floor grid and filters, and managers work in a regular admin.
  • A lighting bureau site on WordPress. 138 objects with filters and galleries, the copy is edited through ACF.
  • A rental library on WooCommerce. A deposit, a wallet, extension and return of a book, Mercado Pago payments, two currencies and two languages.
  • A dental site the clinic runs itself. Services, prices, doctors and offers change through ACF, with no code edits.
  • Machinery rental on WordPress. The company changes machines, reviews and staff in the admin panel.
  • Game rental on WooCommerce. Access arrives by itself after payment, and the account frees up when the term ends.
  • A multi-page bureau site with animation. Layout in SCSS and GSAP: separate sections for different buyers, responsive down to a phone.
  • A maritime university home page. A header with the week and languages, sliders, departments, responsive down to a phone, all from an approved design.
  • A packaging manufacturer site. A promo block with 3D objects, a catalog and a request form.
  • 27 pages for secured loans. A calculator updates the payment on the fly, and each type of collateral has its own page.
  • An exchange home page that opens in 0.6 s. The customer sees the rate right away and has no slow page to leave.
  • Store pages from 15 seconds to 1⁠–⁠2. I also fixed a slow admin panel that managers used every day.
  • A landing page that opens in 0.4 s. The buyer sees the price, fraction and shipping times right away.
  • New posts without a reload. The feed updates itself, so readers never need to press F5.
  • Google Sheets that run themselves. Duplicates get checked, districts get one spelling, data lands in 73 columns. All on a schedule.
  • Apartments that update without a manager. A plugin fetches them on a schedule, within the API limit of one request per second.
  • 3,410 price rows with no manual copying. A medical center’s prices reach the site from the clinic’s system.
  • Access delivery without a manager. Money arrives, the status changes, the buyer gets access.
  • Hive sensors and a beekeeper account. Readings arrive through an API and turn into charts, thresholds and alerts.
  • clientid from a lead into the CRM and ads. Leads from messengers arrive with their source, so you see which ad brought the client.
  • Match scores without a reload. A collector on a VPS sends JSON to a WordPress site, and the page updates itself.
  • A payment that opens the course by itself. The payment provider is tied to the platform: access appears right after paying.
  • Moving a catalog to the live site. A full backup and a ready rollback first, the move only after that.
  • About 100 thousand bots a day. The store was returning 503 errors. I set up protection, and real buyers see the site again.
  • A test environment next to the live site. One-click transfer and a switch for external requests in the admin panel.
  • A backup before every write. Values and formulas can be restored, and duplicates stop the run before writing.

After a task

Three lines instead of a page-long report

I write in plain words, no jargon. Here is how it looked for a furniture store.

Before
The page took about 15 seconds to open.
Changed
Found what slowed it down and removed it.
Checked
Measured again: 1–2 seconds.

Warranty

When did you find my mistake?

Mistakes and gaps that are my fault I fix for free, and such requests go first. New features and other people's code are separate work, and I will say so upfront.

A year later

Fixed for free

Money

The price comes in steps, and the first one already works

Here is a real estimate: a live matches section for a regular client. The client paid as each step was delivered, not all at once.

Paid 67% of the price

  1. 67%

    A working page

    A collector on the server, data intake on the site and a public page: matches, scores, odds, updates without a reload.

    After this stepThe client opens the address and sees a live page.

  2. 23%

    The match card

    Each match gets its own address, team and player stats, head-to-head records, odds lines.

    After this stepEvery match can be reached from search.

  3. 10%

    Finishing

    Buttons switched on in the admin for each sport separately. Mobile layout and styling to match the site.

    After this stepThe section is done and looks like part of the site.

  • I name the price of each step before starting.
  • Edits along the way are included, so you are never afraid to ask.
  • You can stop after any step, and what is done stays yours.

Tell me about the task, I will answer myself

A couple of lines or a link is enough. I will suggest a price, then we talk about yours.

Write a letter