Librecandy è una piattaforma pensata e sviluppata per permettere agli utenti di condividere dei contenuti estetici per Linux. Questo progetto va a favore dell'open-source e cerca di migliorare l'esperienza degli utenti Linux nell'ambito di personalizzazione grafica del proprio ambiente desktop. La piattaforma fornisce la possibilità di poter commentare e votare dei prodotti di altri utenti nell'intento di creare una community che incarni a pieno i principi e i vantaggi dello sviluppo open-source.
Le principali features della piattaforma sono:
-
possibilitĂ di scrivere la documentazione del contenuto pubblicato anche in formato markdown
-
possibilitĂ di creare piĂą versioni di un contenuto e di indicare anche lo stato di mantenimento del pacchetto
Per la produzione della piattaforma sono stati utilizzati i servizi di Microsoft Azure. Microsoft Azure è una raccolta di servizi cloud integrati in continua evoluzione usata da sviluppatori e i professionisti IT per creare, distribuire e gestire applicazioni tramite la nostra rete globale di data center.Microsoft La produzione è stata studiata e progettata per poter essere altamente scalabile e per poter fornire prestazioni di tutto rispetto sin dai primi periodi di lancio. Per ottenere ciò Azure fornisce molti servizi che permettono di risolvere i più comuni problemi di produzione in modo semplice e veloce.
Di seguito viene illustrato quali servizi sono stati utilizzati:
Macchina virtuale relativa all'hosting delle API della piattaforma. Si occupa di gestire le richieste e di conseguenza comunica con il database e con lo storage (in cui immagazina tutti file degli utenti). Per lo sviluppo delle API il linguaggio utilizzato è Node.js che si presta agevolmente a tutte le esigenze di implementazione della piattaforma.
Macchina virtuale relativa all'hosting del client Web della piattaforma. Gli utenti si approcciano a questo server, il quale farà le richieste al server delle API e ne elaborerà le risposte. Riceve i file dallo storage tramite la CDN. Per lo sviluppo del client il linguaggio utilizzato è React.js che permette una rapida e intuitiva gestione delle richieste da inviare e inoltre ha permesso che il client fosse single-page-app.
Il database della piattaforma. MongoDB è il DBMS di default per lo sviluppo in Node.js e, valutanto i pro e i contro rispetto agli altri DBMS, risulta quello ottimale per le esigenze previste dalla piattaforma. Il servizio dato a disposizione da Azure permette una veloce configurazione ed una ottima interoperabilità con gli altri servizi.
Content Delivery Network (CDN)
La CDN si occupa di servire al client tutti i file contenuti nello storage ottimizzando la latenza e le prestazioni rispetto al richiedere gli stessi file direttamente allo storage. Tutto questo avviene in modo del tutto trasparente agli altri servizi.
Servizio di archiviazione di tutti i media files della piattaforma. All'interno sono contenute le immagini del profilo e i contenuti caricati dagli utenti. I file vengono immagazzinati all'interno dello storage dal server delle API e poi vengono richiesti dal client tramite la CDN.
Application Insights - Log Analytics
Servizio che mette a disposizione Azure per monitorare i log dei servizi e gestire gli accessi alla piattaforma.
Servizio di backup che permette il recupero di una precedente versione della piattaforma in caso di problemi tecnici o malfunzionamenti.
Genera un token JWT che assegna all'user. Genera un output con il token ed un messaggio di successo. Bisogna passare in input i dati di un'autenticazione di tipo BASIC.
Crea un nuovo utente (SOLO PER SUPERUSER)
Parameters(Body)
username email password realname bio
Crea un nuovo utente
Parameters(Body)
username email password realname bio
Restituisce una lista di utenti (SOLO PER SUPERUSER)
Parameters(Params)
offset limit
Restituisce i dettagli dell'utente dato in input
Parameters(Params)
offset limit
Modifica i dettagli dell'utente dato in input
Parameters(Body)
realname bio password
Rimuove l'utente dato in input dal sistema
Effettua un upload dell'immagine del profilo all'utente dato in input
Parameters(File)
file
Elimina l'immagine del profilo all'utente dato in input
Restituisce una lista di treats dell'utente dato in input
Parameters(Params)
offset limit
Restituisce una lista di treats
Parameters(Params)
offset limit
Crea un nuovo treat
Parameters(Body)
name category description
Effettua una ricerca del treat e ritorna i risultati
Parameters(Params)
title
Restituisce tutte le categorie di treat possibili
Restituisce una lista di treat della categoria data in input
Parameters(Params)
offset limit
Restituisce una lista di treat della categoria data in input ordinati per rating
Parameters(Params)
offset limit
Restituisce una lista di treat ordinati per rating
Parameters(Params)
offset limit
Restituisce i dettagli del treat dato in input
Elimina il treat dato in input
Modifica la descrizione del treat dato in input
Parameters(Body)
description
Crea una nuova versione nel treat dato in input
Parameters(Body)
version
Modifica la condizione di mantenimento della versione data in input del treat dato in input
Parameters(Body)
is_deprecated
Elimina la versione data in input del treat dato in input
Effettua un upload del file sulla versione data in input del treat dato in input
Parameters(Body)
versionfile
Effettua un upload dello screenshot sul treat dato in input
Parameters(Body)
screenshot
Rende principale lo screenshot dato in input del treat dato in input
Elimina lo screenshot dato in input del treat dato in input
Crea un commento sul treat dato in input
Parameters(Body)
content
Modifica il contenuto del commento dato in input
Parameters(Body)
content
Elimina il commento dato in input
Restituisce il rating inserito dall'utente che fa la richiesta sul treat dato in input
Aggiunge un rating al treat dato in input
Parameters(Body)
rating
Modifica il valore del rating dato in input del treat dato in input
Parameters(Body)
rating
Elimina il rating dato in input del treat dato in input