Introdução
Quando estava tentando promover meu último projeto (chat na web), descobri que não havia praticamente nenhum lugar para escrever sobre ele. A situação diz respeito não apenas a projetos wiki, mas, em geral, a todo o Runet. Grandes sites têm uma política que determina que você não pode escrever sobre seu projeto - você deve comprar publicidade ou outra pessoa deve escrever sobre você. Se considerarmos especificamente os sites wiki, então até mesmo chegar ao Lurk ou à Wikirrealidade é problemático, sem mencionar um gigante como a Wikipedia. Embora eu tenha encontrado alguns pequenos portais wiki sem censura, para os quais escrevi duas análises exclusivas em meu bate-papo. Eles me inspiraram a criar um recurso wiki gratuito para desenvolvimento de TI.
Por que escrever seu próprio mecanismo wiki quando há alguns prontos?
Bem, em primeiro lugar, foi interessante para mim. Criar um site pronto usando um template em poucos cliques é enfadonho e não merece a atenção do público. E um novo desenvolvimento com sua própria interface provavelmente atrairá mais interesse. Além disso, parece-me mais fácil escrever código para tarefas específicas do zero, tomando como base qualquer framework para simplificar o desenvolvimento, do que refazer as pilhas de código de outra pessoa para você mesmo.

Mais sobre wikiclick.ru
Wikiclick.ru é uma enciclopédia de desenvolvimento de TI gratuita baseada na web. Aqui você pode escrever sobre seu site, aplicativo, serviço, jogo ou outro desenvolvimento, por exemplo, sobre sua estrutura ou biblioteca, e seu artigo não será considerado spam. E o navegador criará automaticamente um índice analítico em árvore para sua página por cabeçalhos h1-h6. Uma discussão em forma de árvore de comentários também estará disponível na página do seu projeto. A página criada pode ser encontrada no histórico de versões, na busca do site, na seleção pelas tags especificadas ou na seção correspondente à qual seu desenvolvimento pertence. Na visão geral do projeto, você pode se limitar a apenas uma pequena descrição e a comunidade acabará complementando o artigo. Você também pode anexar fotos.
Agora está na moda criar sites multilíngues, mas o último projeto me ensinou que não tenho ideia de como promover um site em outro país e como moderá-lo quando só sei inglês técnico, então abandonei essa ideia no início. Embora, talvez, no futuro eu implemente o multilinguismo no próprio motor.
Sobre o mecanismo WikiClick
O servidor é escrito como um erro crasso - muitos códigos duplicados, comentários estão completamente ausentes e algumas linhas são escritas ignorando os métodos do framework, por exemplo, visualização. Mas quanto ao resto, eu penteei: funciona muito bem e se ajusta rapidamente (a menos que você esteja confuso com a falta de um painel de administração). Todo o desenvolvimento do WikiClick demorou cerca de um mês.
Gosto da forma como o motor WikiClick ficou - é compacto, bonito, rápido, o código do servidor tem até 1000 linhas. Uma nova entrada é feita no log de versão apenas se a página foi gravada em um ip diferente ou em um dia diferente - este mecanismo permite que você salve todas as versões principais da página sem digitar um monte de duplicatas idênticas com edições de um usuário. Seus comentários são salvos na sessão e, embora ela não tenha expirado, você pode editá-los. Um bom layout responsivo se adapta quase imediatamente à versão móvel. A discussão na forma de uma árvore de comentários na parte inferior da página parece mais conveniente do que na Wikipedia ou no Lurk (embora eu não seja um participante ativo nesses projetos e minha opinião seja controversa). Usar o código HTML no conteúdo das páginas parece mais flexível e provavelmente é mais familiar para os desenvolvedores.E o navegador de títulos acabou sendo muito mais simples do que os que encontrei na Internet, e funciona no lado do cliente sem criar carga no servidor. É feito em jquery e é adequado para reutilização, embora exija que o autor siga a sequência de cabeçalhos:
if ($('.cords').length) {
$h = 'h1, h2, h3, h4, h5, h6';
$ah = $('article').find($h);
if ($ah.length >=3) {
$('.cords').html('<div></div><ul class="level0" data-level="0"><ul>');
$ol = $('.level0');
$str = '';
$.each($ah, function(i, elm) {
if (i < $ah.length-1) {
a = $ah.eq(i).prop('tagName'); b = $ah.eq(i+1).prop('tagName');
}
$(this).html('<selection id="H'+i+'">'+$(this).html()+'</selection>');
$str += '<li><a href="#H'+i+'">'+$(this).text()+'</li>';
if (i < $ah.length-1 && a>b) $str+='</ul>';
if (a<b && !(a=='H1' && b=='H2')) $str += '<ul>';
if (i == $ah.length-1) {
for (i = parseInt($(this).prop('tagName').substring(1)); i>=3; i--) {
$str += '</ul>';
}
console.log($str);
$ol.html($str);
}
});
}
}
PS: Espero que minha bicicleta tenha despertado seu interesse (consideraremos isso como um teste beta).
Links
Projeto wikiclick.ru
no GitHub