Обо мне

Кто делает сайты и как

Я веб-разработчик: делаю лендинги, сайты, веб-приложения и бэкенды, чаще всего на Go, а также на Rust, Python и TypeScript. В каталоге 50 проектов: 6 лендингов, 8 многостраничных сайтов, 6 веб-приложений, 24 бэкендов и 6 CLI-утилит; 43 из них работают вживую: 19 на Cloudflare и 24 серверных проекта на собственном VPS (ewsir.space). Почти все проекты учебно-демонстрационные: бренды вымышленные, данные демо, код приватный и открывается по запросу. Исключение — один реализованный клиентский сайт (клиента не называю).

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

Принципы

  1. 01

    Просто и проверяемо

    Стандартная библиотека Go, понятная структура пакетов, тесты на то, что действительно важно: конкурентный захват задач, двойная бронь, протокол WebSocket.

  2. 02

    Честные ограничения

    В каждом README есть раздел «Ограничения»: один токен вместо ролей, один процесс, at-least-once вместо exactly-once. Лучше сказать заранее, чем объяснять потом.

  3. 03

    Доступность по умолчанию

    Контраст по WCAG AA, видимый фокус, работа с клавиатуры, уважение к prefers-reduced-motion, mobile-first вёрстка.

  4. 04

    Без секретов в коде

    Настройки идут через переменные окружения, токены генерируются при старте, если не заданы.

  5. 05

    Один бинарник

    Фронтенд встроен в Go-сервис через embed, запуск не требует установки зависимостей; для SQLite используется драйвер без CGO.

Как мы будем работать

  1. 01

    Разговор

    Выясняем задачу, аудиторию и ограничения. Если сайт не нужен, скажу об этом сразу.

  2. 02

    Договорённости

    Состав работ, сроки и что считается готовым. Письменно, без сюрпризов.

  3. 03

    Сборка

    Короткие итерации: промежуточный результат можно открыть и потрогать.

  4. 04

    Проверка

    Тесты, мобильные экраны, доступность, нагрузка на форму и API.

  5. 05

    Запуск

    Docker-образ или статика, инструкция по запуску, передача кода.

Честно о границах

  • Почти все проекты учебно-демонстрационные; один сайт — реализованный клиентский, имя клиента не называется. Отзывы и цифры по заказам здесь не заявляются.
  • Десять новых бэкендов (Rust, Python, TypeScript) развёрнуты на сервере и работают вживую; до выкатки проверены локально и в Docker. Rust-проект flag-store собирался и тестировался в контейнере, на моём ПК cargo не ставился.
  • Сайты bike-workshop-react, landscape-bureau-nuxt, letterpress-ts, ceramics-vue и приложения habit-tracker, flashcards-sm2, scratch-notes это концепты и демо с вымышленными данными; dupfind на Windows вручную не запускался.
  • Race-детектор (go test -race) на моей рабочей машине не запускается из-за отсутствия C-компилятора; он выполняется в CI.
  • Свой слой WebSocket не проходил Autobahn Test Suite: корректность проверена собственными тестами. В продакшене разумнее брать проверенную библиотеку.
  • Демо-данные в проектах (история мониторинга, ссылки, задачи) сгенерированы и помечены в интерфейсах как демо.
  • Контакты: Telegram, ссылка на GitHub и почта djrciv@gmail.com.