Scambialibri è una piattaforma Web per la compravendita di libri scolastici trasversalmente all'istituto di appartenenza, mettendo in comunicazione i venditori con gli eventuali compratori.
Per poter girare correttamente ha bisogno dei seguenti software:
- Node.js v8+
- MongoDB 3+
- Gulp 3.9+ (per la compilazione dei template delle e-mail)
- Shell bash (per lo script di deploy, non fondamentale)
Per installare il progetto si può usare il seguente script:
git clone git@github.com:BarsantiLab/scambialibri-api.git
cd scambialibri-api
npm installQuando il progetto sarà pullato e i moduli installati lanciare Gulp per compilare i template delle e-mail:
gulp mail
Una volta completato anche questo processo il server è pronto per essere avviato.
Per avviare il progetto sulla macchina locale è sufficiente lanciare questo comando:
npm start
Il server cercherà di connettersi automaticamente al database MongoDB all'indirizzo mongodb://localhost/Scambialibri e sarà raggiungibile alla porta 8080. Per cambiare i valori consultare la sezione Configurazione.
Il server accetta una serie di parametri di configurazione impostati come variabili d'ambiente. Si possono trovare al file config.ts e vengono caricati all'avvio, quindi è necessario un riavvio se vengono variati. Questa è la lista delle opzioni:
| Nome variabile | Descrizione |
|---|---|
SL_GOOGLE_TOKEN |
Token delle API di Google per il servizio di geolocalizzazione |
SL_MAILGUN_API_KEY |
API key di Mailgun per l'invio delle e-mail |
SL_MAILGUN_DOMAIN |
Nome del dominio configurato su Mailgun |
SL_MAIL_DOMAIN |
Dominio base che verrà usato come prefisso sui link cliccabili delle e-mail |
SL_MONGO_HOST |
Host che ospita il servizio di MongoDB |
SL_MONGO_USER |
Username per l'accesso a MongoDB. Lasciare vuoto se non utilizzato. |
SL_MONGO_PASSWORD |
Password per l'accesso a MongoDB. Lasciare vuoto se non utilizzata. |
SL_MONGO_DB |
Nome del database |
SL_PREVENT_MAIL_SENDING |
Debug: previene l'invio di mail mentre si è in modalità di debug |
Le variabili d'ambiente si possono impostare anche in un file chiamato .env, caricato poi attraverso dotenv, formattato nelle modalità descritte dallo stesso.
Per il deploy al momento viene utilizzato un semplice script bash (build.sh) che compila i sorgenti, crea un archivio compresso con l'output e in base all'environment specificato carica su diverse directory remote tramite scp. Dopo aver caricato l'archivio invia un comando via ssh per decomprimere l'archivio caricato e riavviare pm2, il gestore dei processi.
Per adattarlo alle proprie macchine cambiare le righe 33 e 34 cambiando l'URL, eventualmente l'utente e la path sulla quale vengono caricati gli archivi.
Questo è solo una misura temporanea, in futuro verrà attivato CircleCI per le operazioni ci Continuous Integration e Continuous Delivery (vedi Progetti futuri).
Questa è una lista delle modifiche future che verranno implementate man mano lato server. Non sono in ordine temporale, né di importanza.
- Integrazione con CircleCI per continuous integration/delivery e CodeClimate per la quality assurance.
- Creazione di un container Docker (trasversale a tutti i progetti LoScambialibri.it).
- Integrazione di unit testing per le API.
- Integrazione di una piattaforma per la documentazione delle API (Swagger/apiDoc).
- Integrazione di un broker MQTT per la chat real-time.
- Integrazione delle API di amministrazione/statistiche.
- Integrazione automatica di una strategia di SemVer.
LoScambialibri.it è sempre in cerca di menti che si uniscano nel progetto, in modo di condividere le proprie conoscenze e mettersi a confronto con altri colleghi!
Per avere maggiori informazioni consulta CONTRIBUTING.md e leggi su come fare la tua parte!
scambialibri-frontend: parte frontend che si interfaccia alle API di questo progetto.
- Davide Rossetto - Reviewer and first maintainer - DavideRoss
- Marco Rubin - Presidente di LoScambialibri.it e tester
Il progetto è coperto dalla licenza MIT - vedere la LICENSE per i dettagli.