Auditoria dos 164 projetos do hub (proj_aplicacoes_full_stack/projetos/) e proposta para agrupá-los. A auditoria olhou três fontes para cada projeto: o nome da pasta, o index.md (título, descrição e tecnologias citadas) e os arquivos versionados (pom.xml, package.json, build.gradle, requirements.txt, go.mod, Cargo.toml, .csproj, composer.json, pubspec.yaml, extensões de código).
- Data: 2026-09-29
- Situação: ✅ Fase 1 (alternativa A) executada em 2026-09-29 na branch
fix/tarefas07-integracao-soltos: etapas 1 a 4 da seção 7. A fase 2 (alternativa C) fica para a migração do hub. Decisões registradas na seção 6.
- Relação com outros planos: complementa o Plano do Hub de Projetos. Aquele plano decide onde fica o hub; este decide como os projetos se organizam dentro dele.
1. Regras de organização (definidas pelo usuário)
- A stack é o critério principal. A stack de um projeto é a tecnologia do código executável que ele entrega, e não as tecnologias apenas citadas no texto.
- Projetos solo ficam em uma única stack. Um projeto com uma camada só (API, desktop, mobile, script) pertence ao grupo da sua stack, mesmo que faça parte de uma sequência temática.
- Full Stack é o único grupo com séries de stack variada. Um projeto é Full Stack quando entrega backend e pelo menos um cliente separados. Suas séries (ex.: Tarefas) podem trocar de stack a cada parte.
- Séries dentro de uma mesma stack continuam existindo (ex.: Jogos 01→04 em Java Web). Elas só não atravessam stacks.
- Multilinguagem (o mesmo exercício em 38 linguagens) é uma categoria própria, porque não tem stack principal.
2. Diagnóstico
2.1 Números
| Indicador |
Valor |
Observação |
| Projetos no hub |
164 |
pastas com index.md, fora _auditoria/ |
Listados no Super-Hub (projetos/index.md) |
86 |
78 projetos não aparecem no catálogo, entre eles 24 dos 25 projetos Android |
| Sem nenhum curso apontando para eles |
16 |
ver 2.4 |
| Projetos-esqueleto |
26 |
até 4 arquivos e index.md com menos de 80 linhas (código só no Markdown ou quase nenhum) |
| Prefixos de nome diferentes |
~40 |
parte descreve a stack (javaweb_, android_, backend_golang_), parte descreve o tema do curso (algoritmos_, db_, seguranca_, testes_) |
2.2 O nome não diz a stack
Os prefixos atuais seguem duas lógicas misturadas:
| Lógica |
Prefixos |
Problema |
| Por stack |
javaweb_, javadesk_, android_, mobile_flutter_, python_web_, backend_golang_, backend_php_, sistemas_rust_, sistemas_csharp_, sistemas_c_, sistemas_cpp_ |
backend_ e sistemas_ misturam stack com categoria (a sistemas_rust_02 e a sistemas_csharp_02 são APIs web) |
| Por tema/curso |
algoritmos_, db_*, seguranca_, testes_, padroes_, redes_, ia_, fundamentos_, compiladores_, infra_, web_, js_, vue_ |
Esconde a stack: algoritmos_, padroes_, ia_ e os db_* são todos Python; testes_01/02/04 são Java e testes_03 é JavaScript (k6) |
2.3 Nome × conteúdo (achados da leitura do index.md e do código)
| Projeto |
O nome diz |
O conteúdo real é |
Proposta |
javaweb_tarefas_01_rest |
Java Web solo |
Parte 01 da série Tarefas (API que os clientes 02–08 consomem). O código é só o esqueleto (TodolistApiApplication); a API completa está no guia |
Mover para a série Full Stack Tarefas |
javadesk_tarefas_09_javafx |
Desktop solo |
Parte 09 da série Tarefas: cliente JavaFX + API Spring Boot no mesmo projeto |
Mover para a série Full Stack Tarefas |
javaweb_login_03_rbac e javaweb_login_04_adrs |
Login 03 e 04 |
Os dois contêm código do Cadastro (cadastrousuarios03/04, pacote br.com.cadastro.usuarios), evoluído a partir do javaweb_cadastro_02_validation. Mas a trilha pedagógica “Login de Usuários — Projeto 1 de 4” foi montada de propósito com os 4 projetos |
Não renomeado. Renomear só o 03 quebraria a trilha Login 01→04. Decidido na D7: trilha mantida, origem documentada |
fullstack_liston_01/02 |
Série à parte |
O próprio título diz “Lista de tarefas – ListOn”: é uma lista de tarefas com autenticação (Spring Security) e clientes web + mobile |
Decidir: série própria ou partes 10–11 de Tarefas (D3) |
fullstack_tecloja_03_nest_react |
NestJS + React |
O código versionado tem só o frontend (2 arquivos em frontend/src) e um teste Python; o backend NestJS existe apenas nos guias moduloNN.md |
Completar o backend ou assumir que é um projeto-guia (D5) |
fullstack_tecloja_04_nest_nextjs |
NestJS + Next.js |
Só guias moduloNN.md, um schema.prisma e alguns .tsx; não há aplicação executável |
Idem |
fullstack_pi_06_quickdrop |
Full Stack como os PI 01–05 |
3 classes Java + um main.py, sem cliente; os PI 01–05 são apps React + Express (Vite) |
Alinhar ao padrão dos PI ou reclassificar |
javaweb_jogos_guia_crud/_testes/_seguranca |
Guias da série Jogos |
Trilha paralela e mais antiga (“Módulos 5 e 6 do plano de expansão”) que se sobrepõe a jogos_01…04 |
Decidir: fundir na série ou marcar como trilha alternativa (D4) |
fullstack_estoque_01_spring_spa / _02_spring_auth |
01 = SPA, 02 = autenticação |
O index.md do 01 já diz “foco em segurança avançada através de JWT”; o 02 é a continuação com o restante dos requisitos |
Ajustar os sufixos ao conteúdo real |
| Títulos de rascunho |
— |
javadesk_genius_01/02 com título “Análise da Tarefa”, javadesk_genius_03 com “Lista de Tarefas — Genius”, fullstack_liston_01 com “README” |
Corrigir os title: |
fullstack_tarefas_02_spring_js |
JavaScript |
Angular |
✅ Já renomeado para fullstack_tarefas_02_spring_angular |
2.4 Projetos que nenhum curso aponta
android_p01_helloworld, fullstack_estoque_02_spring_auth, fullstack_tarefas_02…06, javaweb_cadastro_02_validation, javaweb_gastos_02…04_htmx, javaweb_login_02…04, javaweb_tarefas_01_rest, sistemas_c_01_db_binario.
A maioria são continuações de série (02, 03, 04): o curso aponta só para a parte 01 e o aluno não descobre as seguintes. A navegação de série (seção 5) resolve isso sem editar cada curso.
3. Proposta de agrupamento (os 164 projetos)
3.1 Projetos solo — um grupo por stack
| Grupo (stack) |
Qtd. |
Projetos |
Séries internas |
| Java — Web (Spring MVC, Thymeleaf, HTMX) |
17 |
javaweb_cadastro_01…02, javaweb_login_01…04, javaweb_gastos_01…04_htmx, javaweb_jogos_01…04 + javaweb_jogos_guia_crud/_testes/_seguranca |
Cadastro, Login, Gastos, Jogos |
| Java — Desktop (Swing, JavaFX) |
7 |
javadesk_contador_01…02, javadesk_genius_01…03, javadesk_memoria_swing, javadesk_blackjack_javafx |
Contador, Genius |
| Java — Testes (JUnit, Testcontainers, Pitest) |
3 |
testes_01_suite_tdd_jacoco, testes_02_testcontainers_integration, testes_04_mutation_pitest_contract |
— |
| Android (Java/Kotlin) |
25 |
android_p01…p21 |
Trilha P01→P21 |
| Flutter (Dart) |
4 |
mobile_flutter_01…04 |
Trilha 01→04 |
| Python — Fundamentos, Sistemas e Desktop |
29 |
sistemas_python_intro_01…10, sistemas_python_01…04, algoritmos_01…04, fundamentos_01_ula_conversor, compiladores_01_lexico_sintatico_ast, padroes_01…02, redes_02_servidor_http_from_scratch, seguranca_01, _02, _04, ia_01…03 |
Miniprojetos Intro (4 degraus), Sistemas 01→04, Algoritmos |
| Python — Web (FastAPI) |
3 |
python_web_tarefas_01, python_web_jogos_01, python_web_gastos_01 |
— (cada um é a versão Python de uma série Java; ver 5.2) |
| Dados — SQL e NoSQL (scripts Python + Docker) |
10 |
db_sql_01/05/07/09, db_tuning_04, db_cache_03, db_nosql_02/06/08, db_poliglota_10 |
Numeração 01→10 do Mod 08 |
| Front-end Web (HTML, CSS, JS, TS, Vue) |
10 |
web_01…02, design_01_design_system_tokens, js_01/03/04, typescript_01, vue_02…03, redes_01_sniffer_websocket_chat |
— |
| Go |
5 |
backend_golang_01…04, sistemas_go_01_tcp_loadbalancer |
Backend Go 01→04 |
| PHP — Laravel |
4 |
backend_php_01…04 |
01→04 |
| C# — .NET |
4 |
sistemas_csharp_01…04 |
01→04 |
| Rust |
4 |
sistemas_rust_01…04 |
01→04 |
| C e C++ |
2 |
sistemas_c_01_db_binario, sistemas_cpp_01_simulacao_raii |
— |
| Infra e DevOps (Nginx, K8s, Terraform, CI, k6) |
9 |
infra_nginx_01…03, infra_k8s_04, infra_terraform_05, devops_01_pipeline_git_actions, tools_01_devcontainer_makefile, seguranca_03_pipeline_devsecops_sast, testes_03_performance_k6_load |
Infra 01→05 |
| Documentação e Modelagem (sem código executável) |
3 |
backend_01_rest_api_architecture (OpenAPI + ADR), docs_01_styleguide_markdown_mermaid, uml_01_especificacao_sistema_bancario |
— |
| Série |
Partes |
Stack de cada parte |
| Tarefas — uma API, vários clientes |
9 |
01 API Spring · 02 + Angular · 03 + JavaFX · 04 + Android · 05 refatoração/Docker · 06 + Vue + Ionic · 07 + Angular 20 (autoguiado) · 08 + React + React Native · 09 + JavaFX cliente REST |
| ListOn — tarefas com autenticação |
2 |
01 Spring + Angular + Ionic Angular · 02 Spring + React + React Native |
| Estoque |
2 |
Spring Boot + SPA em JS puro (01 e 02) |
| TecLoja — o mesmo e-commerce em 4 stacks |
4 |
01 Spring + Angular · 02 FastAPI + Vue · 03 NestJS + React · 04 NestJS + Next.js |
| Projetos Integradores (PI) |
6 |
01–05 React + Express (Vite) · 06 Java + Python (fora do padrão) |
Total Full Stack: 23 projetos.
3.3 Multilinguagem
multilang_saudacoes_38 e multilang_imc_38 (2): mesmo exercício em 38 linguagens.
Conferência: 17 + 7 + 3 + 25 + 4 + 29 + 3 + 10 + 10 + 5 + 4 + 4 + 4 + 2 + 9 + 3 + 23 + 2 = 164.
4. Nomenclatura
4.1 Padrão proposto
| Tipo |
Padrão |
Exemplos |
| Solo |
<stack>_<tema>_<NN>_<slug> |
javaweb_jogos_01_crud (já segue), python_algoritmos_01_estruturas_dados, dados_sql_01_modelagem_relacional, java_testes_01_tdd_jacoco |
| Full Stack |
fullstack_<serie>_<NN>_<stacks> |
fullstack_tarefas_01_spring_api, fullstack_tarefas_09_spring_javafx, fullstack_tecloja_02_fastapi_vue |
| Multilinguagem |
multilang_<tema>_38 |
sem mudança |
Os prefixos de stack seriam: javaweb, javadesk, java (testes), android, flutter, python, python_web, dados, front, go, php, csharp, rust, c / cpp, infra, docs, fullstack, multilang.
4.2 Quanto muda
| Situação |
Qtd. |
Exemplos |
| Já segue o padrão |
84 |
javaweb_*, javadesk_* (exceto tarefas_09), android_*, python_web_*, fullstack_* (exceto ajustes pontuais), multilang_* |
| Só troca de prefixo |
77 |
algoritmos_* → python_algoritmos_*, db_* → dados_*, backend_golang_* → go_*, sistemas_rust_* → rust_*, web_*/js_*/vue_* → front_*, devops_01/tools_01 → infra_*, uml_01/backend_01 → docs_* |
| Muda de grupo |
2 |
✅ javaweb_tarefas_01_rest → fullstack_tarefas_01_spring_api; ✅ javadesk_tarefas_09_javafx → fullstack_tarefas_09_spring_javafx (feitos na fase 1). Login/Cadastro: ver D7 |
5. Como materializar: três alternativas
| Critério |
A. Só navegação (nomes intactos) |
B. Renomear para o padrão (hub plano) |
C. Pastas por grupo dentro do hub |
| O que muda |
_data/projetos.yml com grupo, série e ordem de cada projeto; Super-Hub e barra “Parte X de N” gerados a partir dele |
Item A + renomear 80 pastas para <stack>_<tema>_<NN> |
Item A + hub_projetos/<grupo>/<projeto>/ (ex.: hub_projetos/fullstack/tarefas_07_spring_angular/) |
| URLs |
🟢 Não mudam |
🔴 80 mudam |
🔴 Todas mudam |
| Clareza para o aluno |
🟢 Catálogo e séries claros; nome da pasta continua inconsistente |
🟢 Nome = stack |
🟢 Pasta = stack; nomes mais curtos |
| Custo |
🟢 Baixo |
🟡 Médio |
🟡 Médio se feito junto da migração do hub (os links já serão todos reescritos) · 🔴 Alto se feito separado |
| Redirecionamento |
— |
Mapa antigo→novo por projeto no 404.html |
Idem, gerado a partir do mesmo _data/projetos.yml |
Recomendação
- Agora: alternativa A. Ela já entrega o que o aluno sente: o catálogo completo por stack (hoje 78 projetos estão fora dele), as séries Full Stack juntas e a navegação “Parte X de N” em cada projeto. Não quebra nenhum link.
- Na migração do hub (Frente 1 do outro plano): alternativa C. Como todos os links do hub já serão reescritos uma vez, organizar as pastas por grupo nessa mesma passagem custa pouco a mais. O
_data/projetos.yml da etapa A vira o mapa de-para da migração e dos redirecionamentos.
- Correções de conteúdo da seção 2.3 independem da alternativa e podem entrar antes.
6. Decisões pendentes
| # |
Decisão |
Opções |
Sugestão |
| D1 |
Alternativa de materialização |
A · B · C · A agora + C na migração |
✅ Decidido: A agora + C na migração do hub |
| D2 |
Onde ficam os projetos que são “versão em outra stack” de uma série (python_web_tarefas_01, python_web_jogos_01, python_web_gastos_01) |
no grupo Python Web · dentro da série original |
✅ Decidido: juntos no grupo Python Web, com versao_de apontando a série Java (link cruzado no catálogo e na página) |
| D3 |
ListOn |
série própria · partes 10–11 de Tarefas |
✅ Decidido: série própria |
| D4 |
javaweb_jogos_guia_* |
fundir em Jogos 01–04 · manter como trilha alternativa · arquivar |
⏳ Sem resposta; aplicado o padrão sugerido: trilha alternativa (trilha: alternativa no YAML) |
| D5 |
TecLoja 03/04 e PI 06 sem código executável completo |
completar o código · assumir como projeto-guia |
⏳ Sem resposta; aplicado o padrão sugerido: status guia (📘 no catálogo) |
| D6 |
Os 26 projetos-esqueleto |
listar normalmente · marcar como “em construção” · esconder do catálogo |
⏳ Sem resposta; aplicado o padrão sugerido: status em-construcao (🚧 no catálogo) |
| D7 |
Login 03/04 são código do Cadastro |
manter a trilha Login 01→04 e só documentar a origem · fundir Cadastro + Login numa série “Usuários” 01→06 · renomear 03/04 para Cadastro 03/04 |
✅ Decidido: manter a trilha e documentar a origem (nota “🧬 De onde vem o código” no Login 03/04 e no Cadastro 02; descrição das duas séries no catálogo) |
7. Etapas de execução (após aprovação)
| Etapa |
Ação |
Validação |
| 1 ✅ |
Correções de conteúdo da seção 2.3: títulos de rascunho, tarefas_01 e tarefas_09 para a série Full Stack (Login/Cadastro ficou para a D7) |
validate_liquid.py, test_links.py, nenhuma referência ao nome antigo (git grep) |
| 2 ✅ |
Criar _data/projetos.yml com os 164 projetos: grupo, série, parte, stack detectada, status (completo / guia / em construção) |
Script confere que toda pasta do hub está no arquivo e vice-versa |
| 3 ✅ |
Gerar o Super-Hub por grupo de stack + seção “Séries Full Stack” a partir do YAML |
Os 164 projetos aparecem; nenhum link quebrado |
| 4 ✅ |
Include serie-nav.html (“Parte X de N · anterior · próxima”) nos projetos com série, via _includes/after-content.html (os 164 projetos usam layout: default, que não renderiza page__meta/post_pagination) |
Abrir 3 séries no build local |
| 5 |
Script de auditoria versionado em _scripts/ (o mesmo usado neste levantamento) para reapontar divergências nome × stack |
Rodar no CI como aviso |
| 6 |
(Na migração do hub) aplicar a alternativa C usando o YAML como mapa de-para |
Etapas do plano do hub |