Избранное
itcrib itcrib.com
Платформа подготовки к IT-собеседованиям и e-learning — spaced repetition, геймификация, RAG-grounded ответы и изолированный code-sandbox.
- PHP 8.2 / Symfony 7.4
- Nuxt 3
- PostgreSQL 17 / pgBouncer
- Meilisearch
- RabbitMQ
- Redis
- Docker
Проблема
Подготовка к собеседованиям — это каша из разрозненных PDF, устаревших постов и квиз-приложений, которые забывают тебя, как только закрываешь вкладку. Я хотел одно место, которое учит Go, PHP, Symfony, алгоритмам, system design и cloud — и реально помнит, где я плаваю, возвращая это в нужный момент.
Архитектура
Расцепленный монорепо: REST API на Symfony 7.4 / PHP 8.2 (Controller/Api/V1) плюс EasyAdmin-бэк-офис, и SSR-фронт на Nuxt 3 / Vue 3. Данные — PostgreSQL 17 за pgBouncer, Meilisearch для полнотекстового поиска, RabbitMQ для async-работы, Redis для кеша.
Интересные части:
- Spaced-repetition движок (FSRS) —
ReviewLog,TopicMastery,UserStreakстроят персональное расписание повторений вместо тупых флеш-карт. - RAG-grounded контент — слой
ContentEmbeddingплюс AI mock-интервьюер («AI-рекрутер»). - Изолированный coderunner — отдельный sandbox-сервис исполняет сабмиты кода, по умолчанию выключен и ограничен по ресурсам.
- Контент-пайплайн компилирует тот же markdown-корпус в печатные interview-хендбуки через Python-тулинг.
Highlights
- 50 Doctrine-сущностей, ~35 сервисов, 37 миграций, 34 API-контроллера — широкая production-grade поверхность.
- Security-hardened: JWT + refresh-токены, шифрование токенов, валидация OAuth-state, моделирование cookie-consent.
- 13-сервисный Docker-стек (php, coderunner, nginx, nuxt, postgres, pgbouncer, redis, meilisearch, rabbitmq, worker, backup…), с health-check; PHPStan чисто, PHPUnit зелёный.
Результат
800+ markdown-тем по 15 доменам контента, скомпилированных и в живую платформу, и в senior-interview хендбук — продукт и мой собственный prep-материал это один корпус.
Уроки
- FSRS превращает «я всё прошёл один раз» в «я помню сложное». Расписание — вот фича.
- Code-sandbox — это 10% исполнения и 90% гарантий, что он не дотянется до того, до чего не должен.