Ewsirdev
Web developer: websites, landing pages and Go services
Contact: hello@ewsirdev.exampleWebsite: ewsirdev-portfolio.pages.dev
Summary
I am a web developer building landing pages and small services in Go. Almost every project on this site 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.
Skills
- Language and server
- Go, REST / JSON, SSE, WebSocket
- Data
- SQLite (modernc.org/sqlite), SQL (no ORM)
- Front end
- HTML, CSS, vanilla JS, Canvas
- Quality and delivery
- go vet, gofmt, go test, GitHub Actions, Docker, Prometheus
Projects (demos)
- Amber: kanban board (Go, SQLite, Docker)
A multi-user kanban board: sign-up, boards, columns, drag-and-drop cards. Go + SQLite without CGO, the front end is embedded in the binary. - Short: link shortener (Go, SQLite, Docker)
Link shortening with aliases and expiry, click statistics by day, browser and device, a token-protected dashboard. IP addresses are not stored. - Appointment booking (Go, SQLite, Docker)
Online booking: free slots computed from service duration and working hours, double-booking protection, an admin panel. A fictional studio, demo. - Halftone: lighting studio (HTML, CSS, JS)
A landing page for a fictional interior lighting studio: warm palette, serif type, SVG illustration, FAQ and a demo form. Responsive, no external images. - Kill Switch: subscription tracker (HTML, CSS, JS)
A landing page for a fictional SaaS product: dark gradient hero, a UI mock-up in CSS, pricing, FAQ, a demo form. All prices and names are made up. - Small Scale: conference (HTML, CSS, JS)
A landing page for a fictional one-day conference: poster typography, schedule, placeholder speakers, terms, a demo registration form. - Pulse: uptime monitor (Go, SQLite, SSE, REST API, Docker)
An uptime monitor: scheduled HTTP and TCP checks, uptime, p50/p95, an incident detector, a live SSE dashboard and a public status page. Go + SQLite without CGO. - Conveyor: job queue (Go, SQLite, REST API, SSE, Prometheus, Docker)
A background job queue: priorities, delayed and cron jobs, retries with backoff and jitter, dead-letter, idempotency keys, leases with fencing, Prometheus metrics. - Rooms: realtime chat and board (Go, WebSocket, SQLite, Canvas, Docker)
Realtime rooms: chat with SQLite history, an online list, a typing indicator, a shared board with strokes and cursors, anonymous nicknames. WebSocket (RFC 6455) written on the stdlib. - Sluice: API gateway (Go, stdlib only, Reverse proxy, Circuit breaker, Token bucket, SSE, Prometheus, slog, Vanilla JS, embed, Docker, GitHub Actions)
An API gateway on the pure stdlib: host/prefix routes from a JSON config with hot reload that keeps connections alive, round-robin and least-conn balancing, health checks, a per-node circuit breaker, retries of idempotent requests, rate limiting, hashed API keys, Prometheus metrics and a live SSE dashboard. - Card Index: notes with search (Go, SQLite, FTS5, bm25, modernc.org/sqlite (no CGO), REST API, Markdown (custom safe renderer), SVG force-layout, Vanilla JS, embed, Docker, GitHub Actions)
A Markdown notes base on Go and SQLite: [[wiki]] links with backlinks and a link graph, FTS5 full-text search (bm25, highlighting, simplified Russian morphology), version history with its own diff, autosave with conflict resolution, .md export and import. - OKSO T1: 3D landing page (HTML5, CSS3, Vanilla JS, WebGL2, GLSL ES 3.00, Raymarching/SDF, Scroll choreography, GitHub Actions)
A landing page for a fictional air sensor (demo): the object is drawn by one fragment shader on plain WebGL2 with no libraries, four SDF shapes morph on scroll, with an SVG fallback, reduced-motion support and a pause when off screen. - Raft KV: a key-value store on Raft (Go, Raft, Distributed systems, Consensus, stdlib only, HTTP/JSON, SSE, WAL + fsync, Snapshots, Linearizability, Deterministic simulation testing, Vanilla JS, Docker, GitHub Actions)
A from-scratch teaching implementation of Raft on the pure stdlib: leader election, log replication, quorum commit, a log and term/vote on disk with fsync, snapshots with compaction, linearizable reads (read-index) and follower-to-leader redirects. It is tested with a deterministic network and time simulator that checks linearizability; the dashboard can kill the leader and cut the network (demo). - Keyring: an authentication service (Go, stdlib crypto, SQLite, modernc.org/sqlite (no CGO), JWT EdDSA/Ed25519, JWKS, PBKDF2, TOTP, RBAC, REST, OpenAPI 3, Vanilla JS, embed, Docker, GitHub Actions)
An authentication and authorization service in Go: EdDSA JWTs with key rotation and JWKS, refresh tokens with rotation and theft detection, TOTP 2FA (RFC 6238) with backup codes, RBAC, lockout on brute force, password reset by a one-time token, an audit log, a device list, openapi.yaml. Not independently audited, not a production IdP. - Ledger: personal finance tracker (Go, SQLite, modernc.org/sqlite (no CGO), REST API, Nuxt 4, Vue 3, TypeScript, Pinia, SVG charts, vitest, ESLint, Docker, GitHub Actions, PBKDF2, CSV import/export)
Personal finance tracking: accounts in different currencies with manual exchange rates, income, expenses and transfers, budgets, payments on a cron-like schedule, CSV import with a preview, reports. Money is stored only in integer minor units, users' data is isolated, and the charts are drawn in SVG with no library. Go + SQLite with a Nuxt 4 front end. - Pixel Wall: a shared canvas (Go, stdlib only, WebSocket, Canvas 2D, Vanilla JS, embed, Binary protocol, Snapshot + journal, Docker, GitHub Actions)
A shared 256x256 canvas in the spirit of r/place: 16 colors, a cooldown per session and IP, an own WebSocket layer on the stdlib (RFC 6455) with a binary protocol (4 bits per pixel), a snapshot plus deltas, a snapshot with a journal and recovery, a timelapse, zoom and pan, a minimap, PNG export and admin tools. A side project. - GitPulse: git repository analytics (Go, stdlib only, CLI, git, html/template, SVG, ANSI, os/exec, GitHub Actions, Docker)
A Go CLI that analyzes git repositories with no external dependencies (only git is needed): stats with colors and sparklines in the terminal, report, a self-contained HTML report with an activity heatmap, churn and hot files, author contributions, bus factor per directory, code growth by language and quiet periods (light and dark themes), diff-hotspots between revisions and a local serve on 127.0.0.1. History is read as a stream through git log -z --numstat -M. A side project. - Multi-page legal services website (Nuxt 4, Vue 3, TypeScript, Bootstrap 5, Zod, Vitest, Playwright, Docker, GitHub Actions)
A delivered website for a legal and expert-appraisal firm built with Nuxt 4: 65 server-rendered pages, JSON-LD markup and 301 redirects from the previous site. Lead requests go through a server endpoint that checks Origin, caps body size and rate-limits clients. - Bad Club: seat booking for a gaming coworking space (Vue 3, Vite, Pinia, Vue Router, GSAP, Express, node:sqlite, JWT (httpOnly cookie), Resend)
A demo app on Vue 3, Express and SQLite: an interactive hall map with seat booking, a user account and an admin panel with a layout editor. Passwordless sign-in via a one-time e-mail code. - Dovod: expert-firm landing concept (Nuxt 4, Vue 3, TypeScript, CSS, GitHub Actions)
A Nuxt 4 landing concept for a fictional expert-appraisal firm: service areas, a consultation form with a phone mask, a reviews carousel and a policy page. The company, reviews, figures and contacts are made up; the form sends nothing. - Catalog of 10 niche demo landing pages (Vue 3, Vue Router 4, Vite 8, GitHub Actions)
A Vue catalog of ten standalone landing pages for different small-business niches, each with its own palette, fonts and section structure. Every landing loads as a separate chunk; all content is demonstration content. - Kvarts: dental clinic landing concept (HTML, CSS, JavaScript, Canvas 2D, htmlhint, GitHub Actions)
A single-page landing concept for a fictional dental clinic in the Liquid Chrome Dark style: glass cards, chrome headings and a canvas-drawn 3D tooth blob. One HTML file with no build step or dependencies.
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: email only. Phone and social networks are intentionally not listed.
Almost all projects are demos; one site is a delivered client site. Work history, client names and education are intentionally not listed.