Reuse the boring parts
Forms, navigation, routing and layout do not need a new invention every Monday.
Tell us what you want to make. We’ll sort the task out, agree on a workable scope and take it to a working release.
goodCycle() {
understand();
plan();
build();
check();
launch();
improve();
}Sometimes the brief is twenty pages. Sometimes it is two messages and a competitor link. Both are enough to start. First we find what should work, who needs it and what is useful to release first.
badStart() {
guess();
chooseStack();
startCoding();
}goodStart() {
ask();
defineOutcome();
chooseScope();
}Before a large build, we lay out the structure: pages, states, data, integrations and the route to release. Moving a box on a plan is cheaper than rewriting a week of code.
Forms, navigation, routing and layout do not need a new invention every Monday.
We show working pieces early, while changing direction is still cheap.
Responsive behavior, accessibility and failure states are part of the build.
Projects usually change once people can touch them. The structure should survive that.
Plans help, but a browser is very good at finding assumptions. We prefer small complete pieces that can be looked at, tested and corrected before the next layer.
shipSlice(); check(); adjust(); continue();
The map shows the geography of the client projects selected for this web-development landing. The full portfolio remains in the canonical source; own studio work stays on a separate track.
Choose the kind of work you need. The same delivery loop can cover a turnkey web project, a focused content task or development inside an existing system.
Landing pages, company sites, project sites and content-heavy builds.
Accounts, dashboards, internal tools and project-specific workflows.
New builds, custom behavior, integrations and inherited systems.
Repair, extension, migration, cleanup or the next release.
Articles, research-led copy and content prepared for search and publication.
Service pages, product explanations, interface copy and structured commercial text.
Scripts for videos, talks, presentations and production briefs.
Adaptation between audiences, languages and publishing formats.
Responsive interfaces, interaction, accessibility and browser behavior.
Themes, plugins, custom logic, integrations and inherited installations.
APIs, data flows, internal tools and project-specific business logic.
Hosting, deployment, DNS, production fixes and ongoing technical work.
if (!specification.exists) defineTogether(); if (legacyProject.exists) inspectFirst(); if (budget.isLimited) reduceScope(); if (release.isLive) keepLearning();
No. A clear problem is enough for the first conversation. We can turn it into a workable scope together.
Yes. We first inspect what is already there and change only the layer that actually needs work.
Yes. A smaller first release is often the easiest way to learn what deserves the next round of work.
We can hand the project over, keep maintaining it or plan the next iteration with you.
No. This is a focused showcase for website and web-application work, so it intentionally contains only a selected part of our experience. A broader portfolio is available at web.zhovten.games ↗. Games we have worked on or are currently developing are collected at zhovten.games/projects ↗. The fullest professional context is in the team members’ personal profiles: Sam Starling · LinkedIn ↗ and Oksana Dubinetska · LinkedIn ↗.
Rule: the geographic base follows the client’s local cost-of-living floor. We use a public local living-wage/subsistence benchmark, but never below the applicable legal hourly minimum wage.
B(g) = max(L(g), M(g)) R(s,g) = round(B(g) × K(s)) Price = R(s,g) × hours + direct costs
Ukraine, 2026. The statutory subsistence minimum for an able-bodied person is 3,328 UAH/month; the statutory hourly minimum wage is 52 UAH. Therefore the working geographic base is 52 UAH/hour. Source ↗
Washington, DC, 2026. MIT estimates a one-adult living wage of $26.72/hour, above the $17.95 minimum wage, so the base is $26.72/hour. Source ↗
| Work | K | Typical hours | Ukraine | Washington, DC |
|---|---|---|---|---|
| Layout / assembly | 2.00 | 4–12 | 416–1,248 UAH | $214–641 |
| Figma → responsive build | 2.50 | 8–24 | 1,040–3,120 UAH | $534–1,603 |
| Programming / custom logic | 3.00 | 4–40 | 624–6,240 UAH | $321–3,206 |
| Turnkey delivery | 3.25 | 8–24 | 1,352–4,056 UAH | $695–2,084 |
| Deploy / infrastructure | 2.00 | 1–4 | 104–416 UAH | $53–214 |
| Writing / editorial work | 1.75 | 1–8 | 91–728 UAH | $47–374 |
A very simple constructor-based site for a Ukrainian client can fit roughly 8–11 turnkey hours: about 1,350–1,860 UAH before third-party costs. With prepared copy/assets, keeping such a case around 2,000 UAH is a deliberate pricing target, not an exception.
AI-assisted engineering is priced differently:
Price_AI = B(g) × 2.0 × human review hours
+ actual agent/model/tool cost
+ infrastructure cost
Token/tool spend is passed through from the actual agent run; human time covers specification, orchestration, review and testing. Hosting, domains, paid plugins, SaaS and licenses are also direct costs rather than hidden inside the hourly rate.
Send the task in the shape it has today. We’ll work out the next useful step.Open the contact panel and choose the channel that is convenient for you.
cycle.complete();
return goodCycle();