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).


1. Regras de organização (definidas pelo usuário)

  1. 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.
  2. 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.
  3. 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.
  4. Séries dentro de uma mesma stack continuam existindo (ex.: Jogos 01→04 em Java Web). Elas só não atravessam stacks.
  5. 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 —

3.2 Full Stack — séries com stack variada

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

  1. 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.
  2. 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.
  3. 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

⬅️ Voltar à Central de Documentação 🏠 Página Inicial