Certamente muitos já ouviram o conceito de MVP (produto mínimo viável da
Wiki ). Existem muitos artigos sobre MVP no MVP, mas basicamente é apenas uma descrição do que é o MVP e para que serve, ou vários sucessos e não muita história. Mas não encontrei um único artigo que descrevesse o que o MVP estava fazendo. Mas acredita-se que blogs pessoais sejam mais fáceis de criar em um mecanismo, lojas online em outro, etc. (cada um substituirá seu nome pelo mecanismo favorito para esses fins). Mas por que então um mecanismo mais conveniente para MVP não está definido? Não darei uma resposta clara a essa pergunta, mas vou compartilhar meus pensamentos sobre o que exatamente é bom para criar MVP meu Prisma CMS, sobre o qual
escrevi aqui alguns meses atrás. Quem se importa, por favor, debaixo do gato.
Curiosamente, em geral, o MVP pode ser comparado ao
wiki de prototipagem mais avançado. Ao mesmo tempo, há um software especial para prototipagem e, uma vez, eu até usei o mesmo Axure. Mas o que estava faltando no Axure e por que o abandonei imediatamente? (Não sei, talvez agora ele tenha se tornado mais avançado e esses problemas tenham sido resolvidos, mas na época não havia).
- Não há trabalho com dados reais. Ou seja, eu tenho uma seção Usuários no protótipo, mas não consigo obter os dados do usuário por meio da API e exibi-los em um loop no meu modelo. E, de fato, em princípio, não há como trabalhar com dados reais (criar registros, lê-los).
- Passando o estágio de prototipagem e movendo-se diretamente para o desenvolvimento, não é possível usar os modelos criados no protótipo. Ou seja, depois que o protótipo foi criado e acordado com o cliente e, quando mudamos para a programação, pudemos apenas olhar para o protótipo com nossos olhos, nada poderia ser feito com ele. E então eu queria lançar um protótipo e usá-lo no desenvolvimento.
Ainda houve momentos, mas esses dois são os mais importantes. Aconteceu que os estágios da prototipagem e programação viveram suas próprias vidas independentes e não se afetaram de forma alguma. Mas eu gostaria que o estágio de prototipagem fosse diretamente direto para a programação. E, dentro da estrutura do artigo atual, pode-se sugerir que a prototipagem flua para a criação do MVP e, se for bem-sucedida, o MVP poderá ser desenvolvido para o produto final. De fato, se você pensa assim, a criação do MVP nem sempre garante que, no futuro, haverá um produto mais completo. Afinal, qual é o sentido de criar MVP? Em primeiro lugar, para implementar a idéia com custos mínimos, para que você possa experimentá-la no trabalho e, em segundo lugar, para estudar a demanda e decidir por si mesmo se vale a pena investir e desenvolvê-la para um produto completo. E, portanto, precisamos de uma ferramenta que nos permita criar rapidamente protótipos / MVP e, por outro lado, se o MVP for bem-sucedido, poderemos desenvolver o projeto ainda mais, sem restrições especiais.
Por uma questão de fato, olhando para o Prisma CMS, eu apenas vejo esse mecanismo. Há muito para lançar rapidamente o rascunho do projeto:
- Quase todo o trabalho é feito na frente através do nosso próprio editor de front-end WYSIWYG.
- Os URLs são implementados no react-router, o que permite que o endereçamento também seja gravado diretamente na frente do editor, e não no servidor.
- A API é implementada no GraphQL, que permite escrever consultas na frente e não no servidor. Ao mesmo tempo, o Graph i QL é integrado, o que simplifica o processo de gravação de consultas.
- Além disso, existem filtros gerados, página por página e outros itens úteis.
E tudo isso é openSource, ou seja, não é SaaS, pelo qual você deve pagar constantemente (sem ter tudo à sua disposição). Isso pode ser implantado no seu servidor e customizado para você.
Antes de descrever o processo de instalação no servidor e os processos de personalização, sugiro que você analise a gravação do processo de criação de uma seção separada no site. São quase 15 minutos, mas basta olhar para os primeiros 4 minutos, isso é mais do que suficiente para ter uma idéia do Prisma CMS e, se houver interesse, continue lendo mais o tópico ou tente implantar o mecanismo em casa.
Então, instalando o Prisma CMS no servidor (eu uso o ubuntu, de preferência pelo menos 4Gb de RAM e um SSD).
Supõe-se que você já esteja familiarizado com node-js, npm / yarn, react e graphql.1. Instale o software necessário
Se tudo for inserido de uma só vez no terminal, a execução poderá ser interrompida, portanto, é melhor executar linha por linha.Esta é uma instalação mínima sem configurações de nível de acesso etc., apenas para fins informativos, ou seja, se você tentar um novo servidor limpo, tudo será feito a partir da raiz (incluindo a inicialização do site). Para o nosso experimento, isso não é de todo importante.
sudo apt update sudo apt install mc sudo apt install git curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash - sudo apt-get install -y nodejs sudo npm i -g yarn sudo apt-get install software-properties-common python-software-properties sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D sudo apt-add-repository 'deb https://apt.dockerproject.org/repo ubuntu-xenial main' sudo apt-get update sudo apt-get install -y docker-engine sudo curl -L https://github.com/docker/compose/releases/download/1.18.0/docker-compose-`uname -s`-`uname -m` -o /usr/local/bin/docker-compose sudo chmod +x /usr/local/bin/docker-compose
2. Clone o repositório
mkdir /var/www cd /var/www git clone https://github.com/prisma-cms/boilerplate cd boilerplate yarn --ignore-engines
3. Inicie contêineres do Docker com MySQL e prisma (o prisma é um produto separado, não meu, mas com o qual o lado do servidor está fortemente conectado, consulte
github.com/prisma/prisma ).
sudo docker-compose -f src/server/scripts/docker/prisma/docker-compose.yml up -d
Se você quiser examinar o banco de dados através do phpMyAdmin, instale-o também.
sudo docker run -d --link prisma_mysql_1:db --network prisma_default -p 8090:80 phpmyadmin/phpmyadmin
Vai travar na porta 8090. Por padrão, o nome de usuário / senha é root / prisma
4. Esquema de implantação
endpoint=http://localhost:4466/my-project/dev yarn deploy
my-project / dev, respectivamente, você pode escrever o seu próprio e criar muitos projetos no mesmo servidor.
Importante! Na produção, a porta 4466 deve ser fechada por um firewall, não deve ser diretamente acessível do lado de fora.5. Inicie o servidor API
APP_SECRET=MyStrongSecret endpoint=http://localhost:4466/my-project/dev yarn start-server
Após iniciar, você pode abrir a API
server-ip : 4000.
Como escrevi em um artigo anterior, este é um servidor intermediário que implementa sua própria lógica em cima da gerada (que é executada na porta 4466).
6. Lance a frente
Abrimos mais um terminal e na mesma pasta executamos
yarn start
A frente começará na porta 3000. Agora você pode ir diretamente para a "programação" da frente. Abra o
servidor-ip : 3000. Ao entrar, enquanto não houver um único modelo salvo para a frente, um botão de autorização será exibido para você. A lógica é registrar e começar a projetar o site. Quem é o primeiro - aquele site de
tênis ? É assim que se parece:
7. Crie scripts e execute SSR (Servcer-Side Rendering)
O início do yarn start é um modo dev, adequado para o primeiro início (verificando se tudo funciona) e para a programação direta da parte JS. E para a batalha, é claro, é necessária uma frente coletiva. Interrompa o início da execução do fio via Ctrl + C e crie scripts.
yarn build
Você pode fumar e servir café, esse processo não é rápido. Em casos raros, o edifício desmorona pela primeira vez, basta executá-lo novamente; nesse caso, como regra, ele é concluído com sucesso e muito mais rápido.
Quando o prédio terminar, execute a frente montada.
yarn start-ssr
Agora, o lançamento é muito mais rápido e os scripts são menores.
Conclusão
O vídeo mostra que em alguns lugares existem problemas muito grandes com a usabilidade, mas o projeto ainda está em desenvolvimento, gradualmente esses problemas são eliminados. Mas muito pode ser feito bem na frente. A limpeza séria do código-fonte ainda está para ser feita, pois acumulou muito de tudo o que já não é realmente necessário, mas simplesmente se estende como um legado. Como resultado, a frente deve ser muito mais fácil. E será montado mais rapidamente e carregando a página mais rapidamente.
De qualquer forma, repito, na minha opinião, como o mecanismo do MVP pode se encaixar muito bem - jogue algo rapidamente e mostre ao cliente. Além disso, se prosseguirmos com o desenvolvimento do produto final, mesmo que a frente não seja satisfeita, podemos descartá-lo completamente e reescrevê-lo à nossa maneira, enquanto a lógica do banco de dados e do servidor não irá a lugar algum. Afinal, isso é sem cabeça-cms. Mas espero que, com o tempo, a frente seja levada a um nível completamente aceitável.
Se a comunidade tiver interesse, escreverei separadamente tópicos sobre como personalizar a frente (adicionar seus próprios blocos para o editor da frente) e como personalizar o servidor (expandir o esquema, adicionar suas próprias entidades, adicionar resolvedores etc.). Muitas ferramentas já foram elaboradas para concluir rapidamente essas tarefas.
Fontes do ProjetoObrigado a todos pela atenção!