Levantamento dos cursos que ainda guardam projetos dentro da própria pasta <curso>/projetos/ e plano para levá-los ao hub central (proj_aplicacoes_full_stack/projetos/), no mesmo padrão dos projetos já migrados: código real versionado, entrada no _data/projetos.yml e tutorial autoguiado com checkpoints.
c_mini, 40 programas testados no CI); as 36 pastas <curso>/projetos/ seguem a regra-alvo (Python com os 2 anexos aprovados na D4), e o CI protege a regra com _scripts/check_estrutura_portal.py. Próximo passo: o Plano do Catálogo de Projetos e Nomes das Pastas._data/projetos.yml como fonte única) e é compatível com o Plano do Hub de Projetos: o que for migrado agora entra no hub atual e se move junto na migração para hub_projetos/.
<curso>/projetos/contém apenas oindex.md, que lista os projetos do curso com links para o hub. Todo projeto (código, guia, assets) mora no hub e está registrado no_data/projetos.yml.
Hoje 36 cursos têm pasta projetos/; 32 já seguem a regra e 4 não.
| Curso | O que há em projetos/ além do index.md |
Natureza real | Situação no hub |
|---|---|---|---|
spec_sistemas_com_c |
20 páginas NN_slug.md (200–360 linhas cada) |
20 miniprojetos de verdade, 1 por capítulo, com enunciado, requisitos, esqueleto, critérios de aceite e gabarito em C | ❌ Nenhum no hub. O hub tem só sistemas_c_01_db_binario, que nenhum curso aponta e se sobrepõe ao Miniprojeto 18 |
spec_sistemas_com_java |
4 arquivos .zip (contador, blackjack, genius, sons do genius) |
Cópias compactadas de projetos | ✅ Já estão no hub: o código dos 4 zips é idêntico a javadesk_contador_02_javafx, javadesk_blackjack_javafx, javadesk_genius_03_sound e aos .wav de javadesk_genius_01_swing. Sobra só configuração do IntelliJ (.idea/*.xml). Nenhuma página linka os zips |
spec_sistemas_com_python |
3 páginas: miniprojetos_introdutorios.md, trilha_evolutiva.md, relatorio_complexidade_10_projetos.md |
Páginas de currículo, não projetos. A trilha especifica 10 projetos integradores: 4 existem no hub (sistemas_python_01…04, marcados “Curso v1–v4”) e 6 são só especificação. A trilha e o relatório não linkam o hub |
⚠️ 4 de 10 |
spec_mobile_nativo_android |
_prompt_revisao_projeto.md |
Prompt de IA para revisar projetos (ferramenta interna; o _ impede a publicação) |
— Não é projeto |
O gabarito de cada miniprojeto foi extraído do Markdown e compilado com gcc -std=c17 -Wall -Wextra:
| Resultado | Miniprojetos |
|---|---|
| ✅ Compila sem nenhum aviso | 18 de 20: 01–16, 18 e 19 |
🧩 Multiarquivo (5 blocos: .h, .c, Makefile) |
17: precisa virar projeto com vários arquivos reais e make |
🐧 Só POSIX (sys/socket.h, pthread) |
20: não compila no MinGW do Windows; precisa de Linux/WSL/Docker ou de uma camada Winsock |
Os miniprojetos já têm uma boa espinha pedagógica (objetivos → enunciado → requisitos → arquitetura Mermaid → esqueleto → critérios de aceite → compilação → gabarito → desafio). Falta transformá-la em passos com checkpoints verificáveis, como no guia do fullstack_tarefas_07.
spec_sistemas_com_c/projetos/index.md (20 links). Tópicos, exercícios e slides não apontam para eles.projetos/index.md do curso.404.html já tem o mecanismo de redirecionamento por mapa (usado na troca Mod 03/06 e na unificação de Segurança).É o formato validado no fullstack_tarefas_07_spring_angular, generalizado para qualquer projeto.
<id_do_projeto>/
├── index.md ← GERADO (não editar à mão)
├── _guia/
│ └── guia.template.md ← texto do tutorial com marcadores @@INCLUDE caminho@@
├── src/ (ou backend/, frontend/...) ← código real, o gabarito
├── Makefile / pom.xml / package.json ← build do projeto
└── tests/ (quando houver)
| Marcador | Conteúdo |
|---|---|
| 🎯 Objetivo | O que o passo constrói e por quê (ligado ao capítulo do curso) |
| ⌨️ Faça | Comandos e ações |
| 📄 Arquivo | Código completo, incluído do arquivo real pelo gerador |
| ✅ Checkpoint | Como provar que funcionou: comando + saída esperada |
| 🧯 Se der errado | Erros mais comuns naquele passo |
Para projetos de estudo (como os miniprojetos de C), o código do gabarito fica recolhido em <details markdown="1"> para o aluno tentar antes de ver a solução; o checkpoint continua sempre visível.
O _guia/gerar_guia.py do tarefas_07 vira _scripts/gerar_guia_projeto.py <pasta>:
@@INCLUDE caminho@@ → bloco com o arquivo real (raw automático quando houver chaves duplas ou tags Liquid);@@INCLUDE_GABARITO caminho@@ → o mesmo, dentro de <details> (novo, para projetos de estudo);--check → falha se algum index.md estiver desatualizado em relação ao código;--todos → regenera/confere todos os projetos que têm _guia/.No CI: python _scripts/gerar_guia_projeto.py --todos --check e, para os projetos de C, compilar src/ com gcc -std=c17 -Wall -Wextra -Werror (o runner Ubuntu já tem gcc e resolve também o Miniprojeto 20).
Destino: 20 projetos no hub, grupo c_cpp, nova série “Miniprojetos C (1 por capítulo)”, partes 01→20.
Nome das pastas (padrão do plano de organização, <stack>_<tema>_<NN>_<slug>):
Atual (spec_sistemas_com_c/projetos/) |
No hub |
|---|---|
01_conversor_bases_e_arquitetura.md |
c_mini_01_conversor_bases/ |
02_auditor_tipos_e_limites_memoria.md |
c_mini_02_auditor_tipos/ |
| … | … |
18_mini_sgbd_binario_e_acesso_direto.md |
c_mini_18_sgbd_binario/ |
20_servidor_multithread_sockets_tcp.md |
c_mini_20_servidor_tcp_threads/ |
Conversão de cada miniprojeto:
| Seção atual | Vira |
|---|---|
| 1–4 Objetivos, Enunciado, Requisitos, Arquitetura | Introdução do tutorial + “🎯 Objetivo” |
| 5 Esqueleto de código | src/esqueleto.c + Passo 1: copiar, compilar e ver a saída inicial (checkpoint) |
| 6 Critérios de aceite | Vira os checkpoints dos passos seguintes, com a saída esperada de cada requisito |
| 7 Guia de compilação | “⌨️ Faça” em cada passo + seção de ambiente |
| 8 Gabarito | src/main.c (código real, compilado no CI) incluído via @@INCLUDE_GABARITO@@ |
| 9 Desafio de extensão | “🏆 Desafio” no fim, com checkpoint |
Casos especiais:
include/*.h, src/*.c e Makefile reais; o checkpoint é make && make test.sistemas_c_01_db_binario: ver D2.Fecho: spec_sistemas_com_c/projetos/index.md passa a listar os 20 projetos do hub (mesmos blocos I–V, links novos); as 20 páginas antigas saem; o 404.html ganha um mapa spec_sistemas_com_c/projetos/NN_slug.html → proj_aplicacoes_full_stack/projetos/c_mini_NN_slug/.
.zip: o código é idêntico ao dos projetos do hub, que o projetos/index.md do curso já lista..wav do Genius, idênticos aos do javadesk_genius_01_swing. O resto que não está no hub é target/*.class (gerado), .idea/.vscode (configuração de IDE) e 3 README.md que são versões anteriores das páginas do hub (91–98% iguais).javadesk_genius_03_sound/index.md antes de apagar.miniprojetos_introdutorios.md: o conteúdo (metodologia dos 4 degraus + links para sistemas_python_intro_01…10) é incorporado ao projetos/index.md do curso; a série python_intro do YAML passa a apontar para ele como descrição.trilha_evolutiva.md + relatorio_complexidade_10_projetos.md: são planejamento curricular. Mover para spec_sistemas_com_python/_artefatos/ (não publicado) ou manter publicados como anexos do projetos/index.md — ver D4.sistemas_python_01…04) ganham link a partir da trilha; os 6 só especificados ficam como backlog (D4)._prompt_revisao_projeto.md para spec_mobile_nativo_android/_artefatos/ (ou docs/legado/), junto dos outros artefatos de trabalho.| # | Decisão | Opções | ✅ Aprovado |
|---|---|---|---|
| D1 | Profundidade da conversão dos 20 miniprojetos de C | (a) tutorial completo com passos e checkpoints · (b) só extrair o código real e manter o texto atual | (a), mas em lotes de 4 (um bloco do curso por vez), validando o formato no primeiro lote |
| D2 | Mini 18 × sistemas_c_01_db_binario (mesmo tema: SGBD binário com fseek) |
fundir no Mini 18 · manter os dois (o sistemas_c_01 como extensão “parte 21”) · arquivar o sistemas_c_01 |
Manter como extensão: o sistemas_c_01 usa alocação dinâmica e Valgrind, um passo além do Mini 18; vira o “Desafio integrador” da série |
| D3 | Mini 20 só compila em POSIX | exigir Linux/WSL/Docker · acrescentar #ifdef _WIN32 com Winsock + threads Win32 |
Exigir Linux/WSL/Docker e documentar no tutorial: o capítulo 20 ensina justamente a API POSIX |
| D4 | Python: trilha, relatório e os 6 projetos só especificados | (a) mover trilha/relatório para _artefatos e registrar os 6 como 🚧 no hub · (b) manter publicados como anexos e não criar os 6 · (c) mover para _artefatos sem criar os 6 |
(b): são páginas úteis ao professor; os 6 projetos entram no hub só quando tiverem código |
| D5 | Ordem em relação à migração do hub para hub_projetos/ |
migrar agora para o hub atual · esperar a migração do hub | Agora: a migração do hub é mecânica e levará estes projetos junto, sem retrabalho de conteúdo |
| Etapa | Ação | Validação | Situação |
|---|---|---|---|
| 0 | Generalizar o gerador para _scripts/gerar_guia_projeto.py (+ @@INCLUDE_GABARITO@@, --todos), migrando o tarefas_07 para ele |
--check verde. O tarefas_07 original foi para _analise_delecao/ na reescrita da série; o script novo não depende dele. |
✅ 2026-10-03 |
| 1 | Lote-piloto C: Miniprojetos 01–04 (Bloco I) no formato novo | Os 4 compilam no CI; --check verde; revisão do formato pelo usuário. Feito: c_mini_01…04 com src/esqueleto.c, src/main.c e tests/*.saida.txt; _scripts/testar_projetos_c.py compila com -Werror e compara a saída de cada checkpoint. |
✅ 2026-10-03 (formato aprovado) |
| 2 | Lotes C seguintes: 05–07, 08–09, 10–12, 13–16, 17–20 (casos especiais no último lote) | Idem, lote a lote | ✅ 2026-10-03 |
| 3 | _data/projetos.yml: série c_mini + 20 projetos; decisão D2 aplicada ao sistemas_c_01 |
check_projetos_yml.py verde; Super-Hub e painel de status mostram a série |
✅ 2026-10-03 (sistemas_c_01 = parte 21) |
| 4 | Curso de C: projetos/index.md reescrito com links do hub; remover as 20 páginas antigas; mapa no 404.html |
test_links.py sem links quebrados; 3 URLs antigas redirecionando no build local |
✅ 2026-10-03 (índice gerado do YAML nos 7 blocos do curso; mapa no 404.html) |
| 5 | Java: remover os 4 zips | git grep sem referências |
✅ 2026-10-03 (conteúdo dos 3 READMEs conferido por texto normalizado: tudo já estava no hub, com correções; as linhas de “Assessment” já tinham sido portadas) |
| 6 | Python: aplicar D4; linkar sistemas_python_01…04 na trilha |
test_links.py |
✅ 2026-10-03 (guia dos miniprojetos virou seção do índice, com redirecionamento; trilha e relatório linkam os 4 projetos prontos; nomes de pasta errados no relatório corrigidos) |
| 7 | Android: mover o prompt interno | — | ✅ 2026-10-03 (_artefatos/prompt_revisao_projeto.md) |
| 8 | Verificação final da regra-alvo: script que falha se algum <curso>/projetos/ tiver algo além do index.md (exceto anexos aprovados em D4) |
Entra no CI | ✅ 2026-10-03 (check_estrutura_portal.py, que também confere os nomes das pastas da raiz — D14 do plano do hub) |
Cada etapa em commit próprio; push só no final (ou por lote, se preferir revisar no site publicado).
| Risco | Mitigação |
|---|---|
| Checkpoints com saída esperada diferente da real | O checkpoint é tirado executando o gabarito (src/) no momento da conversão, não copiado do texto antigo |
| Divergência futura entre tutorial e código | Gerador com --check no CI (mesmo mecanismo do tarefas_07) |
| Warnings em outro compilador (MinGW × gcc Linux) | CI compila com -Werror no Ubuntu; o tutorial indica os dois ambientes |
| Links antigos para as páginas de C | Mapa de redirecionamento no 404.html |
| ⬅️ Voltar à Central de Documentação | 🏠 Página Inicial |