Recentemente, ocorreu-me reviver meu antigo catálogo de portas de origem e modificações gráficas para jogos antigos. A nova versão deveria ser o mais aberta e possível, para que qualquer usuário pudesse editar o conteúdo do site e seu código, e eu teria que lidar apenas com a moderação das alterações. Se você está interessado no que aconteceu, como criei meus próprios problemas e como os resolvi, bem-vindo ao gato.

Resumo TK no site
- Informações sobre modificações de jogos (patches de fãs, conjuntos de texturas, portas de origem etc.) serão publicadas no site, melhorando os gráficos, simplificando alguns aspectos do gerenciamento e também transferindo-os para outro sistema operacional ou plataforma. Um exemplo desses mods é adicionar quadros ao Dune 2 para selecionar unidades ou texturas de alta resolução para Doom
- O site conterá apenas informações, mas não os arquivos de modificações e portas. Na versão antiga do site, tentei manter e fazer upload de novas cópias de arquivos para mim, e isso consumiu tempo
- O site deve ser conveniente para uso tanto na área de trabalho quanto em um tablet ou telefone
- Qualquer usuário deve poder adicionar um jogo, modificação etc. no site, além de editar qualquer informação já adicionada ao site.
- Qualquer usuário deve poder editar o código e o layout do site
- O proprietário do site deve poder pré-moderar as alterações
- Deve ser possível adicionar moderadores adicionais
- Deve haver botões para compartilhar nas redes sociais
Solução
E vamos colocar todos os dados no github, e vamos gerar um site estático a partir desses dados? Vantagens sólidas!
- O GitHub já fornece uma interface web para modificar ou adicionar arquivos e enviar alterações como uma solicitação pull.
- Pull Request - um excelente sistema para moderar alterações e visualizar diferenças
- Precisa de novos moderadores? Adicione usuários ao projeto no github, sem necessidade de pensar no sistema de direitos
- Um site estático pode ser hospedado em absolutamente qualquer hospedagem, incluindo páginas do GitHub
- Qualquer atividade como comentários, compartilhamento ou o bloco "modificação aleatória" pode ser implementada no cliente usando JS e soluções prontas como Disqus
- Para simplicidade e velocidade do layout, use o Bootstrap
Além disso, eu sempre quis praticar a escrita de um site estático em Java. Resolvido! Em um repositório, armazenamos dados , no segundo - um gerador de site estático . Treine ... Embora não, pare, primeiro você precisa tomar outra decisão.
Armazenar descrições do jogo ou modificações em arquivos do formato “JSON / XML / escreva sua própria versão” é uma ideia maravilhosa, mas nossos requisitos são “... qualquer usuário ...” e alguns JSON podem assustá-lo. Bem, a questão é lixo - vamos armazenar os dados em um pacote de texto ou arquivos Markdown. Um arquivo - uma entidade, os arquivos MD no github têm uma visualização - lepota! E, para simplificar a situação, escreveremos em detalhes na documentação o que é responsável. Parte desta informação:

E o que quero dizer é que editar as informações existentes nesse modo é realmente bastante conveniente. Mas há uma ressalva ...
Acabou sendo conveniente editar os dados, mas iniciar uma nova modificação não foi muito, porque era necessário criar de 4 a 14 arquivos por vez. E fazer isso usando a interface do github é muito inconveniente. O primeiro pensamento foi criar instruções em várias etapas descrevendo como adicionar novas informações de e para.

Infelizmente, o veredicto dos usuários do site foi inequívoco: inconveniente! E se os usuários se sentirem desconfortáveis em um site que deve viver da atividade do usuário ... você sabe, o projeto kirdyk.
PHP para o resgate
Bem, o que fazer, a decisão foi geralmente óbvia: escreva formulários para criar novas informações, criando uma solicitação de recebimento com todos os arquivos necessários, bem como fazendo upload de capturas de tela nas descrições existentes. De acordo com a memória antiga, devido ao desejo de iniciar o projeto o mais rápido possível, e também porque o PHP já estava na hospedagem - o PHP foi usado para esses formulários.

Subiu?
Depois de adicionar formulários convenientes, o processo começou: nas primeiras semanas após a publicação de informações sobre o site no meu blog de vídeo e no site Old-Games.RU, novos mods e portas foram adicionados a uma velocidade que eu simplesmente não tive tempo de moderar!

Além de adicionar informações, também fui dispensado de um certo número de comentários e sugestões sobre a interface e a funcionalidade, alguns dos quais já foram implementados e outros ainda aguardando nos bastidores.
Uma das reclamações frequentes foi a aparência do site - e isso é compreensível, porque eu usei o tema padrão do Bootstrap 4 com o pensamento "isso é temporário, então vou colocar uma pele bonita". A piada sobre "não há nada mais permanente que temporário" nem quer ser reproduzida.
Então, é claro, as atividades começaram a declinar, mas ainda existem alguns usuários ativos no site e o site continua a se encher de informações. No momento do lançamento, em meados de fevereiro, o site tinha 227 mods para 86 jogos e, no momento desta publicação - 323 mods para 130 jogos .
E por que você escreveu aqui?
Primeiramente, para contar outra história com moralidade óbvia: “a interface é conveniente e agradável para o programador, não será nada conveniente para o usuário do site”. Apesar da banalidade da tese, ela deve ser lembrada periodicamente.
E em segundo lugar - convidar os fãs a descobrir o código ou desenhar e girar as interfaces. Talvez o tema do site seja do seu interesse e você queira ajudar um pouco no seu desenvolvimento ;-)
Se você estiver interessado, todo o código-fonte do site estará no github .
PS Vídeo do site