create-expresso-toxic-react-app
v3.0.1
Published
CLI scaffolder for Express + React + SSR + Sequelize projects
Maintainers
Readme
create-expresso-toxic-react-app
Scaffolder для Express + React SSR проектов. Интерактивно настраивает стек и генерирует готовый проект за секунды.
Использование
npx create-expresso-toxic-react-app my-projectИли без имени — спросит интерактивно:
npx create-expresso-toxic-react-appЧто спрашивает при генерации
| Вопрос | Варианты | |---|---| | TypeScript? | yes / no | | CSS решение | Plain CSS / CSS Modules / Tailwind | | React Router? | yes / no | | Аутентификация | Sessions / JWT / None | | Redis для сессий? | yes / no | | Sequelize + БД? | yes / no | | Диалект БД | PostgreSQL / MySQL / SQLite | | Docker? | yes / no | | Multer (загрузка файлов)? | yes / no | | Socket.io? | yes / no | | Swagger docs? | yes / no | | i18n (i18next)? | yes / no | | git init? | yes / no | | npm install? | yes / no |
Что всегда включено
- Express с Helmet, CORS, rate-limit, централизованным error handler
- React SSR с кастомным JSX engine и client-side hydration
- Webpack 5 + Babel (поддержка ES modules, JSX, TypeScript)
- Pino — структурированное логирование
- Zod +
validate()middleware для входящих данных - envalid — валидация переменных окружения при старте
- express-async-errors — async ошибки попадают в error handler
- Path aliases —
@/вместо../../ - Jest + Supertest + React Testing Library — готовые тест-файлы
- Husky + lint-staged — pre-commit хуки
- GitHub Actions CI —
.github/workflows/ci.yml - PM2 config —
ecosystem.config.jsдля продакшна - Graceful shutdown (SIGTERM / SIGINT)
- Build / serve скрипты для продакшна
- Barrel exports,
.env.example,.gitignore
Опциональные фичи
Sessions — express-session + bcrypt, опционально Redis вместо file store
JWT — access token (15m) + refresh token (7d), verifyToken middleware
Sequelize — модель User, миграция, сид с demo-пользователем, pool настройки
authRouter — если выбрана auth + Sequelize:
| Метод | Путь | Описание | |---|---|---| | POST | /api/v1/auth/register | Регистрация | | POST | /api/v1/auth/login | Вход | | POST | /api/v1/auth/logout | Выход | | GET | /api/v1/auth/me | Текущий пользователь |
Docker — Dockerfile (multi-stage) + docker-compose.yml с сервисом БД
Multer — middleware для загрузки файлов (5MB лимит, фильтр по типам)
Socket.io — src/utils/socket.js с базовой настройкой и примером события
Swagger — swagger-jsdoc + swagger-ui-express, UI на /api-docs
i18n — i18next + i18next-http-middleware + react-i18next, локали en и ru
Структура генерируемого проекта
src/
server.js / server.ts
config/env.js ← envalid схема
components/
App.jsx · Layout.jsx · index.jsx
routes/
index.js ← barrel export
indexRouter.js · apiRouter.js · authRouter.js
middleware/
index.js ← barrel export
validate.js · isAuth.js · verifyToken.js · upload.js
utils/
logger.js · jsxRender.js · socket.js · swagger.js · i18n.js
__tests__/
api.test.js · auth.test.js
components/App.test.jsx
db/ ← если Sequelize
database.js · models/ · migrations/ · seeders/
locales/en · locales/ru ← если i18n
.github/workflows/ci.yml
ecosystem.config.jsСкрипты в генерируемом проекте
| Скрипт | Описание |
|---|---|
| npm run dev | Webpack watch + nodemon параллельно |
| npm run build | Production сборка webpack |
| npm run serve | Запуск production сервера |
| npm test | Jest |
| npm run test:watch | Jest watch режим |
| npm run prep-db | Создать БД + migrate + seed |
| npm run reset-db | Удалить и пересоздать БД |
Требования
- Node.js >= 14
- npm >= 7
