CV

Ewsirdev

Web developer: websites, landing pages and Go services

Website: ewsir.space

Summary

I am a web developer building landing pages, sites, web apps and backends, most often in Go. The catalogue has 30 projects: 6 landing pages, 4 multi-page sites, 3 web apps, 14 backends and 3 CLI tools; 12 of them run live on Cloudflare. Almost every project is a learning/demo project: the brands are fictional, the data is demo data, and the code is private and shared on request. The exception is one delivered client site (the client is not named).

There are no testimonials or order numbers here. I only show what can be checked: working code, tests and READMEs that list the limitations. Security is checked separately: the approach and a table of closed vulnerability classes are on the Engineering page.

Experience: projects

There are no employers or dates here. Experience is shown through projects: 30 in the catalogue, 12 of them live on Cloudflare. The six strongest:

  • Raft KV: a key-value store on Raft
    Raft from scratch: elections, replication, a CRC-checked WAL, HMAC between nodes, snapshots, deterministic failure simulation. 2,646 lines of Go, 27 tests.
  • Keyring: an authentication service
    A sign-in provider: JWT EdDSA and JWKS, TOTP, roles, secrets sealed with AES-256-GCM. 2,826 lines of Go, 50 tests, 35 routes.
  • Pulse: uptime monitor
    SSRF protection on the real connection against DNS rebinding. 1,445 lines of Go, 18 tests.
  • Sluice: API gateway
    A reverse proxy: rate limits, a circuit breaker, protection from open proxy and request smuggling; fuzzing found and closed bugs. 2,334 lines of Go, 48 tests.
  • Konvert: notes encrypted in the browser
    One-time notes encrypted in the browser (AES-256-GCM, the key only in the # fragment), Cloudflare Workers + D1, 52 vitest checks. Live demo.
  • OKSO T1: 3D landing page
    A WebGL2 landing page: SDF raymarching, GLSL ES 3.00 shaders, scroll choreography. Live demo.

Skills

Languages
Go, TypeScript, Python, JavaScript
Backend
Go net/http, stdlib-first, WebSocket с нуля, Raft, JWT EdDSA, TOTP, RBAC, FastAPI, Node.js (Express, node:sqlite)
Front end
Nuxt 4 / Vue 3, Vue 3 + Vite, Astro 7, Node.js SSG с нуля, HTML, CSS, vanilla JS
Graphics and WebGL
WebGL2 / GLSL, Canvas 2D, SVG
Data
SQLite (WAL), FTS5 / bm25, Cloudflare D1, IndexedDB
Infrastructure
Cloudflare Pages, Cloudflare Workers + D1, Docker, GitHub Actions
Quality and security
go test, go vet, gofmt, fuzzing, govulncheck, gitleaks, vitest, fast-check, pytest, hypothesis, bandit, pip-audit, axe-core, CDP, WebDriver BiDi (puppeteer-core)

Security

  • A threat model in every project README: who attacks and what they want.
  • An audit of all 13 Go projects and Bad Club; a test was added for every finding.
  • Fuzz tests, 20 s per target; bugs found and fixed in api-gateway, notes-search and envguard.
  • SAST, dependencies and secrets in CI: govulncheck, gitleaks, bandit, pip-audit, npm audit.
  • Secrets only from the environment, private repositories, CSP without unsafe-inline and HSTS in every project.

Limits

  • Almost all projects are learning/demo projects; one site is a delivered client site and the client is not named. Testimonials and order figures are not claimed here.
  • The race detector (go test -race) is not run on my working machine because there is no C compiler; it runs in CI.
  • My own WebSocket layer has not been run against the Autobahn Test Suite: correctness is covered by my own tests. For production, a proven library is the better choice.
  • Demo data in the projects (monitoring history, links, jobs) is generated and marked as demo in the interfaces.
  • Contacts: Telegram, a GitHub link and e-mail djrciv@gmail.com.

Almost all projects are demos; one site is a delivered client site. Employers, client names, dates and education are intentionally not listed; numbers come from the project measurements.