Skip to content
This repository was archived by the owner on Mar 24, 2026. It is now read-only.

Commit 02a4cdc

Browse files
committed
style: refactor README.md to final premium template with architectural diagram
1 parent 04b5de8 commit 02a4cdc

1 file changed

Lines changed: 88 additions & 49 deletions

File tree

README.md

Lines changed: 88 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,19 @@
1-
# Go File Processor
1+
<div align="center">
2+
<h1>Go File Processor</h1>
3+
<p>Processamento paralelo e resiliente de arquivos massivos com Worker Pool em Go.</p>
24

3-
> Processamento paralelo e resiliente de arquivos massivos com Worker Pool em Go.
5+
<img src="assets/github-go.png" alt="Go File Processor Banner" width="600px">
46

5-
[![CI](https://github.com/ESousa97/go-file-processor/actions/workflows/ci.yml/badge.svg)](https://github.com/ESousa97/go-file-processor/actions)
6-
[![Go Report Card](https://goreportcard.com/badge/github.com/ESousa97/go-file-processor)](https://goreportcard.com/report/github.com/ESousa97/go-file-processor)
7-
[![CodeFactor](https://www.codefactor.io/repository/github/ESousa97/go-file-processor/badge)](https://www.codefactor.io/repository/github/ESousa97/go-file-processor)
8-
[![Go Reference](https://pkg.go.dev/badge/github.com/ESousa97/go-file-processor.svg)](https://pkg.go.dev/github.com/ESousa97/go-file-processor)
9-
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
10-
[![Go Version](https://img.shields.io/github/go-mod/go-version/ESousa97/go-file-processor)](https://github.com/ESousa97/go-file-processor)
11-
[![Last Commit](https://img.shields.io/github/last-commit/ESousa97/go-file-processor)](https://github.com/ESousa97/go-file-processor/commits/main)
7+
<br>
8+
9+
[![CI](https://github.com/ESousa97/go-file-processor/actions/workflows/ci.yml/badge.svg)](https://github.com/ESousa97/go-file-processor/actions)
10+
[![Go Report Card](https://goreportcard.com/badge/github.com/ESousa97/go-file-processor)](https://goreportcard.com/report/github.com/ESousa97/go-file-processor)
11+
[![CodeFactor](https://www.codefactor.io/repository/github/ESousa97/go-file-processor/badge)](https://www.codefactor.io/repository/github/ESousa97/go-file-processor)
12+
[![Go Reference](https://pkg.go.dev/badge/github.com/ESousa97/go-file-processor.svg)](https://pkg.go.dev/github.com/ESousa97/go-file-processor)
13+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
14+
[![Go Version](https://img.shields.io/github/go-mod/go-version/ESousa97/go-file-processor)](https://github.com/ESousa97/go-file-processor)
15+
[![Last Commit](https://img.shields.io/github/last-commit/ESousa97/go-file-processor)](https://github.com/ESousa97/go-file-processor/commits/main)
16+
</div>
1217

1318
---
1419

@@ -17,6 +22,7 @@ O **Go File Processor** é uma ferramenta de linha de comando e biblioteca de al
1722
## Demonstração
1823

1924
### Como Biblioteca
25+
Adicione transformadores e configure o pool de execução de forma fluida:
2026

2127
```go
2228
proc := processor.NewCSVToJSONProcessor()
@@ -29,8 +35,14 @@ config.AddTransformer(processor.FieldMasker("email"))
2935
metrics, err := proc.Process("input.csv", "output.json", config)
3036
```
3137

32-
### Como CLI (Output)
38+
### Como CLI
39+
Execute processamentos massivos com métricas em tempo real:
3340

41+
```bash
42+
./fileproc -input data.csv -output data.json -workers 4
43+
```
44+
45+
Output:
3446
```text
3547
[INFO] Iniciando processamento...
3648
[INFO] Progresso: 100000 linhas processadas
@@ -42,18 +54,18 @@ metrics, err := proc.Process("input.csv", "output.json", config)
4254

4355
## Stack Tecnológico
4456

45-
| Tecnologia | Papel |
46-
| ------------------- | ------------------------------------------------- |
47-
| **Go** | Linguagem principal (Concorrência nativa) |
48-
| **Worker Pool** | Gerenciamento de paralelismo e carga |
49-
| **slog** | Structured logging para observabilidade |
50-
| **Atomic Counters** | Coleta de métricas sem lock |
51-
| **Channels** | Comunicação segura entre Producer/Worker/Consumer |
57+
| Tecnologia | Papel |
58+
|------------|-------|
59+
| **Go 1.22+** | Linguagem principal com concorrência nativa de alta performance |
60+
| **Worker Pool** | Gerenciamento de paralelismo e controle de carga |
61+
| **slog** | Structured logging para observabilidade e rastreabilidade |
62+
| **Atomic Counters** | Coleta de métricas de alta performance sem contenção (lock-free) |
63+
| **Channels** | Comunicação segura e desacoplada entre Producer, Workers e Consumer |
5264

5365
## Pré-requisitos
5466

55-
- Go >= 1.22
56-
- Make (opcional, para automação)
67+
- **Go >= 1.22**
68+
- **Make** (para automação de build e benchmarks)
5769

5870
## Instalação e Uso
5971

@@ -63,12 +75,11 @@ metrics, err := proc.Process("input.csv", "output.json", config)
6375
git clone https://github.com/ESousa97/go-file-processor.git
6476
cd go-file-processor
6577
make build
66-
./fileproc -input data.csv -output data.json -workers 4
6778
```
6879

69-
### Geração de Dados de Teste
80+
### Geração de Dados e Benchmark
7081

71-
Para testar performance com arquivos gigantes (100k+ linhas):
82+
Para validar a performance com arquivos de 100k+ linhas:
7283

7384
```bash
7485
make generate-data
@@ -77,53 +88,81 @@ make bench
7788

7889
## Makefile Targets
7990

80-
| Target | Descrição |
81-
| --------------- | --------------------------------------------------- |
82-
| `build` | Compila o binário `fileproc` na raiz do projeto |
83-
| `test` | Executa todos os testes unitários |
84-
| `bench` | Roda a suíte de benchmarks (Sequencial vs Paralelo) |
85-
| `generate-data` | Gera arquivo `large_test.csv` com 100.000 registros |
86-
| `clean` | Remove binários e arquivos temporários de teste |
91+
| Target | Descrição |
92+
|--------|-----------|
93+
| `make build` | Compila o binário `fileproc` na raiz do projeto |
94+
| `make test` | Executa a suíte de testes unitários |
95+
| `make bench` | Roda comparativos de performance (Sequencial vs Paralelo) |
96+
| `make generate-data` | Gera arquivo de teste massivo (100.000 registros) |
97+
| `make clean` | Remove binários e arquivos temporários |
8798

8899
## Arquitetura
89100

90-
O projeto segue uma arquitetura modular focada em streaming de dados:
91-
92-
1. **Producer**: Lê o arquivo CSV linha a linha (bufio) e despacha para o canal de jobs.
93-
2. **Worker Pool**: Conjunto de goroutines que consomem os jobs, aplicam transformações e validam tipos.
94-
3. **Consumer**: Coleta os resultados processados e serializa o JSON final via streaming.
95-
4. **Transformation Layer**: Padrão Middleware que permite injetar lógica de filtro e alteração em tempo de execução.
101+
O projeto utiliza um modelo de streaming baseado em canais para processar dados sem carregar o arquivo inteiro na memória.
102+
103+
```mermaid
104+
graph LR
105+
Input[CSV Input] --> Producer[Producer]
106+
Producer --> Jobs{Job Channel}
107+
Jobs --> W1[Worker 1]
108+
Jobs --> W2[Worker 2]
109+
Jobs --> WN[Worker N]
110+
W1 & W2 & WN --> Transformers[Transformation Layer]
111+
Transformers --> Results{Result Channel}
112+
Results --> Consumer[Consumer]
113+
Consumer --> Output[JSON Output]
114+
115+
subgraph "Worker Pool"
116+
W1
117+
W2
118+
WN
119+
end
120+
```
96121

97122
## API Reference
98123

99-
Veja a documentação completa e exemplos em [pkg.go.dev](https://pkg.go.dev/github.com/ESousa97/go-file-processor).
124+
Documentação técnica detalhada disponível em [pkg.go.dev/github.com/ESousa97/go-file-processor](https://pkg.go.dev/github.com/ESousa97/go-file-processor).
100125

101126
## Configuração (CLI Flags)
102127

103-
| Flag | Descrição | Tipo | Padrão |
104-
| ---------- | --------------------------------- | ------ | ------------- |
105-
| `-input` | Caminho do arquivo CSV de entrada | string | `input.csv` |
106-
| `-output` | Caminho do arquivo JSON de saída | string | `output.json` |
107-
| `-workers` | Número de workers simultâneos | int | `4` |
128+
| Flag | Descrição | Tipo | Padrão |
129+
|------|-----------|------|---------|
130+
| `-input` | Caminho do arquivo CSV de entrada | `string` | `input.csv` |
131+
| `-output` | Caminho do arquivo JSON de saída | `string` | `output.json` |
132+
| `-workers` | Número de workers simultâneos | `int` | `4` |
108133

109134
## Roadmap
110135

111-
- [x] Implementação core (Worker Pool)
112-
- [x] Camada de Transformação (Middleware)
113-
- [x] Sistema de Métricas e Logs Estruturados
114-
- [x] Benchmarking e Otimização
136+
Acompanhe as etapas de evolução do projeto:
137+
138+
- [x] **Fase 1: Fundação** — Implementação do Worker Pool e streaming core.
139+
- [x] **Fase 2: Transformação** — Camada de Middleware (Chain of Responsibility).
140+
- [x] **Fase 3: Observabilidade** — Métricas atômicas e logs estruturados (`slog`).
141+
- [x] **Fase 4: Governança** — CI/CD, Documentação profissional e Badges.
142+
- [ ] **Fase 5: Extensibilidade** — Suporte a outros formatos (XML, Parquet).
115143

116144
## Contribuindo
117145

118-
Contribuições são bem-vindas! Veja o [CONTRIBUTING.md](CONTRIBUTING.md) para detalhes sobre nosso processo de desenvolvimento.
146+
Interessado em colaborar? Veja nosso [CONTRIBUTING.md](CONTRIBUTING.md) para padrões de código e processo de PR.
119147

120148
## Licença
121149

122-
Distribuído sob a licença MIT. Veja `LICENSE` para mais informações.
150+
Este projeto está licenciado sob a **MIT License** — veja o arquivo [LICENSE](LICENSE) para detalhes.
151+
152+
<div align="center">
123153

124154
## Autor
125155

126156
**Enoque Sousa**
127157

128-
- [Portfólio](https://enoquesousa.vercel.app)
129-
- [GitHub](https://github.com/ESousa97)
158+
[![LinkedIn](https://img.shields.io/badge/LinkedIn-0077B5?style=flat&logo=linkedin&logoColor=white)](https://www.linkedin.com/in/enoque-sousa-bb89aa168/)
159+
[![GitHub](https://img.shields.io/badge/GitHub-100000?style=flat&logo=github&logoColor=white)](https://github.com/ESousa97)
160+
[![Portfolio](https://img.shields.io/badge/Portfolio-FF5722?style=flat&logo=target&logoColor=white)](https://enoquesousa.vercel.app)
161+
162+
**[⬆ Voltar ao topo](#go-file-processor)**
163+
164+
Feito com ❤️ por [Enoque Sousa](https://github.com/ESousa97)
165+
166+
**Status do Projeto:** Ativo — Em constante atualização
167+
168+
</div>

0 commit comments

Comments
 (0)