rnt-next
Version:
CLI para criar aplicações Next.js com configuração completa: Styled Components/Tailwind, projeto limpo/exemplos, testes opcionais, dependências adicionais e backend com Prisma/MySQL - Criado por RNT
433 lines (325 loc) • 12.5 kB
Markdown
# RNT Next CLI v4.0
CLI **interativo** para criar aplicações Next.js com configurações personalizadas. Criado por RNT.
## 🚀 Características
- ✅ **Interface interativa** com 5 prompts de configuração
- ✅ Next.js 15+ com App Router
- ✅ TypeScript configurado
- ✅ Escolha entre **Styled Components** ou **Tailwind CSS**
- ✅ **Projeto limpo** (--empty) ou **com exemplos**
- ✅ **Dependências de teste opcionais** (Jest + Testing Library)
- ✅ **Pacote de dependências adicionais opcional**
- ✅ **Backend com Prisma e MySQL opcional**
- ✅ Redux Toolkit para gerenciamento de estado
- ✅ ESLint + Prettier configurados
- ✅ Estrutura de componentes organizada
- ✅ **ColorUtils** para geração de variantes de cores HSL
- ✅ **Middleware** para controle de autenticação
- ✅ **Providers** configurados
- ✅ Arquivo **.env** com variáveis de ambiente
## 📦 Instalação
### Uso direto com NPX (Recomendado)
```bash
npx rnt-next meu-projeto
```
### Instalação global
```bash
npm install -g rnt-next
rnt-next meu-projeto
```
## 🛠️ Uso
### Criação interativa
```bash
npx rnt-next meu-projeto
```
O CLI fará **5 perguntas** antes de criar o projeto:
1. **🎨 CSS**: Styled Components ou Tailwind CSS
2. **📦 Projeto**: Limpo (--empty) ou com exemplos
3. **🧪 Testes**: Instalar Jest + Testing Library ou não
4. **📚 Deps. Adicionais**: Instalar pacote extra ou não
5. **🗄️ Backend**: Instalar Prisma + MySQL ou não
Após confirmar as configurações, o projeto será criado automaticamente.
## 📋 Configurações Disponíveis
### 1️⃣ Biblioteca de CSS
- **Styled Components**: CSS-in-JS com temas personalizáveis e ColorUtils
- **Tailwind CSS**: Framework CSS utilitário
### 2️⃣ Tipo de Projeto
- **Limpo (--empty)**: Projeto vazio, apenas estrutura básica
- **Com exemplos**: Inclui header, footer, páginas de exemplo e estrutura de rotas
### 3️⃣ Dependências de Teste
- **Sim**: Jest, Testing Library, configurações e testes de exemplo + Store com preloaded state
- **Não**: Projeto sem dependências de teste + Store simples
### 4️⃣ Dependências Adicionais
- **Sim**: React Hook Form, Zod, iMask, React Hot Toast, Framer Motion, React Icons
- **Não**: Apenas dependências essenciais
### 5️⃣ Backend com Prisma
- **Sim**: Prisma, @prisma/client, schema configurado, model User básico
- **Não**: Apenas frontend
## 📁 Estrutura do projeto
### Projeto Limpo (--empty)
```
meu-projeto/
├── src/
│ ├── app/
│ │ ├── layout.tsx (básico)
│ │ ├── page.tsx (página vazia do Next.js)
│ │ └── globals.css (apenas se Tailwind)
│ ├── components/
│ │ ├── ui/
│ │ └── providers.tsx
│ ├── lib/ (se Styled Components)
│ │ └── styled-components-registry.tsx
│ ├── redux/
│ │ ├── store.ts (simples ou com preloaded state)
│ │ └── slices/
│ │ └── authSlice.ts
│ ├── styles/
│ │ ├── globalStyles.tsx (se Styled Components)
│ │ └── theme.ts (com ColorUtils)
│ ├── utils/
│ │ └── colorUtils.ts
│ ├── hooks/
│ ├── types/
│ └── middleware.ts
├── prisma/ (se backend escolhido)
│ └── schema.prisma (com model User e comentários)
├── __tests__/ (se testes habilitados)
├── .env (com variáveis configuradas)
├── next.config.js
├── jest.config.js (se testes habilitados)
├── tailwind.config.js (se Tailwind)
├── tsconfig.json
└── package.json
```
### Projeto com Exemplos
```
meu-projeto/
├── src/
│ ├── app/
│ │ ├── (private)/
│ │ │ └── layout.tsx
│ │ ├── (public)/
│ │ │ ├── layout.tsx
│ │ │ ├── loading.tsx (⚠️ deletável)
│ │ │ └── not-found.tsx (⚠️ deletável)
│ │ ├── layout.tsx (com header/footer)
│ │ ├── page.tsx (página de exemplo)
│ │ └── globals.css (apenas se Tailwind)
│ ├── components/
│ │ ├── layout/
│ │ │ ├── header/
│ │ │ │ └── Header.tsx (⚠️ deletável)
│ │ │ └── footer/
│ │ │ └── Footer.tsx (⚠️ deletável)
│ │ ├── ui/
│ │ └── providers.tsx
│ ├── lib/ (se Styled Components)
│ │ ├── styled-components-registry.tsx
│ │ └── prisma.ts (se backend escolhido)
│ ├── redux/
│ │ ├── store.ts (simples ou com preloaded state)
│ │ └── slices/
│ │ └── authSlice.ts
│ ├── styles/
│ │ ├── globalStyles.tsx (se Styled Components - atualizado)
│ │ └── theme.ts (com ColorUtils)
│ ├── utils/
│ │ └── colorUtils.ts
│ ├── hooks/
│ ├── types/
│ └── middleware.ts
├── prisma/ (se backend escolhido)
│ └── schema.prisma (com model User e comentários)
├── __tests__/ (se testes habilitados)
│ └── page.test.tsx (⚠️ deletável)
├── .env (com variáveis configuradas)
├── next.config.js
├── jest.config.js (se testes habilitados)
├── tailwind.config.js (se Tailwind)
├── tsconfig.json
└── package.json
```
## 🎨 Tecnologias incluídas
### Core (Sempre incluído)
- **Next.js 15+** - Framework React com App Router
- **TypeScript** - Tipagem estática
- **ESLint** - Linting configurado
- **Redux Toolkit** - Gerenciamento de estado
- **Lucide React** - Ícones
- **ColorUtils** - Utilitários para geração de variantes de cores HSL
### Styling (Escolha durante instalação)
- **Styled Components** - CSS-in-JS com temas, SSR e ColorUtils integrado
- **Tailwind CSS** - Framework CSS utilitário
### Testes (Opcional)
- **Jest** - Framework de testes
- **Testing Library** - Utilitários para testes React
- **Jest Environment JSDOM** - Ambiente de testes DOM
### Dependências Adicionais (Opcional)
- **React Hook Form** - Formulários performáticos
- **Zod** - Validação de esquemas TypeScript
- **iMask** - Máscaras de input
- **React Hot Toast** - Notificações
- **Framer Motion** - Animações
- **React Icons** - Biblioteca de ícones
### Backend (Opcional)
- **Prisma** - ORM para banco de dados
- **@prisma/client** - Cliente do Prisma
- **MySQL** - Banco de dados configurado
### Desenvolvimento
- **Prettier** - Formatação de código
- **VS Code Settings** - Configurações do editor
- **Middleware** - Controle de autenticação e rotas
- **Providers** - Contextos globais configurados
## ⚙️ Configurações incluídas
### Next.js
- App Router habilitado
- Suporte a Styled Components (se escolhido)
- Configurações de imagem otimizadas
- Flag `--empty` (se projeto limpo escolhido)
### ESLint + Prettier
- Configuração otimizada para Next.js
- Regras para TypeScript e React
- Formatação automática no save
### VS Code
- Configurações de workspace
- Formatação automática
- Extensões recomendadas
### Styled Components (se escolhido)
- Configuração para SSR
- Registry para Next.js 15+
- GlobalStyles.tsx atualizado com ColorUtils
- Temas claro/escuro
- Componentes styled pré-configurados
### Tailwind CSS (se escolhido)
- Configuração completa
- Classes utilitárias personalizadas
- Suporte a dark mode
### Redux
- Store configurada condicionalmente
- AuthSlice incluído
- Middleware padrão
- Tipagem TypeScript
### Jest (se escolhido)
- Configuração para Next.js
- Setup para Testing Library
- Testes de exemplo incluídos
### Prisma (se escolhido)
- Schema configurado com model User
- Comentários explicativos
- Configuração do cliente
- Suporte a MySQL
## 🚀 Scripts disponíveis
```bash
npm run dev # Servidor de desenvolvimento
npm run build # Build de produção
npm run start # Servidor de produção
npm run lint # Executar ESLint
npm run lint:fix # Corrigir problemas do ESLint
npm test # Executar testes (se instalados)
npm run test:watch # Executar testes em modo watch (se instalados)
```
## 🗄️ Comandos do Prisma (se backend escolhido)
```bash
# Configurar DATABASE_URL no .env primeiro
npx prisma db push # Criar banco e tabelas
npx prisma generate # Gerar Prisma Client
npx prisma studio # Visualizar banco no navegador
npx prisma db pull # Importar estrutura de banco existente
npx prisma migrate dev # Criar e aplicar migrations
```
## 📝 Personalização
### Arquivos Deletáveis (apenas em projetos com exemplos)
Os arquivos marcados com `⚠️ ARQUIVO DELETÁVEL` podem ser removidos:
- `src/app/page.tsx` - Página inicial de exemplo
- `src/components/layout/header/Header.tsx` - Header de exemplo
- `src/components/layout/footer/Footer.tsx` - Footer de exemplo
- `src/app/(public)/loading.tsx` - Loading de exemplo
- `src/app/(public)/not-found.tsx` - 404 de exemplo
- `__tests__/page.test.tsx` - Testes de exemplo
### ColorUtils
Use o arquivo `src/utils/colorUtils.ts` para gerar variantes de cores:
```typescript
import { colorHSLVariants } from "@/utils/colorUtils";
const myColor = colorHSLVariants(220, 80, 50);
// Retorna: base, light, light02, light04, light08, light20, light30, light40, light50
// dark, dark02, dark04, dark08, dark20, dark30, dark40, dark50
```
### Temas
Edite `src/styles/theme.ts` para personalizar cores e breakpoints. O arquivo já inclui ColorUtils integrado.
### Middleware
Configure rotas públicas e privadas em `src/middleware.ts`.
### Styled Components
Se você escolheu Styled Components:
- Edite `src/styles/globalStyles.tsx` para estilos globais (atualizado)
- Use os temas em `src/styles/theme.ts` (com ColorUtils)
- O arquivo `styled-components-registry.tsx` é **obrigatório** para SSR
### Tailwind CSS
Se você escolheu Tailwind CSS:
- Edite `src/app/globals.css` para estilos globais
- Use `tailwind.config.js` para personalizar o tema
### Redux
- Store configurado condicionalmente baseado na escolha de testes
- AuthSlice incluído por padrão
- Adicione seus slices em `src/redux/slices/`
### Prisma (se escolhido)
- Configure `DATABASE_URL` no arquivo `.env`
- Edite `prisma/schema.prisma` para adicionar models
- Use `src/lib/prisma.ts` para conexões
## 🆕 Novidades da versão 4.0
- ✅ **Remoção da pergunta sobre Turbopack** (comando Next.js já pergunta)
- ✅ **Remoção do experimental turbo** (não mais suportado)
- ✅ **ColorUtils integrado** para geração de variantes de cores HSL
- ✅ **GlobalStyles.tsx atualizado** com novos componentes styled
- ✅ **Theme.ts atualizado** com ColorUtils integrado
- ✅ **Store condicional** baseado na escolha de ambiente de teste
- ✅ **Estrutura de rotas** com (private) e (public)
- ✅ **Middleware** para controle de autenticação
- ✅ **Providers** configurados
- ✅ **Arquivo .env** com variáveis de ambiente
- ✅ **Backend opcional** com Prisma e MySQL
- ✅ **Arquivos .styles condicionais** apenas se Styled Components
## 🎯 Casos de Uso
### Projeto Full-Stack com Backend
```
CSS: Styled Components
Projeto: Com exemplos
Testes: Sim
Deps. Adicionais: Sim
Backend: Sim (Prisma + MySQL)
```
### Projeto Frontend Limpo
```
CSS: Tailwind CSS
Projeto: Limpo (--empty)
Testes: Não
Deps. Adicionais: Sim
Backend: Não
```
### Projeto de Aprendizado
```
CSS: Styled Components
Projeto: Com exemplos
Testes: Sim
Deps. Adicionais: Não
Backend: Não
```
## 🤝 Contribuição
1. Fork o projeto
2. Crie uma branch para sua feature
3. Commit suas mudanças
4. Push para a branch
5. Abra um Pull Request
## 📄 Licença
ISC License
## 🆘 Suporte
Para problemas ou dúvidas:
1. Verifique se todas as dependências estão instaladas
2. Certifique-se de estar usando Node.js 18+
3. Execute `npm run lint` para verificar problemas de código
4. Se testes estão habilitados, execute `npm test` para verificar funcionamento
5. Se backend está habilitado, configure `DATABASE_URL` no `.env`
## 👤 Autor
Criado com 💙 por **RNT**
- GitHub: [RNT13](https://github.com/RNT13)
- LinkedIn: [Renato Minoita](https://www.linkedin.com/in/renato-minoita/)
---
**RNT Next CLI v4.0** - Configure seu projeto Next.js do seu jeito, agora com backend!