Izabrani projekti
itcrib itcrib.com
Platforma za pripremu IT intervjua i e-learning — spaced repetition, gejmifikacija, RAG-grounded odgovori i izolovan code sandbox.
- PHP 8.2 / Symfony 7.4
- Nuxt 3
- PostgreSQL 17 / pgBouncer
- Meilisearch
- RabbitMQ
- Redis
- Docker
Problem
Priprema za intervjue je haos razbacanih PDF-ova, zastarelih blog postova i kviz aplikacija koje te zaborave čim zatvoriš tab. Hteo sam jedno mesto koje uči Go, PHP, Symfony, algoritme, system design i cloud — i zaista pamti gde grešim, vraćajući to u pravom trenutku.
Arhitektura
Razdvojen monorepo: REST API na Symfony 7.4 / PHP 8.2 (Controller/Api/V1) plus EasyAdmin back-office, i SSR frontend na Nuxt 3 / Vue 3. Podaci su u PostgreSQL 17 iza pgBouncer-a, sa Meilisearch za full-text pretragu, RabbitMQ za async posao i Redis za keš.
Zanimljivi delovi:
- Spaced-repetition engine (FSRS) —
ReviewLog,TopicMastery,UserStreakgrade personalizovan raspored ponavljanja umesto glupih kartica. - RAG-grounded sadržaj —
ContentEmbeddingsloj plus AI mock intervjuer („AI regruter”). - Izolovan coderunner — zaseban sandbox servis izvršava korisničke submission-e koda, podrazumevano isključen i ograničen resursima.
- Content pipeline kompajlira isti markdown korpus u štampane interview priručnike kroz Python alate.
Highlights
- 50 Doctrine entiteta, ~35 servisa, 37 migracija, 34 API kontrolera — široka production-grade površina.
- Security-hardened: JWT + refresh token-i, enkripcija tokena, validacija OAuth state-a, modelovanje cookie-consent-a.
- 13-servisni Docker stack (php, coderunner, nginx, nuxt, postgres, pgbouncer, redis, meilisearch, rabbitmq, worker, backup…), sa health-check; PHPStan čisto, PHPUnit zelen.
Rezultat
800+ markdown tema kroz 15 domena sadržaja, kompajlirano i u živu platformu i u senior-interview priručnik — proizvod i moj sopstveni prep materijal su isti korpus.
Lekcije
- FSRS pretvara „prošao sam sve jednom” u „pamtim teške stvari”. Raspoređivanje je funkcija.
- Code sandbox je 10% izvršavanja i 90% garancije da ne može da dodirne ono što ne sme.