Как full‑stack фреймворки размывают роли фронтенда и бэкенда | Koder.ai