Юрий Белк – Full stack Developer (страница 3)
Go можно ставить напрямую, но для управления версиями удобен asdf:
– ставим asdf,
– ставим Go нужной версии,
– проверяем:
bash
go version
Если asdf не хочется – поставьте Go из официального дистрибутива, это тоже нормально.
0.1.5. IDE и плагины
VS Code (как “универсальный редактор”)
VS Code удобен тем, что в одном окне можно держать весь монорепозиторий.
Рекомендуемые плагины:
– ESLint, Prettier (TS/JS)
– Prisma (подсветка схем)
– Python (официальный)
– Pylance
– Go (официальный)
– Java Extension Pack (если хотите работать с JVM в VS Code)
– OpenAPI (подсветка и валидация YAML)
– Docker
IntelliJ IDEA (для JVM)
Если вы всерьёз делаете Spring Boot/Kotlin – IntelliJ IDEA будет самым комфортным вариантом: автодополнение, дебаг, Gradle/Maven, рефакторинги.
GoLand (опционально)
Хорош для Go, но не обязателен: VS Code + Go plugin тоже отлично справляется.
0.1.6. Devcontainer: добавлять сразу?
Да, добавляем сразу, но как необязательный способ запуска.
Идея devcontainer:
– репозиторий содержит описание окружения,
– VS Code может открыть проект “в контейнере”,
– версии Node/Python/Go/Java будут одинаковыми у всех.
При этом:
– обычный запуск через терминал и docker-compose остаётся “по умолчанию”,
– devcontainer – это страховка и удобство.
В репозитории обычно появляются:
– .devcontainer/devcontainer.json
– Dockerfile для dev‑образа (если нужно)
– инструкции по установке расширений и запуску compose.
Монорепозиторий и структура
Мы используем монорепозиторий: один Git‑репо, внутри которого живут фронт, несколько бэкендов, общие пакеты и инфраструктура.
Почему так удобно именно для сравнения:
– один контракт OpenAPI на всех,
– одни e2e‑тесты на всех,
– проще переиспользовать модели, генераторы, утилиты,
– проще увидеть различия в коде рядом.
Мы договорились про:
– pnpm как менеджер пакетов,
– Turborepo как инструмент сборки/кеширования задач.
0.2.1. Договоримся о путях
Структура, которую мы будем использовать:
– /apps/frontend-next – Next.js (App Router)
– /apps/api-ts – TypeScript backend (NestJS)
– /apps/api-py – Python backend (FastAPI)
– /apps/api-java – Spring Boot + Kotlin
– /apps/api-go – Go + chi
– /packages/shared-contract – OpenAPI/DTO/генерация клиентов
– /infra – docker-compose, (позже – k8s/terraform при необходимости)
– /tests/e2e – одни тесты на все API
Важно: мы специально называем приложения одинаково предсказуемо (api-ts, api-py, …), чтобы скрипты, CI и документация были проще.
2.2. Turborepo: зачем он здесь
Turborepo полезен, когда:
– много проектов,
– есть повторяющиеся команды (lint, test, build),
– хочется кешировать результаты и запускать параллельно.
Типичный подход:
– каждый проект в apps/ имеет свои команды,
– корневые команды запускают их все,