Skip to content

Commit 6596b1e

Browse files
Docs (#3)
* docs: add Readme.md * docs: update Readme.md
1 parent 8a6007f commit 6596b1e

1 file changed

Lines changed: 346 additions & 19 deletions

File tree

README.md

Lines changed: 346 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,34 +1,361 @@
1-
This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app).
1+
# DevStore 🛍️
22

3-
## Getting Started
3+
<div align="center">
44

5-
First, run the development server:
5+
![DevStore Banner](https://res.cloudinary.com/delo0gvyb/image/upload/v1762913754/devstore_hrjh4y.png)
6+
7+
### Uma plataforma de e-commerce moderna construída com Next.js
8+
9+
[![Next.js](https://img.shields.io/badge/-Next.js%2016-black?style=plastic&logo=next.js&logoColor=white)](https://nextjs.org/)
10+
[![React](https://img.shields.io/badge/-React%2019-61DAFB?style=plastic&logo=react&logoColor=white)](https://react.dev/)
11+
[![TypeScript](https://img.shields.io/badge/-TypeScript%205-3178C6?style=plastic&logo=typescript&logoColor=white)](https://www.typescriptlang.org/)
12+
[![Tailwind CSS](https://img.shields.io/badge/-Tailwind%20CSS%204-06B6D4?style=plastic&logo=tailwindcss&logoColor=white)](https://tailwindcss.com/)
13+
[![ESLint](https://img.shields.io/badge/-ESLint%209-4B3599?style=plastic&logo=eslint&logoColor=white)](https://eslint.org/)
14+
[![Cypress](https://img.shields.io/badge/-Cypress-17202C?style=plastic&logo=cypress&logoColor=white)](https://cypress.io/)
15+
16+
---
17+
18+
## 🎯 Menu Rápido
19+
20+
| 📋 Sobre | 🚀 Setup | 📦 Tecnologias | 🏗️ Arquitetura | 🧪 Testes | 👨‍💻 Contribuir |
21+
| --------------------------- | ------------------------------------- | ---------------------------------- | ---------------------------------- | ------------------ | --------------------------- |
22+
| [Clique](#-sobre-o-projeto) | [Clique](#-instalação-e-configuração) | [Clique](#-tecnologias-utilizadas) | [Clique](#️-padrões-e-arquitetura) | [Clique](#-testes) | [Clique](#-como-contribuir) |
23+
24+
---
25+
26+
</div>
27+
28+
## 📋 Sobre o Projeto
29+
30+
**DevStore** é uma plataforma de e-commerce moderna desenvolvida como um projeto educacional. <br> O projeto demonstra as melhores práticas de desenvolvimento web com Next.js 16,<br> incluindo renderização no servidor (SSR), geração estática (SSG), API routes, e otimizações de performance.
31+
32+
### Características Principais
33+
34+
-**Catálogo de Produtos** - Listagem completa com busca em tempo real
35+
-**Carrinhos Dinâmicos** - Gerenciamento de carrinho com Context API
36+
-**Página de Produto** - Detalhes completos com imagens otimizadas
37+
-**API REST** - Endpoints para produtos e busca
38+
-**Testes E2E** - Cobertura com Cypress
39+
-**Performance** - Otimizações automáticas do Next.js
40+
41+
---
42+
43+
## 🚀 Instalação e Configuração
44+
45+
### Pré-requisitos
46+
47+
- **Node.js** 18.17 ou superior
48+
- **pnpm** 8.0+ (gerenciador de pacotes recomendado)
49+
50+
### Passo a Passo
51+
52+
**1. Clone o repositório**
53+
54+
```bash
55+
git clone https://github.com/emmanuelmarcosdeoliveira/devstore.git
56+
cd devstore
57+
```
58+
59+
**2. Instale as dependências**
60+
61+
```bash
62+
pnpm install
63+
```
64+
65+
**3. Configure as variáveis de ambiente**
66+
67+
Crie um arquivo `.env.local` na raiz do projeto:
68+
69+
```env
70+
# Exemplo de configuração
71+
NEXT_PUBLIC_API_URL=http://localhost:3000
72+
```
73+
74+
**4. Execute o servidor de desenvolvimento**
675

776
```bash
8-
npm run dev
9-
# or
10-
yarn dev
11-
# or
1277
pnpm dev
13-
# or
14-
bun dev
1578
```
1679

17-
Open [http://localhost:3000](http://localhost:3000) with your browser to see the result.
80+
Acesse [http://localhost:3000](http://localhost:3000) no seu navegador.
81+
82+
### Scripts Disponíveis
83+
84+
| Comando | Descrição |
85+
| ------------ | ------------------------------------ |
86+
| `pnpm dev` | Inicia o servidor de desenvolvimento |
87+
| `pnpm build` | Cria a build de produção |
88+
| `pnpm start` | Inicia o servidor em produção |
89+
| `pnpm lint` | Executa verificações ESLint |
90+
| `pnpm test` | Executa testes com Cypress |
91+
92+
---
93+
94+
## 📦 Tecnologias Utilizadas
95+
96+
### Framework e Runtime
97+
98+
| Tecnologia | Versão | Propósito |
99+
| -------------- | ------ | --------------------------- |
100+
| **Next.js** | 16.0.0 | Framework React com SSR/SSG |
101+
| **React** | 19.2.0 | Biblioteca UI |
102+
| **React DOM** | 19.2.0 | Renderização no DOM |
103+
| **TypeScript** | 5.x | Tipagem estática |
104+
105+
### Estilização
106+
107+
| Tecnologia | Versão | Propósito |
108+
| ------------------ | ------ | ------------------------- |
109+
| **Tailwind CSS** | 4.x | Framework CSS utilitário |
110+
| **PostCSS** | 4.x | Processamento de CSS |
111+
| **Tailwind Merge** | 3.3.1 | Merge de classes Tailwind |
112+
113+
### Validação e Tipos
114+
115+
| Tecnologia | Versão | Propósito |
116+
| ---------------------- | ------ | ---------------------------------- |
117+
| **Zod** | 4.1.12 | Validação de esquemas TypeScript |
118+
| **@t3-oss/env-nextjs** | 0.13.8 | Validação de variáveis de ambiente |
119+
120+
### UI e Ícones
121+
122+
| Tecnologia | Versão | Propósito |
123+
| ---------------- | ------- | ------------------------ |
124+
| **Lucide React** | 0.548.0 | Ícones SVG reutilizáveis |
125+
126+
### Ferramentas de Desenvolvimento
127+
128+
| Tecnologia | Versão | Propósito |
129+
| ------------------------ | ------ | ----------------------------- |
130+
| **ESLint** | 9.x | Análise estática de código |
131+
| **Cypress** | 15.6.0 | Testes end-to-end |
132+
| **Babel React Compiler** | 1.0.0 | Compilação otimizada de React |
133+
134+
---
135+
136+
## 🏗️ Padrões e Arquitetura
137+
138+
### Estrutura do Projeto
139+
140+
```
141+
devstore/
142+
├── src/
143+
│ ├── app/ # Next.js App Router
144+
│ │ ├── (store)/ # Grupo de rotas da loja
145+
│ │ │ ├── (home)/ # Página inicial
146+
│ │ │ ├── product/ # Página de produtos
147+
│ │ │ └── search/ # Página de busca
148+
│ │ ├── api/ # API Routes
149+
│ │ │ └── products/ # Endpoints de produtos
150+
│ │ └── layout.tsx # Layout raiz
151+
│ ├── components/ # Componentes React reutilizáveis
152+
│ ├── context/ # Context API para estado global
153+
│ ├── data/ # Tipos e utilitários de dados
154+
│ └── env.ts # Validação de variáveis de ambiente
155+
├── cypress/ # Testes E2E
156+
├── public/ # Arquivos estáticos
157+
└── package.json # Dependências do projeto
158+
```
159+
160+
### Padrões Implementados
161+
162+
#### 1. **Server Components (SSR)**
163+
164+
- Componentes Next.js renderizados no servidor por padrão
165+
- Reduz JavaScript no cliente e melhora SEO
166+
167+
#### 2. **Context API**
168+
169+
- Gerenciamento de estado global do carrinho
170+
- Evita prop drilling
171+
172+
#### 3. **API Routes**
173+
174+
- Endpoints RESTful nativos do Next.js
175+
- Localizado em `src/app/api/`
176+
177+
#### 4. **Validação com Zod**
178+
179+
- Tipagem forte de dados
180+
- Validação em tempo de compilação
181+
182+
#### 5. **TypeScript Strict**
183+
184+
- Modo strict ativado
185+
- Type safety em todo o projeto
186+
187+
---
188+
189+
## 🧪 Testes
190+
191+
### Testes E2E com Cypress
192+
193+
Os testes estão localizados em `cypress/e2e/`:
194+
195+
**Executar testes:**
196+
197+
```bash
198+
pnpm cypress run
199+
```
200+
201+
**Testes Inclusos:**
202+
203+
- ✅ Adicionar produto ao carrinho
204+
- ✅ Busca de produtos
205+
- ✅ Navegação entre páginas
206+
207+
---
208+
209+
## 📖 Aprendizado e Fonte
210+
211+
Este projeto foi desenvolvido como material de estudo baseado na formação da **RocketSeat**.
212+
213+
Para aprender mais: [RocketSeat](https://www.rocketseat.com.br/)
214+
215+
---
216+
217+
## 🔧 Variáveis de Ambiente
218+
219+
Crie um arquivo `.env.local` com as configurações necessárias:
220+
221+
```env
222+
# Exemplo
223+
NEXT_PUBLIC_API_URL=http://localhost:3000
224+
NODE_ENV=development
225+
```
226+
227+
---
228+
229+
## 🚀 Deploy
230+
231+
### Deploy no Vercel (Recomendado)
232+
233+
```bash
234+
# Instale o Vercel CLI
235+
npm install -g vercel
236+
237+
# Faça deploy
238+
vercel
239+
```
240+
241+
---
242+
243+
## 🤝 Como Contribuir
244+
245+
Sua contribuição é bem-vinda! Aqui estão os passos para contribuir:
246+
247+
<details>
248+
<summary><strong>📌 Clique para ver o guia completo de contribuição</strong></summary>
249+
250+
### Passo 1: Familiarize-se com o Projeto
251+
252+
- Leia a documentação incluída
253+
- Explore o código e sua estrutura
254+
- Entenda como o projeto funciona
255+
256+
### Passo 2: Faça um Fork
257+
258+
Crie uma cópia (fork) do repositório em sua conta do GitHub.
259+
260+
[![GitHub Docs](https://img.shields.io/badge/GitHub%20Docs-Fork%20a%20Repo-181717?style=plastic&logo=github)](https://docs.github.com/pt/pull-requests/collaborating-with-pull-requests/working-with-forks/fork-a-repo)
261+
262+
### Passo 3: Clone o Repositório
263+
264+
```bash
265+
git clone https://github.com/SEU-USUARIO/devstore.git
266+
cd devstore
267+
```
268+
269+
### Passo 4: Crie uma Branch
270+
271+
```bash
272+
git checkout -b feature/sua-feature
273+
# ou
274+
git checkout -b fix/seu-fix
275+
```
276+
277+
**Convenção de nomes:**
278+
279+
- `feature/` - Para novas funcionalidades
280+
- `fix/` - Para correções de bugs
281+
- `docs/` - Para documentação
282+
- `refactor/` - Para refatoração
283+
284+
### Passo 5: Faça as Alterações
285+
286+
- Implemente suas mudanças
287+
- Adicione testes se necessário
288+
- Mantenha o código limpo (execute `pnpm lint`)
289+
290+
### Passo 6: Commit e Push
291+
292+
```bash
293+
git add .
294+
git commit -m "feat: descrição clara das alterações"
295+
git push origin feature/sua-feature
296+
```
297+
298+
**Padrão de mensagens de commit:**
299+
300+
- `feat:` Nova funcionalidade
301+
- `fix:` Correção de bug
302+
- `docs:` Mudanças na documentação
303+
- `style:` Formatação de código
304+
- `refactor:` Refatoração de código
305+
- `test:` Adição de testes
306+
307+
### Passo 7: Crie um Pull Request
308+
309+
Acesse o repositório original e clique em "New Pull Request". Descreva claramente:
310+
311+
- O que foi mudado
312+
- Por que foi mudado
313+
- Como testar as alterações
314+
315+
### Passo 8: Revise e Responda ao Feedback
316+
317+
Os mantedores podem sugerir alterações. Colabore e faça os ajustes necessários.
318+
319+
</details>
320+
321+
---
322+
323+
## 👨‍💻 Desenvolvedor
324+
325+
<div align="center">
326+
327+
### Desenvolvido por
328+
329+
<img height="120px" src="https://res.cloudinary.com/delo0gvyb/image/upload/v1752287431/profile_mjvmdb.png" alt="Emmanuel Oliveira" style="border-radius: 50%; border: 3px solid #3178C6;">
330+
331+
#### **Emmanuel Oliveira**
332+
333+
💖 **Desenvolvido com dedicação**
334+
335+
[![LinkedIn](https://img.shields.io/badge/-LinkedIn-0A66C2?style=plastic&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/emmanuel-marcos-oliveira/)
336+
[![WhatsApp](https://img.shields.io/badge/-WhatsApp-25D366?style=plastic&logo=whatsapp&logoColor=white)](https://wa.me/5511968336094)
337+
[![Email](https://img.shields.io/badge/-Gmail-EA4335?style=plastic&logo=gmail&logoColor=white)](mailto:ofs.dev.br@gmail.com)
338+
339+
**&copy; 2025 - Todos os Direitos Reservados**
340+
341+
</div>
342+
343+
---
344+
345+
## 📄 Licença
18346

19-
You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file.
347+
![MIT License](https://img.shields.io/badge/License-MIT-97CA00?style=plastic&logo=mit&logoColor=white)
20348

21-
## Learn More
349+
Este projeto está sob a licença **MIT**. Veja o arquivo [LICENSE](./LICENSE) para mais detalhes.
22350

23-
To learn more about Next.js, take a look at the following resources:
351+
Lançado em 2025.
24352

25-
- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API.
26-
- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial.
353+
---
27354

28-
You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome!
355+
<div align="center">
29356

30-
## Deploy on Vercel
357+
### ⭐ Se este projeto foi útil para você, considere dar uma estrela!
31358

32-
The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js.
359+
**Obrigado por chegar até aqui!** 😁
33360

34-
Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details.
361+
</div>

0 commit comments

Comments
 (0)