Central SSOT repository for multilingual portfolio content served as raw Markdown and JSON
Este repositório é a fonte única de verdade (SSOT) para conteúdo de portfólio consumido por múltiplas interfaces.
Repositórios consumidores principais:
Base raw pública:
https://raw.githubusercontent.com/NullCipherr/portfolio-content/main
Este projeto não possui frontend próprio.
Ele publica conteúdo bruto para consumo por aplicações externas via HTTP:
content/pt/about.mdcontent/pt/bio-short.mdcontent/pt/skills.jsoncontent/pt/projects.jsonmeta/projects-meta.json
portfolio-content separa conteúdo de apresentação das aplicações consumidoras.
O projeto prioriza:
- Centralização de textos institucionais e técnicos;
- Estrutura estável e previsível para múltiplos clientes de UI;
- Versionamento de conteúdo por idioma;
- Contratos simples para consumo via
fetch; - Evolução de conteúdo sem alterar código de interface.
- Bios em Markdown (
about,bio-short,bio-long) por idioma. - Skills estruturadas por categoria em JSON.
- Projetos estruturados com metadados de links, tags e resumo.
- Ordem e destaque de projetos via
meta/projects-meta.json. - Compatibilidade multiportfólio com
portfolio-oseportfolio-terminal.
Fluxo de consumo de alto nível:
- Repositório mantém conteúdo em
content/{locale}emeta/. - Aplicações consumidoras (
portfolio-oseportfolio-terminal) fazemfetchdos arquivos raw. - Cada cliente aplica parsing/normalização para seu modelo interno.
projects-meta.jsondefinefeaturedeorderpara ordenação consistente.- UI renderiza conteúdo conforme idioma, layout e experiência alvo.
Boas práticas recomendadas para consumidores:
- Cache em memória no ciclo de vida do app;
- Revalidação controlada (quando necessário);
- Fallback local para indisponibilidade de rede;
- Parsing leve (Markdown + JSON) com validação de contrato.
- Formato híbrido: Markdown para texto editorial e JSON para dados estruturados.
- Contrato orientado a conteúdo: foco em legibilidade e portabilidade.
- Sem backend obrigatório: distribuição via
raw.githubusercontent.com. - IDs estáveis em projetos para compatibilidade entre versões de UI.
- Adicionar validação automática de schema para JSONs (CI).
- Versionar contratos de conteúdo (
v1,v2) quando necessário. - Adicionar novos idiomas mantendo compatibilidade retroativa.
- Incluir changelog específico de conteúdo editorial.
- Formatos: Markdown, JSON
- Hospedagem: GitHub
- Entrega: Raw GitHub URLs
- Versionamento: Git
.
├── content/
│ ├── pt/
│ │ ├── about.md
│ │ ├── bio-short.md
│ │ ├── bio-long.md
│ │ ├── skills.json
│ │ └── projects.json
│ └── en/
│ ├── about.md
│ ├── bio-short.md
│ ├── bio-long.md
│ ├── skills.json
│ └── projects.json
├── meta/
│ └── projects-meta.json
└── README.md
- Git
- Conta no GitHub
git clone git@github.com:NullCipherr/portfolio-content.git
cd portfolio-content
# edite os arquivos em content/ e meta/
git add .
git commit -m "chore(content): atualiza dados do portfólio"
git push origin mainEste repositório não exige variáveis de ambiente para publicação de conteúdo.
Não aplicável neste repositório (sem runtime Node obrigatório).
Recomendado para evolução do projeto:
- validação de JSON em pull request;
- validação de links essenciais;
- bloqueio de merge em caso de contrato inválido.
Publicação automática ocorre pelo próprio GitHub (branch main).
Os consumidores devem ler os arquivos por raw.githubusercontent.com.
Exemplo:
https://raw.githubusercontent.com/NullCipherr/portfolio-content/main/content/pt/projects.json
Seguir a licença definida para o repositório portfolio-content.
Contribuições editoriais e estruturais são bem-vindas.
Recomendações:
- manter consistência entre
pteen; - não quebrar contratos JSON existentes;
- preservar IDs de projetos;
- documentar mudanças relevantes no commit.