Prototipando um aplicativo semelhante ao Trello usando a API REST do WordPress
Publicados: 2017-02-03Temos repetidamente elogiado a API REST do WordPress desde o seu anúncio, como um movimento em direção a uma nova era para a plataforma. Neste post, vamos aproveitar tudo o que aprendemos nas últimas semanas, usando um exemplo que mostra o quão poderosa e versátil a API REST do WordPress pode ser.
Como a interoperabilidade entre diferentes linguagens está no centro do que é REST, vamos projetar um protótipo, aplicativo semelhante ao Trello, usando boas taxonomias e postagens do WordPress, mas com uma reviravolta! Dessa forma, esperamos demonstrar como o WordPress pode ser usado como plataforma de desenvolvimento.
O Trello é um aplicativo de gerenciamento de projetos de sucesso usando o paradigma Kanban, originalmente popularizado pela Toyota na década de 1980. Os projetos são representados como quadros , que contêm colunas preenchidas com cartões correspondentes às tarefas. Os cartões se movem de uma coluna para a próxima, até que estejam no estado Concluído ( por exemplo, de Tudo para Fazer para Pronto). Esse fluxo é chamado de fluxo de valor. As duas ideias principais por trás do Kanban são a) visualizar seu trabalho eb) limitar seu trabalho em andamento atual. No caso do Trello, o trabalho é visualizado por meio de placas gráficas. As colunas também podem ter capacidades máximas, o que significa que você pode colocar uma quantidade específica de tarefas em uma coluna e não mais que isso. Por exemplo, a coluna Fazendo abaixo tem uma capacidade de 2.
Projeto do aplicativo
Estaremos projetando uma versão mínima e básica do paradigma Kanban como uma prova de conceito. As principais funcionalidades são as seguintes:
- Os usuários podem criar/atualizar/excluir novas colunas.
- Os usuários podem criar/atualizar/excluir novos cartões que estão em uma determinada coluna.
A ideia básica de como tudo isso será implementado é incrivelmente simples usando a API REST:
- As colunas Kanban são representadas como categorias do WordPress .
- As capacidades das colunas podem ser colocadas como números inteiros nas descrições das categorias .
- Cartões Kanban como postagens atribuídas a uma categoria .
- Mover um cartão de uma coluna para outra significa simplesmente alterar a categoria correspondente da postagem.

Seguindo a ideia de “iterar cedo e frequentemente” de prototipagem rápida, as APIs Kanban apresentadas abaixo são apenas rascunhos. As funções são extrapoladas a partir das duas principais funcionalidades listadas anteriormente, e o mapeamento de ativos do WordPress de colunas para categorias e cartões para postagens. Não há dúvida de que novos e desafiadores problemas surgirão assim que a implementação real do protótipo começar, mas os rascunhos a seguir são suficientes para começarmos!
API de colunas Kanban
A lista abaixo documenta as funções que irão manipular as colunas Kanban, juntamente com seus tipos de parâmetros. As colunas serão representadas como categorias do WordPress e seu número de capacidade será adicionado na descrição da categoria. Esta lista não documenta nenhum valor de retorno, pois para este protótipo o objeto de resposta JSON do WordPress será suficiente.
No entanto, todas as funções retornarão true ou false para indicar se a operação foi concluída com êxito ou se algo deu errado. No último caso, a causa real pode ser encontrada no objeto de resposta JSON, mas, em geral, nenhum controle de erro real será provisionado para o protótipo de prova de conceito.
• create_new_col(cname:string, cap:int)
Crie uma nova coluna Kanban chamada cname com um limite de número inteiro representando a capacidade.
Recurso da API do WordPress: crie uma nova categoria

Isso criará uma nova categoria e, em seguida, adicionará o número inteiro da capacidade à descrição da categoria.
• change_col_name(oldname:string, newname:string)
Altere o nome de uma coluna Kanban de oldname para newname .
Recurso da API do WordPress: Editar uma categoria
Isso simplesmente mudará o nome da categoria.
• change_col_cap(newcap:int )
Altere a capacidade da coluna para newcap.
Recurso da API do WordPress: Editar uma categoria
Isso mudará a descrição da categoria correspondente para adicionar o novo número de capacidade.
• delete_col(colname:string)
Exclui a coluna chamada colname.
Recurso da API do WordPress: Excluir uma categoria
Isso simplesmente exclui a categoria correspondente à coluna. Ao fazer isso, você efetivamente deixará os cartões sob essa coluna órfãos. Caberá a você decidir como implementar essa exclusão. Por exemplo, a) excluir uma coluna significa excluir tudo sob essa coluna ou b) excluir "soft" talvez renomeando os cartões sob ela como _del_<category>, para que você possa recuperá-los no futuro.
API de cartões Kanban
A lista abaixo é a mesma, mas para os cartões Kanban. Os cartões serão representados como postagens do WordPress, usando efetivamente o título da postagem para descrever a tarefa a ser realizada. O conteúdo da postagem pode ser usado como um contêiner adicional para anotações.
• create_new_card(cname:string)
Cria um novo cartão chamado cname.
Isso criará um novo post sem conteúdo, mas como não pertence a nenhuma categoria, não deve ficar visível para o usuário.
• create_new_card(cname:string, c:string)
Crie um novo post com título cname e conteúdo c.
O mesmo que acima, mas o cartão é criado com conteúdo também.
• create_new_card(cname:string, cont:string, colname:string)
Crie uma nova postagem com o título cname , content cont , na categoria colname.
Recurso da API do WordPress: Crie uma nova postagem
• add_card_col(cname:string, colname:string)
Adiciona o cartão com o nome cname à coluna com o nome colname.
Recurso da API do WordPress: Editar uma postagem
• move_card_col(cname:string, colname:string)
Move o cartão com o nome cname para a coluna chamada colname. Isso deve remover a categoria antiga da postagem antes de adicionar a nova.
Recurso da API do WordPress: Editar uma postagem
• delete_card(cname:string)
Exclui um cartão com o nome cname.
Recurso da API do WordPress: Excluir uma postagem
Isso executa uma exclusão destrutiva ou não, dependendo se você ativou a lixeira em seu blog WordPress.
Integridade de dados
Agora que mapeamos nossas funções para chamadas e ativos da API do WordPress, precisamos garantir que nossos dados sejam mantidos consistentes. Por exemplo, uma coluna Kanban com capacidade de 2, não pode conter mais de 2 cartões. Um cartão não pode estar em duas colunas ao mesmo tempo. Quando um cartão é movido para outra coluna, ele precisa ser excluído de onde estava. O WordPress, no entanto, não sabe nada sobre essas restrições, então nosso aplicativo precisa verificá-las e aplicá-las em todas as operações de gravação.
Como este é um protótipo, nem todos os casos extremos serão evidentes desde a fase de projeto. Eles inevitavelmente aparecerão durante a implementação de cada função.
Trabalho Adicional
Até agora, falamos apenas sobre as APIs que conduzirão nosso aplicativo Kanban usando recursos do WordPress de diferentes maneiras. Nosso protótipo seria seriamente deficiente se consistisse apenas em um monte de APIs de back-end sem front-end que as pessoas pudessem realmente usar. Mais uma vez aqui vemos a versatilidade das APIs REST, pois não há ninguém dizendo como você deve fazer isso. Você poderia usar algo como Bootstrap, ou escrever uma boa GUI em Java; não há literalmente nenhum limite para o que você pode usar.
Nosso protótipo também suporta apenas um quadro Kanban, que é um projeto, vinculado à sua instância do WordPress. Isso é provavelmente aceitável para uma prova de conceito, mas obviamente inaceitável para um produto final. Uma solução seria mapear os conceitos Kanban para a taxonomia do WordPress de uma maneira diferente e mais eficiente, que suportasse vários quadros Kanban e ainda mais recursos, como colaboração em equipe.
O desenvolvimento do WordPress tornou-se realmente emocionante!