1- # Vagas Full Monorepo
1+ # Painel de Vagas
22
3- Projeto reorganizado em monorepo com dois workspaces:
3+ Uma plataforma interna para transformar arquivos XLSX de vagas em uma experiencia visual rapida, filtravel e pronta para decisao.
44
5- - ` frontend ` : dashboard React/Vite/Tailwind
6- - ` backend ` : scraper + API Express para leitura de vagas em XLSX
5+ O projeto esta organizado em monorepo e conecta duas frentes:
76
8- ## Estrutura
7+ - frontend: dashboard em React + Vite + Tailwind
8+ - backend: scraper + API em Express para leitura e exposicao dos dados
9+
10+ ## O que ja entregamos
11+
12+ - Dashboard com visual profissional em tema claro e escuro
13+ - Leitura automatica dos arquivos XLSX gerados no fluxo de scraping
14+ - Busca global por titulo, empresa, local e link
15+ - Filtros por palavra-chave
16+ - Selecao de arquivo de origem para alternar datasets
17+ - Tabela paginada com controle de itens por pagina
18+ - Endpoint de saude e endpoints de listagem/consulta de vagas
19+ - Suite de testes (unitarios + integracao) em frontend e backend
20+ - Cobertura de testes com alvo minimo de 80%
21+
22+ ## Demo
23+
24+ ### Interface em tema escuro e claro
25+
26+
27+
28+ <img width =" 1870 " height =" 847 " alt =" Image " src =" https://github.com/user-attachments/assets/37de83d7-e841-4d9c-a48f-efc2c3bb27bc " />
29+
30+
31+ <img width =" 1839 " height =" 874 " alt =" Image " src =" https://github.com/user-attachments/assets/6b2e1a50-4b0a-4904-aafa-95667ca8928c " />
32+
33+
34+ <img width =" 1861 " height =" 695 " alt =" Image " src =" https://github.com/user-attachments/assets/fbf5b122-af42-4a52-b457-23243b0175a9 " />
35+
36+ ## Arquitetura do produto
937
1038``` text
1139.
@@ -15,31 +43,36 @@ Projeto reorganizado em monorepo com dois workspaces:
1543└─ package.json
1644```
1745
46+ ## Stack
47+
48+ - Frontend: React 19, TypeScript, Vite 8, Tailwind CSS
49+ - Backend: Node.js 22+, Express 5, XLSX, Axios, Cheerio
50+ - Qualidade: Vitest, Testing Library, coverage v8
51+ - Orquestracao local: npm workspaces + Docker Compose
52+
1853## Requisitos
1954
2055- Node.js 22+
2156- npm
2257- Docker (opcional)
2358
24- ## Instalar dependencias
59+ ## Comecando rapido
2560
26- Na raiz do projeto :
61+ Instale tudo na raiz do monorepo :
2762
2863``` bash
2964npm install
3065```
3166
32- Como o projeto usa ` workspaces ` , esse comando instala dependencias da raiz e dos pacotes ` frontend ` e ` backend ` .
67+ Como usamos workspaces, esse comando instala as dependencias da raiz e tambem de ` frontend ` e ` backend ` .
3368
34- ## Rodar em desenvolvimento
35-
36- Subir frontend e backend juntos:
69+ Suba a plataforma completa em desenvolvimento:
3770
3871``` bash
3972npm run dev
4073```
4174
42- Rodar separadamente :
75+ Subida separada por servico :
4376
4477``` bash
4578npm run dev:frontend
@@ -48,37 +81,38 @@ npm run dev:backend
4881
4982## Scripts principais
5083
51- Na raiz:
84+ ### Raiz
5285
5386- ` npm run dev ` : frontend + backend juntos
5487- ` npm run dev:frontend ` : sobe apenas frontend
55- - ` npm run dev:backend ` : sobe apenas backend (API)
56- - ` npm run scraper ` : executa scraping via backend workspace
57- - ` npm run scraper:watch ` : scraping com nodemon via backend workspace
58- - ` npm run test ` : testes do backend
88+ - ` npm run dev:backend ` : sobe apenas backend
89+ - ` npm run scraper ` : executa scraping no backend
90+ - ` npm run scraper:watch ` : scraping com hot reload
91+ - ` npm run test ` : executa testes do backend
5992- ` npm run build ` : build do frontend
6093- ` npm run validate ` : teste backend + lint/build frontend
61- - ` npm run test:coverage ` : coverage frontend + backend (threshold 80%)
94+ - ` npm run test:coverage ` : coverage frontend + backend
6295
63- No backend ( ` backend/package.json ` ):
96+ ### Backend
6497
6598- ` npm run start ` : sobe API (` src/server.js ` )
6699- ` npm run dev ` : sobe API (` src/server.js ` )
67100- ` npm run scraper ` : executa scraping (` index.js ` )
68- - ` npm run scraper:watch ` : scraping com hot reload ( ` nodemon index.js ` )
69- - ` npm run api ` : alias para subir API ( ` src/server.js ` )
101+ - ` npm run scraper:watch ` : scraping com nodemon
102+ - ` npm run api ` : alias para subir API
70103- ` npm run test ` : testes com Vitest
104+ - ` npm run test:coverage ` : cobertura com Vitest
71105- ` npm run test:watch ` : testes em modo watch
72- - ` npm run validate ` : valida backend ( ` npm test ` )
106+ - ` npm run validate ` : valida backend
73107
74- No frontend ( ` frontend/package.json ` ):
108+ ### Frontend
75109
76110- ` npm run dev ` : Vite dev server
77111- ` npm run build ` : build de producao
78112- ` npm run lint ` : lint com ESLint
79113- ` npm run preview ` : preview do build
80114- ` npm run test ` : testes com Vitest
81- - ` npm run test:coverage ` : coverage com Vitest (threshold 80%)
115+ - ` npm run test:coverage ` : coverage com Vitest
82116
83117## Testes e cobertura
84118
@@ -87,36 +121,33 @@ Estrutura de testes:
87121- backend: ` backend/tests/unit ` e ` backend/tests/integration `
88122- frontend: ` frontend/tests/unit ` e ` frontend/tests/integration `
89123
90- Cobertura minima exigida :
124+ Meta minima de cobertura :
91125
92126- lines >= 80%
93127- statements >= 80%
94128- functions >= 80%
95129- branches >= 80%
96130
97- Comandos:
131+ Comandos de cobertura :
98132
99133``` bash
100134npm run test:coverage
101135npm --workspace frontend run test:coverage
102136npm --workspace backend run test:coverage
103137```
104138
105- Guia de boas praticas de testes : [ TESTING.md] ( https://github.com/Benevanio/Jobs_Scraper_Global/blob/master/ TESTING.md) .
139+ Guia de boas praticas: [ TESTING.md] ( TESTING.md )
106140
107141## Variaveis de ambiente
108142
109- Arquivo base:
110-
111- - ` backend/.env.example `
143+ Arquivos:
112144
113- Arquivo local:
114-
115- - ` backend/.env `
145+ - ` backend/.env.example ` (base)
146+ - ` backend/.env ` (local)
116147
117148## Docker
118149
119- Subir frontend e backend:
150+ Subir frontend + backend:
120151
121152``` bash
122153docker compose up --build
@@ -128,7 +159,7 @@ Subir em background:
128159docker compose up --build -d
129160```
130161
131- Parar e remover containers/rede do projeto :
162+ Parar e remover containers/rede:
132163
133164``` bash
134165docker compose down
@@ -140,30 +171,25 @@ Rebuild apenas backend:
140171docker compose build backend
141172```
142173
143- Executar scraping via Docker (execucao pontual) :
174+ Rodar scraping pontual via container :
144175
145176``` bash
146177docker compose run --rm backend node index.js
147178```
148179
149- Ver logs dos servicos :
180+ Logs :
150181
151182``` bash
152183docker compose logs -f
153- ```
154-
155- Ver logs apenas do backend:
156-
157- ``` bash
158184docker compose logs -f backend
159185```
160186
161- Servicos:
187+ Servicos em desenvolvimento :
162188
163- - ` frontend ` : http://localhost:5173
164- - ` backend ` : http://localhost:3001
189+ - frontend: http://localhost:5173
190+ - backend: http://localhost:3001
165191
166- A API le planilhas de ` backend/output/ ` .
192+ A API le planilhas localizadas em ` backend/output/ ` .
167193
168194## Endpoints da API
169195
0 commit comments