web
Job Vacancy
Платформа вакансий для всех профессий Узбекистана: от кассира до разработчика, на 4 языках, с чатом в реальном времени.
- Роль
- Автор и единственный разработчик
- Период
- сент. 2026 г.
- Технологии
- GochisqlcRiverPostgreSQL 18RedisMinIOWebSocketReact 19React Router SSRViteTailwind 4OpenAPITelegram Gateway
Проблема
Существующие площадки плохо ищут по смешанной письменности (латиница/кириллица/русский) и не поддерживают процесс найма.
Решение
Поисковый индекс между письменностями, SSR-веб на 4 языках, чат в реальном времени и канбан на Go-монолите.
Результат
Бэкенд и веб готовы (~35 тыс. строк), поиск 47 мс на 100k вакансий; админка, Flutter и деплой — следующие.
Job Vacancy — мой собственный продукт: быстрая платформа для соискателей и работодателей. Главная сложность — поиск: латиница, кириллица и русское написание должны считаться одним и тем же («дастурчи» = «dasturchi»), плюс лёгкий стемминг, префиксное совпадение, взвешенное ранжирование и триграммный запасной вариант для опечаток («fluter» находит Flutter). На 100 тыс. вакансий самый широкий запрос ~47 мс, кэшированный 2–3 мс.
Функции: жизненный цикл вакансии (черновик → модерация → 30 дней публикации → архив), до 5 резюме с PDF-экспортом на 4 языках, канбан работодателя, чат в реальном времени по каждому отклику (текст, фото, файл, голос, геолокация), уведомления через Telegram-бот и email, оповещения по сохранённым поискам. Вход: email/Google, телефон через Telegram Gateway, 15-минутные JWT и refresh-токены, убивающие сессию при повторном использовании.
Архитектура: модульный монолит на Go (chi, pgx + sqlc, goose, очередь River, WebSocket-хаб на несколько инстансов через Redis pub/sub), TypeScript-типы генерируются из OpenAPI-контракта. Веб — React Router v8 SSR, отдельный URL для каждого языка, JobPosting JSON-LD, sitemap с hreflang, главная 145 КБ JS gzip, LCP < 0,9 с на медленном 4G. Дизайн вдохновлён самаркандской плиткой: узор гирих, цвета лазурит и бирюза.