Prototipazione di un'app simile a Trello utilizzando l'API REST di WordPress

Pubblicato: 2017-02-03

Abbiamo ripetutamente pubblicizzato l'API REST di WordPress sin dal suo annuncio, come una mossa verso una nuova era per la piattaforma. In questo post, sfrutteremo tutto ciò che abbiamo imparato nelle ultime settimane, utilizzando un esempio che mostra quanto potente e versatile possa essere l'API REST di WordPress.

Poiché l'interoperabilità tra diversi linguaggi è al centro di ciò che è REST, progetteremo un prototipo, un'applicazione simile a Trello, utilizzando buone tassonomie e post di WordPress, ma con una svolta! In questo modo, speriamo di dimostrare come WordPress può essere utilizzato come piattaforma di sviluppo.

Trello è un'applicazione di gestione dei progetti di successo che utilizza il paradigma Kanban, originariamente reso popolare da Toyota negli anni '80. I progetti sono rappresentati come schede , che contengono colonne riempite con schede corrispondenti alle attività. Le carte si spostano da una colonna all'altra, finché non si trovano nello stato Fatto ( per esempio, da Todo a Doing to Done). Questo flusso è chiamato flusso di valore. Le due idee chiave alla base di Kanban sono a) visualizzare il tuo lavoro e b) limitare il tuo attuale lavoro in corso. Nel caso di Trello, il lavoro viene visualizzato tramite schede grafiche. Anche le colonne possono avere la capacità massima, il che significa che puoi posizionare una quantità specifica di attività in una colonna e non di più. Ad esempio, la colonna Fare di seguito ha una capacità di 2.

Progettazione dell'applicazione

Progetteremo una versione minimale, essenziale, del paradigma Kanban come prova di concetto. Le principali funzionalità sono le seguenti:

  1. Gli utenti possono creare/aggiornare/eliminare nuove colonne.
  2. Gli utenti possono creare/aggiornare/eliminare nuove carte che si trovano sotto una determinata colonna.

L'idea di base di come tutto questo verrà implementato è incredibilmente semplice usando l'API REST:

  • Le colonne Kanban sono rappresentate come categorie di WordPress .
  • Le capacità delle colonne possono essere inserite come numeri interi nelle descrizioni delle categorie .
  • Carte Kanban come post assegnati a una categoria .
  • Spostare una scheda da una colonna all'altra significa semplicemente cambiare la categoria corrispondente del post.

Seguendo l'idea di "iterare presto e spesso" la prototipazione rapida, le API Kanban presentate di seguito sono solo bozze. Le funzioni sono estrapolate dalle due funzionalità principali elencate in precedenza e dalla mappatura degli asset di WordPress delle colonne alle categorie e delle schede ai post. Non c'è dubbio che nuovi e stimolanti problemi sorgeranno una volta iniziata l'effettiva implementazione del prototipo, ma le seguenti bozze sono sufficienti per cominciare!

API delle colonne Kanban

L'elenco seguente documenta le funzioni che manipolano le colonne Kanban, insieme ai loro tipi di parametri. Le colonne verranno rappresentate come categorie di WordPress e il loro numero di capacità verrà aggiunto nella descrizione della categoria. Questo elenco non documenta alcun valore di ritorno, poiché per questo prototipo sarà sufficiente l'oggetto di risposta JSON di WordPress.

Ospita il tuo sito web con Pressidium

GARANZIA DI RIMBORSO DI 60 GIORNI

GUARDA I NOSTRI PIANI

Tuttavia, tutte le funzioni restituiranno true o false per indicare se l'operazione è stata completata correttamente o se qualcosa è andato storto. In quest'ultimo caso, la vera causa può essere trovata all'interno dell'oggetto di risposta JSON, ma in generale non verrà fornito alcun controllo degli errori reale per il prototipo di proof-of-concept.

• create_new_col(cname:string, cap:int)
Crea una nuova colonna Kanban denominata cname con un limite di numero intero che rappresenta la capacità.

Risorsa API di WordPress: crea una nuova categoria

Questo creerà una nuova categoria, quindi aggiungerà il numero intero di capacità alla descrizione della categoria.

change_col_name(vecchio nome:stringa, nuovonome:stringa)
Cambia il nome di una colonna Kanban da oldname a newname .

Risorsa API di WordPress: modifica una categoria

Questo cambierà semplicemente il nome della categoria.

change_col_cap(newcap:int )
Modifica la capacità della colonna in newcap.

Risorsa API di WordPress: modifica una categoria

Questo cambierà la descrizione della categoria corrispondente per aggiungere il nuovo numero di capacità.

delete_col(colname:string)
Elimina la colonna denominata colname.

Risorsa API di WordPress: elimina una categoria

Questo elimina semplicemente la categoria corrispondente alla colonna. In questo modo renderai effettivamente "orfane" le carte sotto quella colonna. Starà a te decidere come implementare questa cancellazione. Ad esempio a) eliminare una colonna significa eliminare tutto ciò che si trova sotto quella colonna oppure b) eliminare "soft" magari rinominando le carte sotto di essa come _del_<categoria>, in modo da poterle annullare in futuro.

API delle carte Kanban

L'elenco seguente è lo stesso, ma per le carte Kanban. Le carte verranno rappresentate come post di WordPress, utilizzando efficacemente il titolo del post per descrivere l'attività da svolgere. Il contenuto del post può essere utilizzato come contenitore aggiuntivo per le note.

• create_new_card(cname:string)

Crea una nuova scheda denominata cname.

Questo creerà un nuovo post senza contenuto, ma poiché non appartiene a nessuna categoria, non dovrebbe essere visibile all'utente.

• create_new_card(cname:string, c:string)

Crea un nuovo post con titolo cname e contenuto c.

Come sopra, ma anche la scheda viene creata con il contenuto.

• create_new_card(cname:string, cont:string, colname:string)

Crea un nuovo post con titolo cname , content cont , nella categoria colname.

Risorsa API di WordPress: crea un nuovo post

• add_card_col(cname:string, colname:string)

Aggiunge la scheda con nome cname alla colonna con nome colname.

Risorsa API di WordPress: modifica un post

• move_card_col(cname:string, colname:string)

Sposta la carta con nome cname sotto la colonna denominata colname. Questo dovrebbe rimuovere la vecchia categoria del post prima di aggiungere il nuovo.

Risorsa API di WordPress: modifica un post

• delete_card(cname:string)
Elimina una carta con nome cname.

Risorsa API di WordPress: elimina un post

Questo esegue un'eliminazione distruttiva o meno, a seconda che tu abbia abilitato il cestino nel tuo blog WordPress.

Integrità dei dati

Ora che abbiamo mappato le nostre funzioni alle chiamate e alle risorse API di WordPress, dobbiamo assicurarci che i nostri dati siano mantenuti coerenti. Ad esempio, una colonna Kanban che ha una capacità di 2, non può contenere più di 2 carte. Una carta non può trovarsi in due colonne contemporaneamente. Quando una carta viene spostata in un'altra colonna, deve essere eliminata da dove si trovava. WordPress, tuttavia, non sa nulla di questi vincoli, quindi la nostra applicazione deve verificarli e applicarli in ogni operazione di scrittura.

Poiché si tratta di un prototipo, non tutti i casi limite saranno evidenti dalla fase di progettazione. Questi appariranno inevitabilmente durante l'implementazione di ciascuna funzione.

Ulteriori lavori

Finora abbiamo parlato solo delle API che guideranno la nostra applicazione Kanban utilizzando le risorse di WordPress in diversi modi. Il nostro prototipo sarebbe gravemente carente se consistesse solo in un gruppo di API back-end senza front-end che le persone potrebbero effettivamente utilizzare. Ancora una volta qui vediamo la versatilità delle API REST, poiché nessuno dice come dovresti farlo. Potresti usare qualcosa come Bootstrap, o scrivere una buona 'OLE GUI in Java; non c'è letteralmente limite a ciò che puoi usare.

Il nostro prototipo supporta anche solo una scheda Kanban, ovvero un progetto, collegato alla tua istanza WordPress. Questo è probabilmente accettabile per un proof-of-concept ma ovviamente inaccettabile per un prodotto finale. Una soluzione sarebbe quella di mappare i concetti Kanban alla tassonomia di WordPress in un modo diverso e più efficiente, in grado di supportare più schede Kanban e ancora più funzionalità come la collaborazione in team.

Lo sviluppo di WordPress è diventato davvero eccitante!