Sistema di gestione bibliotecaria.
È necessario installare golang e make
per compilare il codice, docker
e docker-compose
per eseguire il database di sviluppo, e zip
per comprimere i file di rilascio.
Nota per gli utenti Windows: si consiglia di installare git for windows poiché fornisce un set di tool simile ai sistemi Unix, il che è fondamentale al fine di eseguire il Makefile ed i git hooks. Inoltre, per installare make
e zip
si consiglia un package manager come Chocolatey.
Per contribuire al codice è necessario eseguire dalla directory principale del repository il seguente comando:
$ ./scripts/setup.sh
Per compilare ed eseguire è possibile usare make
:
$ make run
È possibile anche generare un binario di release:
$ make release
Per eliminare i risultati della compilazione:
$ make clean
Basata su questo.
Contiene il main.
Contiene il file di configurazione di default.
Contiene la struttura del database ed un file docker-compose per avviare il database di sviluppo.
Contiene degli hook utili allo sviluppatore.
Contiene i packages interni da cui è composto il software.
Contiene script utili allo sviluppatore.
Contiene gli asset statici e i template HTML.
Contiene un ambiente di prova per i risultati della compilazione. (generata da make
)
Contiene i binari di rilascio. (generata da make
)
Home del sito web: può contenere informazioni sul progetto ed eventuali statistiche.
Elenco dei libri con ricerca server-side.
I risultati sono divisi in più pagine.
La ricerca opera su titolo, autore e genere.
Di default reindirizza a /libri/0
Restituisce la page
-esima pagina.
Reindirizza a /libri
.
Dettagli sul libro id
.
Se il libro è correntemente in prestito visualizza l'assegnatario corrente.
Elenco degli autori. Di default reindirizza ad /autori/a
.
Elenco degli autori con iniziale iniziale
.
In cima è presente una lista con i collegamenti a tutte le iniziali disponibili.
Reindirizza alla ricerca di /libri
quando si clicca su un autore.
Elenco dei generi.
Reindirizza alla ricerca di /libri
quando si clicca su un genere.
Pagina di accesso all'area utente.
Utilizza il server LDAP per l'autenticazione (oppure reindirizza alla pagina di accesso del SSO), ritorna un token e reindirizza a /utente
.
Endpoint che rimuove il token di accesso e reindirizza a /
.
Contiene informazioni sull'utente, come il nome utente e la storia dei prestiti.
È presente un link a /prestito
.
Permette di scansionare o inserire il codice di uno o più libri per prenderli in prestito scegliendone la durata.
In caso non sia stato effettuato l'accesso verranno richieste le proprie credenziali, senza però restituire un token (caso d'uso: computer comune in biblioteca per prendere in prestito e restituire libri).
In caso non sia stato effettuato l'accesso reindirizza a /login
.
Permette di restituire i libri in proprio possesso.
Funzionamento identico a /prestito
.
Permette all'utente amministratore di generare i codici QR per i libri.
Permette all'utente amministratore di aggiungere generi, autori e libri al database.
Endpoint per servire contenuti statici da web/static
.
Endpoint per ottenere informazioni su un libro in formato JSON a partire dal contenuto del suo QR code (necessaria previa autenticazione).
Endpoint per prendere in prestito un libro per una certa durata (necessaria previa autenticazione).
Endpoint per restituire un libro (necessaria previa autenticazione).
Codice
(primary key)Titolo
Autore
Genere
Prenotato
Hashz
Codice
(primary key)Nome
Codice
(primary key)Nome
Cognome
Codice
(primary key)Libro
(foreign key)Utente
(foreign key)Data_prenotazione
Durata
Data_restituzione
In ogni package è presente un file README dove sono indicate le funzionalità da implementare, i tipi e le funzioni esportate. Si consiglia di scrivere funzioni interne al package per evitare che queste diventino troppo lunghe.
auth
config
db
handlers
hash
qrcode
Questo template va incluso all'inizio di ogni file.
/*
* nome-file.go
*
* Descrizione del file.
*
* Copyright (c) 2020 Nome Cognome <[email protected]>
*
* This file is part of LilBib.
*
* LilBib is free software; you can redistribute it and/or modify it
* under the terms of the Affero GNU General Public License as
* published by the Free Software Foundation; either version 3, or (at
* your option) any later version.
*
* LilBib is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
* or FITNESS FOR A PARTICULAR PURPOSE. See the Affero GNU General
* Public License for more details.
*
* You should have received a copy of the Affero GNU General Public
* License along with LilBib; see the file LICENSE. If not see
* <http://www.gnu.org/licenses/>.
*/