Стек и инструменты, которые я использую
Какие технологии беру в проекты в 2026, что выкинул, и почему один и тот же стек подходит и интернет-магазину, и SaaS.
Меня часто спрашивают: «Какой стек у тебя сейчас?». Отвечаю развёрнуто — потому что выбор инструментов прямо влияет на стоимость владения и скорость доставки фич.
Фронтенд
Базовый набор для большинства проектов:
- Next.js 16 (App Router, RSC по умолчанию)
- React 19 —
use, server actions, optimistic updates - Tailwind CSS v4 — без конфига, через
@theme inline - shadcn/ui + Radix Primitives — копирую в репо, не тащу как зависимость
Раньше я тратил по неделе на «дизайн-систему с нуля». Сейчас shadcn даёт 80% UI за один вечер, а оставшиеся 20% — это и есть продукт.
Бэкенд
| Задача | Что использую | Почему |
|---|---|---|
| API | Next.js Route Handlers / tRPC | Один репо, типы между фронтом и бэком |
| База данных | PostgreSQL (Neon) | Бесплатный tier, branching, нет vendor lock |
| ORM | Drizzle | Типобезопасность без рантайм-оверхеда |
| Auth | Clerk / Auth.js | Зависит от бюджета и SSO-требований |
| Очереди | Vercel Queues | Запустился в бете, заменил мне BullMQ |
Пример конфига Drizzle
Вот так выглядит минимальная схема для простого магазина:
import { pgTable, serial, text, integer, timestamp } from "drizzle-orm/pg-core"
export const products = pgTable("products", {
id: serial("id").primaryKey(),
slug: text("slug").notNull().unique(),
title: text("title").notNull(),
priceMinor: integer("price_minor").notNull(),
createdAt: timestamp("created_at").defaultNow().notNull(),
})
export type Product = typeof products.$inferSelect
export type NewProduct = typeof products.$inferInsertЗапрос:
const featured = await db
.select()
.from(products)
.where(eq(products.featured, true))
.limit(6)Никаких генераторов, никакого prisma generate — всё статически выводится из схемы.
Деплой
Всё едет на Vercel. Причин три:
- Превью-окружение на каждый PR — клиент видит изменения до мерджа
- Edge-кэш и ISR работают «из коробки», не нужно настраивать CDN
- Логи и аналитика интегрированы — не лезу в три разных дашборда
Чего больше нет в моём стеке
Webpack— Turbopack уже стабиленRedux— Server Components +useStateрешают 95% задачCustom CSS-in-JS— Tailwind v4 + CSS variables
Горячие клавиши
Для быстрой навигации в редакторе использую Cmd + P для файлов и Cmd + Shift + F для глобального поиска.
Если интересно глубже разобрать какой-то блок — напишите, сделаю отдельный материал.