diff --git a/_tabs/work-with-me.md b/_tabs/work-with-me.md new file mode 100644 index 0000000..9813cb0 --- /dev/null +++ b/_tabs/work-with-me.md @@ -0,0 +1,176 @@ +--- +title: Work with me +icon: fas fa-briefcase +order: 0 +permalink: /work-with-me/ +description: Web development, automation, integrations and technical repair by Danylo Yenikeiev. +toc: true +--- + + + +
+
+

Web development, automation and technical repair

+

I build, automate and repair web software.

+

+ For small companies, product teams and founders who need a landing page, focused web application, business workflow or difficult technical fix. +

+

+ Clear first milestone, fixed scope and async communication. Available for short projects and longer-term collaboration. +

+ + + +

Remote worldwide. Async-friendly. Europe-based.

+

Python, TypeScript, Rust, APIs, Docker and AI integrations.

+
+ +
+

Ways I can help

+

+ Start with the closest match. You do not need a finished specification. A rough brief, repository, screenshots or logs are enough for me to define a useful first milestone. +

+ +
+
+

Build

+

Websites and small web applications

+

Typical projects: $500-$1,500

+
+
+

+ Launch a clear, responsive product or service experience without the overhead of a large agency process. +

+
    +
  • product, service and SaaS landing pages
  • +
  • business websites and focused web applications
  • +
  • dashboards and admin panels
  • +
  • forms, databases and user workflows
  • +
  • implementation from an existing design
  • +
+
+
+ +
+
+

Automate

+

AI, APIs and business automation

+

Typical projects: $750-$2,000

+
+
+

+ Replace repetitive manual work with a small, maintainable tool or integration that fits the systems you already use. +

+
    +
  • email and lead-processing workflows
  • +
  • API and webhook integrations
  • +
  • AI classification, extraction and summarization
  • +
  • document processing, search and RAG
  • +
  • internal tools and operational dashboards
  • +
  • Python and TypeScript backends
  • +
+
+
+ +
+
+

Rescue

+

Technical fixes and stabilization

+

Paid diagnostics from $150

+
+
+

+ Find the real failure, fix the smallest reliable layer and leave the application easier to understand and operate. +

+
    +
  • unfinished or AI-built applications
  • +
  • broken APIs, authentication and deployments
  • +
  • Shopify, GA4 and Google Ads tracking
  • +
  • Docker, VPS and networking issues
  • +
  • lifecycle, WebSocket and backend failures
  • +
  • tests, logging and production hardening
  • +
+
+
+ +

+ All prices are in USD. These ranges are starting points and a practical filter, not a fixed price list. Scope, price and acceptance criteria are agreed before work begins. +

+
+ +
+

Selected work

+

+ My commercial offer is broad, but the same engineering approach applies throughout: reproduce the problem, isolate the real cause, implement the smallest reliable solution and verify the result. +

+ +
+

Private client work

+

Shopify analytics repair

+

+ Diagnosed duplicate ecommerce events across Shopify, the Google and YouTube app, GA4, Google Ads, GTM and consent tooling. Isolated the real measurement path, removed competing tag routes and documented the reconnect and validation plan. +

+

Shopify, GA4, Google Ads, GTM and network debugging

+
+ +
+

Third-party codebase

+

Godot plugin stabilization

+

+ Updated and hardened an existing plugin by fixing editor lifecycle cleanup, subprocess and WebSocket failures, malformed message handling, oversized buffering, reconnect behavior and regression coverage. +

+

Godot, GDScript, WebSockets, testing and debugging

+
+ +
+

Merged open source contribution

+

Quinn networking compatibility fix

+

+ Contributed a Rust networking fix that keeps QUIC endpoint creation working under Wine and Proton when optional Windows ECN functionality is unavailable. +

+

View the merged pull request

+
+ +
+

Independent engineering

+

Kova engine

+

+ Building a modular game engine in Rust with a custom runtime and ECS architecture, rendering, assets, scenes, input, physics, plugins, task systems, tooling, tests and backend-neutral public APIs. +

+

View the project overview

+
+
+ +
+

How it works

+
    +
  1. You send the current problem, repository or desired result.
  2. +
  3. I define the smallest useful paid milestone.
  4. +
  5. You receive a fixed scope, price and acceptance criteria.
  6. +
  7. I implement, test and document the result.
  8. +
+

No free speculative work. No long contract required.

+
+ +
+

Have a project or a technical problem?

+

Send:

+ +

+ I will reply with a proposed first milestone, including scope, price and acceptance criteria. +

+ +
+
diff --git a/assets/css/work-with-me.css b/assets/css/work-with-me.css new file mode 100644 index 0000000..81ea97c --- /dev/null +++ b/assets/css/work-with-me.css @@ -0,0 +1,211 @@ +.work-page { + max-width: 100%; +} + +.work-page * { + box-sizing: border-box; +} + +.work-intro { + padding: 0.25rem 0 2.4rem; + border-bottom: 1px solid var(--main-border-color); +} + +.work-kicker, +.work-label, +.work-proof-type { + margin: 0 0 0.55rem; + color: var(--text-muted-color); + font-size: 0.78rem; + font-weight: 600; + letter-spacing: 0.06em; + text-transform: uppercase; +} + +.work-intro h2 { + max-width: 17ch; + margin: 0; + font-size: clamp(2rem, 5vw, 3.35rem); + line-height: 1.08; + letter-spacing: -0.025em; +} + +.work-lead { + max-width: 44rem; + margin: 1.25rem 0 0; + font-size: 1.12rem; + line-height: 1.65; +} + +.work-availability { + max-width: 44rem; + margin: 0.75rem 0 0; + color: var(--text-muted-color); +} + +.work-actions { + display: flex; + flex-wrap: wrap; + gap: 1rem; + align-items: center; + margin: 1.5rem 0; +} + +.work-action-primary { + display: inline-flex; + align-items: center; + min-height: 2.65rem; + padding: 0.55rem 0.85rem; + border: 1px solid var(--main-border-color); + border-radius: 0.4rem; + color: var(--text-color) !important; + font-weight: 600; + text-decoration: none; +} + +.work-action-primary:hover { + border-color: currentColor; + text-decoration: none; +} + +.work-action-secondary { + font-weight: 600; +} + +.work-meta { + margin: 0.25rem 0 0; + color: var(--text-muted-color); + font-size: 0.92rem; +} + +.work-section { + padding-top: 3.2rem; +} + +.work-section > h2 { + margin-top: 0; +} + +.work-section-intro { + max-width: 46rem; + margin-bottom: 1.4rem; +} + +.work-service { + display: grid; + grid-template-columns: minmax(11rem, 0.7fr) minmax(0, 1.5fr); + gap: 2rem; + padding: 1.65rem 0; + border-top: 1px solid var(--main-border-color); +} + +.work-service:last-of-type { + border-bottom: 1px solid var(--main-border-color); +} + +.work-service h3, +.work-proof h3 { + margin: 0; +} + +.work-price { + margin: 0.75rem 0 0; + font-weight: 600; +} + +.work-service-copy > p:first-child { + margin-top: 0; +} + +.work-service-copy ul { + margin-bottom: 0; +} + +.work-price-note { + max-width: 46rem; + margin: 1rem 0 0; + color: var(--text-muted-color); + font-size: 0.9rem; +} + +.work-proof { + padding: 1.45rem 0; + border-top: 1px solid var(--main-border-color); +} + +.work-proof:last-of-type { + border-bottom: 1px solid var(--main-border-color); +} + +.work-proof p { + max-width: 48rem; +} + +.work-proof-skills { + color: var(--text-muted-color); + font-size: 0.9rem; +} + +.work-steps { + margin: 1rem 0 0; + padding: 0; + list-style: none; + counter-reset: work-step; +} + +.work-steps li { + display: grid; + grid-template-columns: 2rem minmax(0, 1fr); + gap: 0.75rem; + padding: 0.9rem 0; + border-top: 1px solid var(--main-border-color); + counter-increment: work-step; +} + +.work-steps li:last-child { + border-bottom: 1px solid var(--main-border-color); +} + +.work-steps li::before { + content: counter(work-step, decimal-leading-zero); + color: var(--text-muted-color); + font-size: 0.82rem; + font-weight: 600; +} + +.work-fit-note { + margin-top: 1.15rem; + font-weight: 600; +} + +.work-cta { + margin-top: 3.5rem; + padding: 2rem 0; + border-top: 1px solid var(--main-border-color); + border-bottom: 1px solid var(--main-border-color); +} + +.work-cta h2 { + margin-top: 0; +} + +.work-cta p, +.work-cta ul { + max-width: 46rem; +} + +@media (max-width: 760px) { + .work-service { + grid-template-columns: 1fr; + gap: 0.75rem; + } + + .work-action-primary { + width: 100%; + justify-content: center; + } + + .work-actions { + align-items: flex-start; + } +}