Ti presentiamo il nostro avanzato sistema di gestione delle biblioteche scolastiche multilingue! Questa piattaforma all'avanguardia vanta un'ampia gamma di funzionalità all'avanguardia, tutte progettate per rivoluzionare il processo di gestione delle biblioteche e portare l'esperienza dell'utente a un livello superiore.
Con il nostro sistema, godrai della flessibilità di assegnare ruoli e autorizzazioni, garantendo sicurezza e controllo degli accessi ottimali. La nostra solida funzione di ricerca full-text consente una scoperta rapida e semplice dei contenuti, mentre la nostra integrazione API semplifica la gestione dei dati.
Inoltre, il nostro sistema offre capacità di elaborazione delle immagini senza precedenti, tra cui il ritaglio e la compressione, rendendo la gestione delle immagini un gioco da ragazzi. Per un facile accesso e comodità per l'utente, offriamo un'integrazione perfetta dell'accesso a GitHub e l'importazione dei dati è un gioco da ragazzi grazie alla nostra funzione di importazione CSV.
Rimani connesso e mantieni i tuoi utenti aggiornati con la nostra funzione di newsletter e garantisci una sicurezza ottimale con la nostra integrazione reCAPTCHA all'avanguardia. Con il nostro innovativo sistema di gestione delle biblioteche scolastiche multilingue, le possibilità sono infinite!
- PHP >= v.8.0
- Composer >= v.2.4
- Ti suggeriamo di visitare il sito ufficiale di Laravel
In questo progetto vengono utilizzati pacchetti per manipolare dinamicamente le foto allegate, quindi è possibile che appaia un errore se il tuo file "php.ini" non è configurato correttamente. Per impostazione predefinita, questo file disabilita alcune estensioni e questi pacchetti (dipendenze) che abbiamo utilizzato nel progetto. Tutto quello che serve è:
-> Apri il tuo file "php.ini" come documento di testo (utilizzando Blocco note o altro software simile)
-> Trova la riga ;extension=gd
e cambiala in extension=gd
-> Riavvia il tuo server Apache
Se non sai come trovare il file "php.ini"... il percorso più comune è
C:\php
. Puoi anche digitare il comando: `php --ini' nel prompt dei comandi per ottenere maggiori informazioni
-> "Crittografia non supportata o lunghezza della chiave errata. Le crittografie supportate sono..."
È un APP_KEY generato in modo errato, ad es. una chiave di crittografia dell'applicazione. Apri il file ".env" che si trova nella radice del progetto. Elimina il valore inserito ed esegui il comando:
php artisan key:generate
-> "SQLSTATE[HY000] [2002] Non è stato possibile stabilire alcuna connessione perché la macchina di destinazione l'ha rifiutata attivamente"
Potresti non aver avviato il tuo server locale. A seconda del software che stai utilizzando come pacchetto server, avvialo insieme al server Apache e riprova. Software conosciuto: WAMP, XAMPP, ampss e così via.
-> "Impossibile trovare il driver (SQL: SHOW FULL TABLES WHERE table_type = 'BASE TABLE').."
Il messaggio di errore "Impossibile trovare il driver" di solito indica che l'estensione PHP per il driver del database che stai utilizzando non è installata o abilitata sul tuo sistema.
Apri il file "php.ini" in un editor di testo e cerca la riga che inizia con "extension=". Rimuovi il punto e virgola (;) all'inizio della riga e sostituisci con il nome dell'estensione PHP che hai installato al passaggio 2.
extension=mysql
- Clona questo repository usando questo comando:
git clone https://github.com-tim4-22/library.git
-
Entra nella cartella principale se non ci sei già
-
Installa/aggiorna i pacchetti del compositore:
composer install | composer update
- Copia il file .env.example nel file .env e configura le variabili in base al tuo ambiente
- Puoi farlo con il seguente comando:
cp .env.example .env
- Poiché questa applicazione utilizza Algolia per la ricerca, sarà necessario chiedere all'amministratore le chiavi delle seguenti variabili:
SCOUT_DRIVER | SCOUT_QUEUE | ALGOLIA_APP_ID | ALGOLIA_SECRET
- Inoltre, poiché questa app utilizza Laravel Socialite per la registrazione/l'accesso utilizzando un'app/piattaforma di terze parti come Google, GitHub, ecc., dovrai chiedere all'amministratore le chiavi delle seguenti varianti:
GITHUB_CLIENT_ID | GITHUB_CLIENT_SECRET | GITHUB_REDIRECT_URL
- Se vuoi integrare la newsletter, puoi definire i tuoi valori per le variabili specificate:
MAILCHIMP_APIKEY | MAILCHIMP_LIST_ID
Utilizziamo un servizio di posta newsletter: Mailchimp
- Se vuoi visitare il tuo database locale in modo rapido, efficiente e moderno, puoi farlo facilmente con l'amministratore che abbiamo integrato insieme all'applicazione. Puoi visitare l'interfaccia utente di amministrazione andando a:
{{base_url}}/adminer
Usiamo il tema: Hydra Dark
* Genera chiave di crittografia:
```shell
php artisan key:generate
- Esegui migrazioni:
php artisan migrate
- Se il tuo database è già pieno usa questo comando:
php artisan migrate:fresh
- A scopo di test, puoi utilizzare il server già integrato di Laravel con il comando:
php artisan serve
Dopo aver eseguito tutti i comandi precedenti, dovresti eseguire l'applicazione e vederla su http::/localhost del tuo dominio a seconda della tua configurazione.
Nota 1.1: Se vuoi scrivere/eseguire test già esistenti, assicurati di cambiare la variabile env: APP_ENV=local -> APP_ENV=testing
Note 1.2: se si desidera eseguire il backup del database, farlo utilizzando il comando pacchetto integrato:
php artisan backup:run
Tutti i progressi vengono monitorati sulla seguente piattaforma di gestione dei progetti:
- Trello
- monday.com
- Asana
per i link contattare l'amministratore
-
Puoi accedere con le seguenti credenziali:
- Indirizzo e-mail: [email protected]
- gli password: nekalozinka
-
Flusso di lavoro del progetto
- All'avvio dell'applicazione, ti verrà mostrata una pagina di "benvenuto" con informazioni aggiuntive
- Quando accedi, verrai reindirizzato alla pagina "dashboard" dove puoi vedere più cose come le ultime attività (lo stesso giorno), le ultime prenotazioni di libri, le statistiche sui libri e così via
- In questa pagina puoi andare ad altre pagine utilizzando il menu laterale (barra laterale), inserire il tuo profilo, uscire e altro
- Clicca sull'immagine nell'angolo in alto a destra per entrare nel tuo profilo o uscire
- Ogni utente può eliminare il proprio account, con conferma preventiva (finestra di dialogo) dopodiché l'applicazione lo reindirizza ad una apposita pagina di "Arrivederci"
-
Ci sono tre ruoli:
amministratore
,bibliotecario
andalunno
- L'amministratore ha accesso a tutto sull'applicazione
- Possibilità di creare, modificare ed eliminare:
- alunno
- prenotare
- autore
- categoria, genere, editore, rilegatura, formato, lettera
- Operazioni disponibili:
- Per rilasciare una copia del libro
- Per cancellare una copia del libro
- Per restituire una copia del libro
- Per prenotare una copia del libro
- Operazioni disponibili:
- Per rilasciare una copia del libro e solo una al momento
- Se lo studente ha:
- una prenotazione attiva o una prenotazione in sospeso, non è possibile inviare una richiesta di prenotazione del libro
- se hai una prenotazione rifiutata o scaduta, puoi inviare una richiesta di prenotazione del libro
Funzionalità | Amministratore | Bibliotecario | Alunno |
---|---|---|---|
Chiusura dell'applicazione | ✔️ | ❌ | ❌ |
Attivazione dell'applicazione | ✔️ | ❌ | ❌ |
Gestione database - CSV | ✔️ | ❌ | ❌ |
Alterazione delle meta informazioni | ✔️ | ❌ | ❌ |
Modifica delle variabili globali | ✔️ | ❌ | ❌ |
CRUD su amministratori | ✔️ | ❌ | ❌ |
CRUD sui bibliotecari | ✔️ | ✔️ | ❌ |
CRUD sugli studenti | ✔️ | ✔️ | ❌ |
CRUD sui libri | ✔️ | ✔️ | ❌ |
CRUD sugli autori | ✔️ | ✔️ | ❌ |
CRUD sulle impostazioni | ✔️ | ✔️ | ❌ |
Modifica il tuo profilo | ✔️ | ✔️ | ✔️ |
Visualizzazione dei libri disponibili | ✔️ | ✔️ | ✔️ |
Libri in affitto | ✔️ | ✔️ | ❌ |
Libri restituiti | ✔️ | ✔️ | ❌ |
Libri scaduti | ✔️ | ✔️ | ❌ |
Prenotazioni di libri attivi | ✔️ | ✔️ | ✔️ |
Prenotazioni di libri archiviati | ✔️ | ✔️ | ✔️ |
Prenota prenotazioni | ✔️ | ✔️ | ✔️ |
Se la prenotazione è effettuata da un bibliotecario, assume immediatamente lo stato "Accettata", mentre se è effettuata da uno studente, assume lo stato "In attesa" finché il bibliotecario non l'accetta.
Azione - l'operazione di restituzione libretto è disponibile solo se il libretto è stato emesso
Azione - l'operazione di cancellazione del libro è disponibile solo se il libro è scoperto
Le prenotazioni hanno 5 stati:
- Accettato
- Respinto
- In attesa
- Archiviato
- Scaduto
- Informazioni
- Con successo
- Fallito
- Protezione del middleware su tutti i percorsi (web e API)
- Token CSRF - protezione
- Politiche utilizzate
- Hashing delle password - bcrypt
- Protezione su tre livelli... per ruoli -> amministratore, bibliotecario e studente
- Honeypot
- Protezione XSS
Ci sono 3 compiti:
- La prima attività che viene eseguita su base giornaliera e che archivia automaticamente le prenotazioni attive scadute
- Un'altra attività che viene eseguita su base mensile ed elimina automaticamente gli utenti che non hanno effettuato l'accesso per più di 365 giorni
- La terza attività viene eseguita due volte al giorno e cambia automaticamente lo stato della biblioteca in termini di lavoro. Quando la libreria è chiusa, lo stato è '0' e quando è aperta è '1'. Con orari di lavoro definiti, inizio e fine in ore, questa attività viene eseguita in tali orari e cambia lo stato
L'amministratore può "inviare" l'applicazione alla cosiddetta modalità "spegnimento". Laravel ha un comando "php artigiano down" integrato che "chiude" l'applicazione. La nostra applicazione funziona utilizzando il percorso web "/shutdown" che è protetto.
- Quando vuoi chiudere l'applicazione -> Vai all'URL "{{base_url}}/shutdown"! nota: devi essere loggato ed essere un "amministratore"
- Quando vuoi avviare l'applicazione -> Vai all'URL "{{base_url}}/live.php" dopo di che apparirà una pagina di "reindirizzamento"
- Distribuzione automatica - cPanel
- Lavori Cron
- Ajax requests
- Messaggi di sessione flash dettagliati
- Utenti, categorie e generi hanno una foto standard (predefinita).
- Statistiche dinamiche sulla pagina "dashboard".
- Implementata l'impaginazione Tailwind con un elenco a discesa
- Eventi e ascoltatori di Laravel (ultimo accesso alle, conteggio degli accessi)
- Accessori Laravel
- Pianificazione delle attività di Laravel
- Laravel Eloquente / Costruttore di query
- Regole di convalida Laravel personalizzate
- Componenti Laravel
- Politica di impaginazione
- Percorsi organizzati per cartelle
- Conteggio delle notifiche
- Indicatore password - funzionalità
- Ricerca a testo integrale | Algolia | Esploratore Laravel
- Eliminazione multipla
- Campi di completamento automatico per e-mail, nome utente - funzionalità
- Aggiunto CKEditor come editor di testo "ricco".
- Comprimere e ridimensionare (adattando automaticamente la larghezza) alle foto caricate
- Ritaglio di immagini
- Modalità di manutenzione e relativa pagina
- Prestazioni ottimali (242 ms) Grado GTmetrix
- Pagina "Non trovato".
- Pagina "Non consentito".
- Titolo e meta tag appropriati
- Informazioni individuali durante la selezione
- Il token API scade -> 1h -> 3600s
- Revoca del token API dopo la modifica della password
- Risorse e raccolte API
- Convalida dell'indirizzo e-mail (e-mail della scuola)
- Preloader - animazione
- Sessi degli utenti
- Password occhio - funzionalità
- Allegato PDF per i libri
- Corrispondenza di parole (1 copia, 4 copie)
- Percorsi web personalizzati per l'accesso e la registrazione
- Manuale CSV
- 3 tentativi di accesso consentiti
- Multi filtri
- Dati standard (predefiniti) durante le migrazioni
- Indicatore di scorrimento - funzionalità
- Scorri verso l'alto - funzionalità
- Codice strutturato, percorsi e cartelle
- Codici di stato HTTP corretti
- Schermo intero - funzionalità
- Ordinamento in entrambe le direzioni (asc,desc) - funzionalità
- Percorsi ottimizzati SEO
- Codice minimizzato
- Carica di più - animazione
- Messaggi di convalida personalizzati
- Anteprima immagine - Lightbox - funzionalità
- Convalida del modulo
Questa API contiene:
77 richieste, di cui:
- 46 richieste GET
- 11 richieste POST
- 10 richieste PUT
- 10 richieste di CANCELLAZIONE
Ogni richiesta deve essere preceduta da "v1" -> versione 1.0.
errore-0001 -> Non trovato, 404
errore-0002 -> Richiesta errata, 400
errore-0003 -> Errore di convalida, 422
error-0004 -> Ruolo errato, 406
error-0005 -> Il libro non ha autore, categoria o genere, 406
Invia problema (richiede un account GitHub)
- PHP v.8.1.
- Laravel v.9.32 / Laravel Blade
- MySQL
- Ajax
- HTML v.5 / CSS v.3 / Tailwind CSS v.3
- JavaScript / JQuery v.3.6
- cdnjs
- Tippy.js
- Sweet Alert v.2
- Popper.js
- Font Awesome v.5.15
- Flowbite
- Mailtrap
- Algolia
- Laravel UI
- Laravel Sluggable
- Laravel Debugbar
- Laravel Telescope
- Laravel Socialite
- Laravel Backup
- Laravel IDE helper
- CKEditor
- Composer
- Tinker
- Enlightn
- Git/GitHub
- Swift Mailer
- Heroku
- Laravel Scout
- GitHub Actions / FTP Deploy
- HTML Laravel Collective v.6
- FakerPHP
- Guzzle
- Intervention Image
- ijaboCrop Tool
- Passport authentication
- Query detector
- Postman
- Swagger
- Insomnia
- GTmetrix
- Visual Studio Code
- phpMyAdmin
- Git/GitHub
- Adminer
- HeidiSQL
- XAMPP
- Honeypot
- Mailchimp integration
- reCAPTCHA
- GitHub pages
- Auto deployment on hosting
- Image Compressing
- Enlightn checks
- Dependabot
- First interaction
team nullable()