Skip to content

Commit 7d8d9dd

Browse files
authored
Merge branch 'master' into develop
Signed-off-by: Benevanio <benevaniosantos930@gmail.com>
2 parents a2bffa9 + 5acf3a2 commit 7d8d9dd

36 files changed

Lines changed: 3554 additions & 13449 deletions

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,4 @@ backend/coverage/
2121

2222
# Dist-electron
2323
dist-electron/.sfdx/
24+
pnpm-lock.yaml

ESCOPO.md

Lines changed: 293 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,293 @@
1+
# Documento Inicial de Produto (MVP)
2+
3+
## 1. Visão do Produto
4+
5+
### Nome Temporário
6+
7+
A definir.
8+
9+
### Problema
10+
11+
Profissionais buscam oportunidades de trabalho em diversas plataformas, porém encontram informações dispersas, processos repetitivos e dificuldade em acompanhar vagas relevantes.
12+
13+
### Solução
14+
15+
Desenvolver uma plataforma simples e intuitiva para descoberta, pesquisa e acompanhamento de oportunidades profissionais.
16+
17+
### Objetivo do MVP
18+
19+
Permitir que usuários:
20+
21+
* Criem uma conta;
22+
* Realizem login;
23+
* Pesquisem vagas;
24+
* Visualizem detalhes das vagas;
25+
* Possuam uma área autenticada para gerenciamento de oportunidades.
26+
27+
---
28+
29+
# 2. Público-Alvo
30+
31+
## Primário
32+
33+
* Desenvolvedores
34+
* Profissionais de tecnologia
35+
* Estudantes em busca de estágio
36+
* Pessoas em transição de carreira
37+
38+
## Secundário
39+
40+
* Recrutadores
41+
* Empresas parceiras
42+
43+
---
44+
45+
# 3. Regras de Negócio
46+
47+
## Cadastro
48+
49+
* Usuário deve possuir e-mail único.
50+
* Senha deve atender requisitos mínimos de segurança.
51+
* Cadastro gera conta ativa imediatamente.
52+
53+
## Login
54+
55+
* Autenticação por e-mail e senha.
56+
* Sessão protegida por token.
57+
58+
## Busca de Vagas
59+
60+
* Disponível para visitantes.
61+
* Pesquisa por palavra-chave.
62+
* Filtro por localização.
63+
* Filtro por modalidade (remoto, híbrido, presencial).
64+
65+
## Painel de Vagas
66+
67+
* Acesso exclusivo para usuários autenticados.
68+
* Exibe vagas visualizadas.
69+
* Exibe vagas salvas.
70+
* Permite acompanhamento de oportunidades.
71+
72+
## Landing Page
73+
74+
* Apresentação da plataforma.
75+
* Benefícios do produto.
76+
* Estatísticas do projeto.
77+
* Seção de colaboradores.
78+
* Links para GitHub e redes sociais.
79+
80+
---
81+
82+
# 4. Escopo MVP
83+
84+
## Dentro do MVP
85+
86+
* Landing Page
87+
* Cadastro
88+
* Login
89+
* Recuperação de senha
90+
* Busca de vagas
91+
* Visualização de vagas
92+
* Painel autenticado
93+
94+
## Fora do MVP
95+
96+
* Inteligência artificial
97+
* Matching avançado
98+
* Chat interno
99+
* Aplicação automática
100+
* Dashboard analítico
101+
* Assinaturas pagas
102+
103+
---
104+
105+
# 5. Critérios de Sucesso
106+
107+
## Produto
108+
109+
* Usuário consegue se cadastrar em menos de 2 minutos.
110+
* Usuário encontra uma vaga em menos de 3 cliques.
111+
112+
## Tecnologia
113+
114+
* Disponibilidade superior a 99%.
115+
* Tempo de carregamento inferior a 3 segundos.
116+
117+
## Comunidade
118+
119+
* Projeto apresentável para eventos.
120+
* Participação ativa dos colaboradores.
121+
* Documentação pública atualizada.
122+
123+
</content>
124+
125+
### Metas por Área
126+
127+
## Frontend
128+
129+
### Objetivo
130+
131+
Entregar uma experiência simples, rápida e responsiva.
132+
133+
### Entregas
134+
135+
**Sprint 1**
136+
137+
* Estrutura base do projeto
138+
* Sistema de rotas
139+
* Layout global
140+
* Landing Page
141+
142+
**Sprint 2**
143+
144+
* Tela Login
145+
* Tela Cadastro
146+
* Integração com autenticação
147+
148+
**Sprint 3**
149+
150+
* Busca de Vagas
151+
* Lista de vagas
152+
* Filtros
153+
154+
**Sprint 4**
155+
156+
* Painel autenticado
157+
* Controle de acesso
158+
* Ajustes de UX
159+
160+
### Critérios de Aceite
161+
162+
* Responsivo Mobile/Desktop
163+
* Acessibilidade básica
164+
* Feedback visual de carregamento
165+
* Tratamento de erros
166+
167+
---
168+
169+
## Backend
170+
171+
### Objetivo
172+
173+
Disponibilizar APIs seguras e escaláveis para suportar o MVP.
174+
175+
### Entregas
176+
177+
**Sprint 1**
178+
179+
* Arquitetura
180+
* Banco de dados
181+
* Setup ambiente
182+
183+
**Sprint 2**
184+
185+
* Cadastro
186+
* Login
187+
* JWT/Auth
188+
189+
**Sprint 3**
190+
191+
* API de vagas
192+
* Filtros
193+
* Busca
194+
195+
**Sprint 4**
196+
197+
* Painel do usuário
198+
* Histórico de ações
199+
* Hardening de segurança
200+
201+
### Critérios de Aceite
202+
203+
* APIs documentadas
204+
* Cobertura mínima de testes
205+
* Logs estruturados
206+
* Tratamento de exceções
207+
208+
---
209+
210+
## QA
211+
212+
### Objetivo
213+
214+
Garantir qualidade desde o início.
215+
216+
### Entregas
217+
218+
**Sprint 1**
219+
220+
* Estratégia de testes
221+
* Plano de testes
222+
223+
**Sprint 2**
224+
225+
* Casos de teste Login/Cadastro
226+
227+
**Sprint 3**
228+
229+
* Casos de teste Busca de Vagas
230+
231+
**Sprint 4**
232+
233+
* Testes E2E do fluxo principal
234+
235+
### Critérios de Aceite
236+
237+
* Fluxo completo validado
238+
* Bugs críticos zerados
239+
* Regressão executada a cada release
240+
241+
---
242+
243+
## Design
244+
245+
### Objetivo
246+
247+
Criar identidade visual profissional para apresentação em comunidade e mercado.
248+
249+
### Entregas
250+
251+
**Sprint 1**
252+
253+
* Branding
254+
* Logo
255+
* Definição de cores
256+
257+
**Sprint 2**
258+
259+
* Design System
260+
* Componentes reutilizáveis
261+
262+
**Sprint 3**
263+
264+
* Fluxos Login/Cadastro
265+
266+
**Sprint 4**
267+
268+
* Fluxos Busca e Painel
269+
270+
### Critérios de Aceite
271+
272+
* Consistência visual
273+
* Componentização
274+
* Responsividade
275+
* Protótipo navegável
276+
277+
---
278+
279+
## Próxima decisão estratégica (mais importante)
280+
281+
Antes de qualquer desenvolvimento adicional, o time precisa responder uma única pergunta:
282+
283+
**"Qual é o diferencial dessa plataforma em relação ao LinkedIn, Gupy, Indeed e Programathor?"**
284+
285+
Essa resposta será a base para:
286+
287+
* Nome do produto;
288+
* Pitch para eventos;
289+
* Regras de negócio futuras;
290+
* Priorização do backlog;
291+
* Possível validação de mercado.
292+
293+
Sem essa definição, existe o risco de construir apenas mais um agregador de vagas. Com ela, o produto passa a ter identidade, posicionamento e direção clara para evolução.

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ O produto evoluiu para um modelo orientado a serviços (API + scraper Go + cache
1616
- Documentação backend detalhada: [BACKEND.md](BACKEND.md)
1717
- Documentação scraper Go: [SCRAPER.md](SCRAPER.md)
1818
- Guia de testes: [TESTING.md](TESTING.md)
19+
- Documentação inicial do MVP (Visão PO) [ESCOPO.md](ESCOPO.md)
1920

2021
## Sumário
2122

backend/drizzle/meta/_journal.json

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,13 @@
2929
"when": 1779191875793,
3030
"tag": "0003_hot_miek",
3131
"breakpoints": true
32+
},
33+
{
34+
"idx": 4,
35+
"version": "7",
36+
"when": 1780927293836,
37+
"tag": "0004_small_psylocke",
38+
"breakpoints": true
3239
}
3340
]
3441
}

backend/package.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
"cheerio": "^1.2.0",
4040
"cors": "^2.8.6",
4141
"dotenv": "^17.4.2",
42+
"drizzle-orm": "^0.45.2",
4243
"express": "^5.2.1",
4344
"iron-session": "^8.0.4",
4445
"pdfkit": "^0.18.0",
@@ -56,8 +57,10 @@
5657
"@types/pg": "^8.20.0",
5758
"@types/supertest": "^7.2.0",
5859
"@vitest/coverage-v8": "^4.1.8",
60+
"drizzle-kit": "^0.31.10",
5961
"nodemon": "^3.1.14",
6062
"supertest": "^7.2.2",
63+
"tsx": "^4.22.4",
6164
"typescript": "^6.0.3",
6265
"vitest": "^4.1.8"
6366
}

backend/src/app.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,9 @@ export function createJobsApiApp() {
1919
app.use(securityHeaders);
2020
app.use(cors(corsOptions));
2121

22+
//Confia no proxy reverso (nginx) para lidar com HTTPS e IPs reais dos clientes
23+
app.set("trust proxy", 1);
24+
2225
app.use("/api/auth", withSession, authRoutes);
2326
app.use("/api/users", withSession, requireAuth, userRoutes);
2427
app.use("/api/jobs", withSession, requireAuth, jobsRoutes);

frontend/public/favicon.svg

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)