Referência de Schema
Tudo o que você cria no Chinaski (páginas, posts, imagens, formulários, usuários, configurações) é armazenado em um único arquivo de banco de dados junto ao seu site. Esta página explica o que o banco de dados guarda e alguns de seus comportamentos que valem conhecer como administrador.
Como o banco de dados funciona
- O banco de dados é um único arquivo SQLite. Todos os dados vivem nesse único arquivo, e os backups (manuais ou agendados) o capturam de lá.
- Os relacionamentos de conteúdo permitidos são impostos pelo próprio banco de dados: apagar uma página, post, formulário ou stack também remove os registros que pendem dele, tais como suas submissões de formulário, blocos e edições de rascunho.
- Apagar a maior parte do conteúdo é uma exclusão suave. Páginas, posts, blocos, snippets, mídia, categorias, formulários, documentos e stacks apagados são marcados, não apagados, para que recuperação e história permaneçam possíveis. Eles desaparecem das listas e do site publicado imediatamente. A limpeza definitiva acontece automaticamente durante a operação normal.
- O banco de dados começa com padrões sensatos já em lugar: um site em inglês, o tema padrão embutido (The Letterbox) e uma primeira conta “admin” cuja senha é inutilizável até você completar a configuração de primeira execução.
- As configurações são armazenadas como simples pares nome/valor, de modo que as opções do site que você vê em Settings são registradas individualmente. Cada vez que as configurações são salvas, um snapshot de todos os valores é armazenado, dando uma história das mudanças de configuração.
Conteúdo que você autorou
- Páginas e posts cada um armazena seu próprio título, corpo e slug. Cada versão de idioma de uma página ou post é seu próprio registro independente . Um slug pode existir em um idioma, em vários, ou em todos, e nada força todos os idiomas a existirem.
- Páginas e posts carregam os campos que você vê no editor: títulos e descrições SEO, campos de compartilhamento social, imagem destacada (com ponto focal), configurações de publicar/agendar, status de revisão, controles de sitemap e uma senha opcional para páginas com portão.
- Páginas podem armazenar dados estruturados para listagens de produto e evento (nome, preço, disponibilidade, datas, local); posts compartilham o tipo de dados estruturados mas não esses conjuntos de campos.
- Blocos são componentes reutilizáveis, únicos por nome e idioma, armazenando seu próprio texto, botões, cores e estilo. São anexados a páginas e posts, com sobrescritas opcionais por colocação.
- Stacks são coleções nomeadas e ordenadas de blocos. Uma stack pode ser atribuída a páginas ou posts, pode empilhar dentro de outra stack, pode ter sobrescritas por idioma e pode herdar de outra stack. A área de admin também usa algumas tabelas companheiras internas para mostrar onde um bloco é usado, traduzir conteúdo de stack e reportar a integridade de build e a performance de cada stack.
- Categorias são gerenciadas por idioma; um post salvo com um valor de categoria é adicionado automaticamente à lista de categorias gerenciadas.
- Itens de FAQ e passos de HowTo deixam você anexar listas estruturadas de perguntas e respostas e de passos a páginas ou posts, para resultados de busca mais ricos.
- Autores deixam você manter bylines: perfis com bio, avatar e links sociais, atribuídos a qualquer número de posts ou páginas.
- Campos personalizados armazenam dados extras chave/valor em qualquer página ou post, com tipos para texto, números, booleanos, datas e JSON.
- Rascunhos salvam automaticamente suas edições em andamento no servidor, para que uma longa sessão de edição sobreviva ao fechamento do navegador. Um rascunho por usuário por item.
- Revisões são snapshots de cada página, post, bloco, snippet, documento, imagem, stack e formulário tomados justamente antes de cada salvamento . É isso que alimenta o histórico de versões e o rollback.
- Notas internas podem ser deixadas em um post sem serem visíveis aos leitores.
Mídia e documentos
- Mídia é a biblioteca de arquivos: imagens armazenam dimensões mais texto alt, legenda e crédito; uploads registram quem os enviou e em qual pasta vivem. Arquivos idênticos não podem ser enviados duas vezes, e os tamanhos de imagem gerados são rastreados por arquivo.
- Documentos gerenciam PDFs com suas próprias URLs, pastas, tags e agendamento de publicar/despublicar.
- Documentos suportam versões com um status de aprovação: rascunhos movem-se por em revisão, aprovado, rejeitado ou publicado.
- Documentos privados podem ser compartilhados por links especiais com expiração opcional e limite de downloads; todos os downloads são registrados com hora, IP e navegador.
Usuários, login e segurança
- Usuários são contas de admin ou editor. Uma conta pode ser suspensa, tem um idioma e um tema de admin preferidos, e pode ser restrita a certas entidades e idiomas.
- As sessões de login são rastreadas, de modo que páginas de conta podem mostrar dispositivos ativos e administradores podem desconectar um usuário em todos os lugares.
- Um registro é mantido de cada tentativa de login . Sucesso, falha ou bloqueada.
- Links de redefinição de senha são armazenados sem expor o token em si e param de funcionar uma vez usados ou expirados.
- Três pequenos registros de rate limiting acompanham tentativas repetidas de login com falha, tentativas de registro e pedidos de esquecimento de senha por endereço IP . Isso é o que alimenta os tempos de bloqueio descritos na página de Passwords.
- Chaves de API (armazenadas com hash, nunca em texto puro) autenticam a API REST pública, cada uma com suas próprias permissões e expiração opcional.
- Logs de auditoria e de eventos registram cada mudança de conteúdo (quem fez o quê em qual item) e eventos de sistema nos níveis info/warn/error, de modo que há uma trilha durável do que aconteceu e quando.
Formulários e submissões
- Formulários definem seus formulários de contato: campos, comportamento da página de sucesso, e-mails de notificação, proteção contra spam e webhooks opcionais.
- Campos de formulário controlam cada entrada: tipo, flag de obrigatório, placeholder, opções, exibição condicional e limites de validação.
- Submissões armazenam os dados digitados, o IP do visitante (a menos que você tenha desabilitado isso), um token de recibo mostrado ao remetente e . Onde fornecido pelo visitante e consentido . Atribuição de marketing como referrer da landing page, parâmetros UTM e IDs de clique de anúncios comuns. Marcar uma submissão como lida é carimbado no registro.
- As respostas de submissão também são normalizadas em uma linha por campo, para que os resultados do formulário possam ser filtrados e classificados por qualquer campo único.
Configuração e estrutura do site
- Navegação é uma lista por idioma de links de header, suportando links externos e submenus aninhados.
- Redirecionamentos são criados automaticamente quando você renomeia o slug de uma página ou post publicado, mantendo URLs antigas funcionando; cada registro conta os acessos que recebeu.
- Temas são registrados no site; trocar de tema lembra qual estava ativo.
- Design tokens armazenam os valores de cor/estilo que são convertidos em CSS custom properties em tempo de build.
- Design briefs armazenam documentos de referência usados ao gerar temas.
Builds e trabalho em segundo plano
- Build log registra cada build do site estático: quando, resultado, arquivos escritos, saída capturada, resultados de validação e tempos.
- Progresso de build é uma única linha de status ao vivo atualizada enquanto um build executa . Isto alimenta o indicador de progresso de build.
- Jobs em segundo plano rastreiam operações mais longas (como importações) com contadores de progresso e resultados.
Webhooks
- Post webhooks são endpoints de saída que você define e que são notificados quando um post é publicado, atualizado ou apagado.
- Log de entregas registra cada tentativa de webhook: payload, alvo, resposta e estado de retry.
- Circuit breakers param as entregas a endpoints que falham repetidamente, pausando-os por um tempo em vez de martelar um destino quebrado.
Monitoramento
- Log de 404 agrega relatos de página ausente do host estático ou processador de logs, contando a frequência de requisições de cada caminho e quando foi visto por último.
- Execuções de backup registram cada tentativa de backup: se foi manual, agendada, feita por API ou enviada; o arquivo e tamanho resultantes; e se a verificação automática de integridade da restauração passou.