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: корректность проверена собственными тестами. В продакшене разумнее брать проверенную библиотеку.
- Демо-данные в проектах (история мониторинга, ссылки, задачи) сгенерированы и помечены в интерфейсах как демо.
- Контакты: только почта. Телефон и соцсети намеренно не указаны.
Почти все проекты учебно-демонстрационные, один сайт — реализованный клиентский. Опыт работы, имена клиентов и места учёбы здесь намеренно не указаны.