Резюме

Ewsirdev

Веб-разработчик: сайты, лендинги и сервисы на Go

Контакты: hello@ewsirdev.exampleСайт: ewsirdev-portfolio.pages.dev

О себе

Я веб-разработчик: делаю лендинги и небольшие сервисы на Go. Почти все проекты на этом сайте учебно-демонстрационные: бренды вымышленные, данные демо, код приватный и открывается по запросу. Исключение — один реализованный клиентский сайт (клиента не называю).

Здесь нет отзывов и цифр о заказах: показываю только то, что можно проверить, то есть работающий код, тесты и README с ограничениями.

Навыки

Язык и сервер
Go, REST / JSON, SSE, WebSocket
Данные
SQLite (modernc.org/sqlite), SQL (no ORM)
Фронтенд
HTML, CSS, vanilla JS, Canvas
Качество и поставка
go vet, gofmt, go test, GitHub Actions, Docker, Prometheus

Проекты (демонстрационные)

  • Янтарь: канбан-доска (Go, SQLite, Docker)
    Многопользовательская канбан-доска: регистрация, доски, колонки, карточки с перетаскиванием. Go + SQLite без CGO, фронт встроен в бинарник.
  • Короче: сократитель ссылок (Go, SQLite, Docker)
    Сокращение ссылок с алиасами и сроком жизни, статистика кликов по дням, браузерам и устройствам, дашборд под токеном. IP не хранятся.
  • Запись на приём (Go, SQLite, Docker)
    Онлайн-запись на услуги: свободные слоты с учётом длительности и рабочих часов, защита от двойной записи, админ-панель. Вымышленная студия, демо.
  • Полутон: студия света (HTML, CSS, JS)
    Лендинг вымышленной студии интерьерного света: тёплая палитра, засечный шрифт, SVG-иллюстрация, FAQ и демо-форма. Адаптивный, без внешних картинок.
  • Рубильник: трекер подписок (HTML, CSS, JS)
    Лендинг вымышленного SaaS-продукта: тёмный градиентный hero, макет интерфейса на CSS, тарифы, FAQ, демо-форма. Все цены и названия придуманы.
  • Малый масштаб: конференция (HTML, CSS, JS)
    Лендинг вымышленной однодневной конференции: плакатная типографика, расписание, спикеры-заглушки, условия, демо-форма записи.
  • Пульс: монитор доступности (Go, SQLite, SSE, REST API, Docker)
    Монитор доступности: HTTP и TCP проверки по расписанию, аптайм, p50/p95, детектор инцидентов, живой дашборд на SSE и публичная статус-страница. Go + SQLite без CGO.
  • Конвейер: очередь задач (Go, SQLite, REST API, SSE, Prometheus, Docker)
    Очередь фоновых задач: приоритеты, отложенные и cron-задачи, ретраи с backoff и jitter, dead-letter, идемпотентные ключи, lease с fencing, метрики Prometheus.
  • Комнаты: чат и доска в реальном времени (Go, WebSocket, SQLite, Canvas, Docker)
    Комнаты в реальном времени: чат с историей в SQLite, список «кто онлайн», индикатор «печатает», общая доска со штрихами и курсорами, анонимные ники. WebSocket (RFC 6455) написан на stdlib.
  • Шлюз: API-gateway (Go, stdlib only, Reverse proxy, Circuit breaker, Token bucket, SSE, Prometheus, slog, Vanilla JS, embed, Docker, GitHub Actions)
    API-шлюз на чистой stdlib: маршруты по хосту/префиксу из JSON-конфига с горячей перезагрузкой без обрыва соединений, балансировка round-robin и least-conn, health-checks, circuit breaker на узел, ретраи идемпотентных запросов, rate limit, хэшированные API-ключи, метрики Prometheus, живой дашборд на SSE.
  • Картотека: заметки с поиском (Go, SQLite, FTS5, bm25, modernc.org/sqlite (без CGO), REST API, Markdown (свой безопасный рендер), SVG force-layout, Vanilla JS, embed, Docker, GitHub Actions)
    База Markdown-заметок на Go и SQLite: вики-ссылки [[заметка]] с обратными ссылками и графом связей, полнотекстовый поиск FTS5 (bm25, подсветка, упрощённая русская морфология), история версий с собственным diff, автосохранение с разрешением конфликтов, экспорт и импорт .md.
  • ОКСО Т1: 3D-лендинг (HTML5, CSS3, Vanilla JS, WebGL2, GLSL ES 3.00, Raymarching/SDF, Scroll choreography, GitHub Actions)
    Лендинг вымышленного датчика воздуха (демо): объект рисуется одним фрагментным шейдером на чистом WebGL2 без библиотек, четыре SDF-формы перетекают по скроллу, есть SVG-фолбэк, reduced-motion и пауза вне экрана.
  • Плот: KV на Raft (Go, Raft, Distributed systems, Consensus, stdlib only, HTTP/JSON, SSE, WAL + fsync, Snapshots, Linearizability, Deterministic simulation testing, Vanilla JS, Docker, GitHub Actions)
    Учебная реализация Raft с нуля на чистой stdlib: выборы лидера, репликация лога, коммит по кворуму, лог и term/vote на диске с fsync, снапшоты с компакцией, линеаризуемые чтения (read-index), редирект фолловера на лидера. Тестируется детерминированным симулятором сети и времени с проверкой линеаризуемости; дашборд умеет убивать лидера и рвать сеть (демо).
  • Ключница: сервис аутентификации (Go, stdlib crypto, SQLite, modernc.org/sqlite (без CGO), JWT EdDSA/Ed25519, JWKS, PBKDF2, TOTP, RBAC, REST, OpenAPI 3, Vanilla JS, embed, Docker, GitHub Actions)
    Сервис аутентификации и авторизации на Go: EdDSA-JWT с ротацией ключей и JWKS, refresh-токены с ротацией и обнаружением кражи, TOTP-2FA (RFC 6238) с резервными кодами, RBAC, блокировка при переборе, сброс пароля по одноразовому токену, журнал аудита, список устройств, openapi.yaml. Не прошёл независимый аудит, не production-IdP.
  • Книга учёта: личные финансы (Go, SQLite, modernc.org/sqlite (без CGO), REST API, Nuxt 4, Vue 3, TypeScript, Pinia, SVG-графики, vitest, ESLint, Docker, GitHub Actions, PBKDF2, CSV import/export)
    Учёт личных финансов: счета в разных валютах с ручными курсами, доходы, расходы и переводы, бюджеты, платежи по cron-подобному расписанию, импорт CSV с превью, отчёты. Деньги только в целых минорных единицах, данные пользователей изолированы, графики нарисованы на SVG без библиотек. Go + SQLite и фронтенд на Nuxt 4.
  • Пиксельная стена: общий холст (Go, stdlib only, WebSocket, Canvas 2D, Vanilla JS, embed, Binary protocol, Snapshot + journal, Docker, GitHub Actions)
    Совместный холст 256×256 в духе r/place: 16 цветов, кулдаун на сессию и IP, свой WebSocket-слой на stdlib (RFC 6455) с бинарным протоколом (4 бита на пиксель), снимок и дельты, снапшот плюс журнал с восстановлением, таймлапс, зум и пан, мини-карта, экспорт PNG, админ-инструменты. Пет-проект.
  • GitPulse: аналитика git-репозиториев (Go, stdlib only, CLI, git, html/template, SVG, ANSI, os/exec, GitHub Actions, Docker)
    CLI на Go для анализа git-репозиториев без внешних зависимостей (нужен только git): stats с цветами и спарклайнами в терминале, report — самодостаточный HTML-отчёт с тепловой картой активности, churn и горячими файлами, вкладом авторов, bus factor по каталогам, ростом кода по языкам и периодами тишины (светлая и тёмная темы), diff-hotspots между ревизиями и локальный serve на 127.0.0.1. История читается потоком через git log -z --numstat -M. Пет-проект.
  • Многостраничный сайт юридической компании (Nuxt 4, Vue 3, TypeScript, Bootstrap 5, Zod, Vitest, Playwright, Docker, GitHub Actions)
    Реализованный сайт юридической и экспертной компании на Nuxt 4: 65 страниц с серверным рендерингом, JSON-LD разметка и 301-редиректы со старого сайта. Заявки уходят через серверный эндпоинт с проверкой Origin, лимитом размера тела и ограничением частоты запросов.
  • Bad Club: бронирование мест в игровом коворкинге (Vue 3, Vite, Pinia, Vue Router, GSAP, Express, node:sqlite, JWT (httpOnly cookie), Resend)
    Демо-приложение на Vue 3 и Express с SQLite: интерактивная карта зала с бронированием мест, личный кабинет и админ-панель с редактором расстановки. Вход без паролей, по одноразовому коду на e-mail.
  • Довод: концепт лендинга экспертной организации (Nuxt 4, Vue 3, TypeScript, CSS, GitHub Actions)
    Концепт лендинга на Nuxt 4 для вымышленной экспертной организации: направления услуг, форма консультации с маской телефона, карусель отзывов и страница политики. Компания, отзывы, цифры и контакты придуманы; форма ничего не отправляет.
  • Каталог демо-лендингов под 10 ниш (Vue 3, Vue Router 4, Vite 8, GitHub Actions)
    Vue-каталог из десяти самостоятельных лендингов под разные ниши малого бизнеса: у каждого своя палитра, шрифты и структура секций. Каждый лендинг загружается отдельным чанком; весь контент демонстрационный.
  • Кварц: концепт лендинга стоматологии (HTML, CSS, JavaScript, Canvas 2D, htmlhint, GitHub Actions)
    Концепт одностраничного лендинга вымышленной стоматологии в стиле Liquid Chrome Dark: стеклянные карточки, хромированные заголовки и 3D-блоб в виде зуба на canvas. Один HTML-файл без сборки и зависимостей.

Границы

  • Почти все проекты учебно-демонстрационные; один сайт — реализованный клиентский, имя клиента не называется. Отзывы и цифры по заказам здесь не заявляются.
  • Race-детектор (go test -race) на моей рабочей машине не запускается из-за отсутствия C-компилятора; он выполняется в CI.
  • Свой слой WebSocket не проходил Autobahn Test Suite: корректность проверена собственными тестами. В продакшене разумнее брать проверенную библиотеку.
  • Демо-данные в проектах (история мониторинга, ссылки, задачи) сгенерированы и помечены в интерфейсах как демо.
  • Контакты: только почта. Телефон и соцсети намеренно не указаны.

Почти все проекты учебно-демонстрационные, один сайт — реализованный клиентский. Опыт работы, имена клиентов и места учёбы здесь намеренно не указаны.