CODITEC SITE
Sito del comitato CODITEC
Questo progetto è un sito web sviluppato con Vite e React. Fornisce la possibilità di visualizzare gli eventi corsi e altre info del comitato CODITEC.
- React - Libreria JavaScript per la creazione di interfacce utente
- Vite - Bundler per un'ottima esperienza di sviluppo
- TypeScript - Linguaggio che migliora la produttività aggiungendo il typing a JavaScript
- Bootstrap 5 - Framework CSS per uno sviluppo front-end veloce e responsive
- [Chi siamo] (informazioni generali su CODITEC)
- [Corsi] (informazioni su corsi passati e futuri)
- [Mentors] (informazioni sullo staff di CODITEC)
- [Eventi] (Eventi futuri organizzati da CODITEC)
- [Gallery] (Gallerio d'immagini tipo PINTERES)
- [Contatti] (Informazioni su come contattarci)
- Node.js v20.11.0
- npm 10.4.0
Segui questi passaggi per installare e avviare il progetto in locale.
-
Eseguire
npm installper scaricare i pacchetti -
Eseguire
npm run devper eseguire app in locale
-
Eseguire
npm install -g serveInstalla serve globalmente (solo la prima volta se non avete serve installato) -
Eseguire
npm run buildper buildare il porogetto -
Eseguire
serve -s distper buieseguire il progetto buildato
Nella pipeline viene eseguita npm run build:production perchè bisogna caricare una variabile d'ambiente
VITE_PUBLIC_URL diversa per gestire le immagine di un progetto buildato su github.
Nello specifico la variabile VITE_PUBLIC_URL vale:
- '/' nella modalita development (build locale)
- '/coditec/' nella modalita production
- Eseguire
npm run commitselezionado
- Are there any breaking changes?
rispondere NO - Does this change affect any open issues?
rispondere YES
Il sito gestisce i contenuti attraverso file JSON situati nella cartella data. Ogni file JSON rappresenta una pagina o una sezione del sito, e le modifiche ai contenuti si riflettono direttamente nelle pagine senza dover modificare il codice.
Per aggiungere, modificare o eliminare contenuti del sito, è necessario aggiornare i file JSON corrispondenti all'interno della cartella data. Ogni JSON contiene i dati relativi a una specifica pagina o sezione del sito.
La cartella data contiene i file JSON organizzati come segue:
- home.json: Contiene i dati per la pagina principale (home page).
- courses.json: Contiene le informazioni sui corsi offerti.
- trainers.json: Contiene i dettagli relativi ai trainers.
Altri file JSON corrispondenti ad altre sezioni del sito.
La home page utilizza i dati presenti nel file home.json, ma attinge anche da altri file JSON come
courses.json e trainers.json per mostrare informazioni aggiuntive, come i corsi e i trainers nella sezione principale.
- Aggiungere nuovi dati: Basta aggiungere un nuovo oggetto all'interno del file JSON corrispondente. Attenzione agli oggetti con il campo id non create id UNIVOCI
- Modificare i dati esistenti: Trova l'oggetto da modificare nel file JSON e aggiorna i campi necessari.
- Eliminare dati: Rimuovi l'oggetto corrispondente dal file JSON.
Tutte le immagini utilizzate nel sito sono memorizzate sotto la cartella public/assets/img.
La struttura delle immagini è organizzata per pagina, facilitando la gestione e l'aggiornamento.
- public/assets/img/: Cartella principale per tutte le immagini.
- courses/: Cartella contenente le immagini relative alla sezione corsi.
- trainers/: Cartella contenente le immagini dei trainers.
- Altre cartelle: Per altre pagine o sezioni del sito, create cartelle con nomi appropriati.
Inserisci le nuove immagini nella cartella corrispondente sotto public/assets/img. Ad esempio, per aggiungere un'immagine alla pagina courses, salvala nella cartella courses/.
E utilizzatela poi nel json data courses.ts
Se devi aggiornare un'immagine esistente, sostituisci il file con una versione aggiornata mantenendo lo stesso nome e percorso. In caso contrario, aggiorna i riferimenti alle immagini nei file JSON o nel codice sorgente se necessario.
Rimuovi il file dalla cartella corrispondente sotto public/assets/img. Assicurati di aggiornare anche i riferimenti alle immagini nel sito per evitare errori di visualizzazione.
- Verifica sempre che l'immagine sia posizionata nella cartella corretta per garantire che venga visualizzata correttamente nelle pagine del sito.
- Assicurati che il nome del file e l'estensione siano corretti e che i riferimenti alle immagini nel sito siano aggiornati.
Se le immagini nella cartella public/assets/img/gallery non sono numerate in modo coerente, puoi usare lo script fornito per rinominarle automaticamente. Lo script è sicuro: esegue prima una simulazione (dry-run) per mostrare le modifiche senza applicarle.
-
Posizionati nella root del progetto (es.
D:/CD/SITO/coditec). -
(Opzionale ma consigliato) Crea un backup della cartella gallery prima di procedere:
cp -r public/assets/img/gallery public/assets/img/gallery_backup_$(date +%Y%m%d_%H%M%S)- Esegui lo script (da root):
npm run rename-imagesoppure lancia direttamente lo script:
sh ./sh/rename_gallery_images.sh
# oppure (se preferisci eseguire con bash):
./sh/rename_gallery_sequential.sh- Interazioni durante l'esecuzione:
- Lo script chiede prima conferma:
Vuoi procedere con la rinomina? (y/N)— rispondiyper procedere. - Poi chiede se vuoi fare prima una simulazione (dry-run):
Vuoi fare prima una simulazione (dry-run)? (Y/n).- Premendo Invio (o rispondendo
Y) eseguirai solo la simulazione: vedrai tutte le modifiche proposte ma i file non verranno toccati. - Rispondendo
nla rinomina verrà applicata realmente.
- Premendo Invio (o rispondendo
- Regola di padding (come vengono nominati i file):
- Lo script applica un padding automatico in base al numero totale di immagini:
- Se sono meno di 10:
1.jpg,2.jpg, ... (width = 1) - Se sono tra 10 e 99:
01.jpg,02.jpg, ... (width = 2) - Se sono tra 100 e 999:
001.jpg,002.jpg, ... (width = 3)
- Se sono meno di 10:
- Questa stessa regola è usata anche dalla funzione
createImagesArrayinsrc/utils/utils.ts.
- Nota sulla sicurezza:
- Lo script usa una directory temporanea per evitare collisioni durante la rinomina.
- Esegui sempre prima la simulazione (dry-run) per verificare l'output.
s### Note Importanti
- Verifica il percorso: Assicurati che imageDirectory punti alla cartella corretta dove sono memorizzate le immagini.
- Assicurati che tutte le immagini necessarie siano presenti e numerate correttamente.
Per gestire il deploy FTP del progetto su un server Aruba, è necessario configurare alcune variabili in GitHub Actions. Queste variabili consentono di stabilire la connessione al server FTP.
Nella sezione Actions secrets and variables di GitHub, assicurati di configurare le seguenti variabili segrete (il valore non sarà visibile):
- FTP_SERVER: Indirizzo del server FTP.
- FTP_USERNAME: Nome utente per l'accesso FTP.
- FTP_PASSWORD: Password per l'accesso FTP.
Inoltre, è disponibile una variabile d'ambiente chiamata ENABLE_FTP_DEPLOY. Il suo valore predefinito è false. Se desideri abilitare il deploy FTP su Aruba, imposta questa variabile su true. Se non è valorizzata o è impostata su false, il processo di deploy FTP sarà saltato.
Una volta modificata la variabile d'ambinete ENABLE_FTP_DEPLOY a true fare un commie e push su main.
|src
│ ├── App.css
│ ├── App.tsx
│ ├── assets
│ │ ├── css
│ │ │ ├── custom.css # style custom
│ │ │ ├── gallery.css # style gallery
│ │ │ ├── main.css # style theme principale
│ │ │ ├── modal.css # style modale gallery
│ │ ├── vendor
│ │ │ ├── bootstrap # pacchetto esterno
│ │ │ ├── bootstrap-icons # pacchetto esterno
│ ├── components
│ │ ├── About
│ │ │ ├── Testimonials.tsx
│ │ ├── Common
│ │ │ ├── About.tsx
│ │ │ ├── Counts.tsx
│ │ │ ├── Courses.tsx
│ │ │ ├── PageTitle.tsx
│ │ ├── Courses
│ │ │ ├── Filters.tsx
│ │ ├── Footer.tsx
│ │ ├── Footer_canc.tsx
│ │ ├── Gallery
│ │ │ ├── GalleryItems.tsx
│ │ │ ├── GalleryModal.tsx
│ │ ├── Header.tsx
│ │ ├── Home
│ │ │ ├── Features.tsx
│ │ │ ├── Hero.tsx
│ │ │ ├── TrainersIndex.tsx
│ │ │ ├── WhyUs.tsx
│ │ ├── Widget
│ │ │ ├── GoogleTranslate.tsx
│ ├── context
│ │ ├── AboutTypes.ts
│ │ ├── AppContext.tsx # gestione del contesto del sito
│ │ ├── Contact.ts
│ │ ├── CourseTypes.ts
│ │ ├── EventType.ts
│ │ ├── GalleryTypes.ts
│ │ ├── HomeType.ts
│ │ ├── TrainerType.ts
│ │ ├── Type.ts
│ │ ├── UiTypes.ts
│ ├── data # data contiene tutti i json coi contenuti da visualizzare
│ │ ├── about.ts # dati per la pagina a about (chi siamo)
│ │ ├── contact.ts # dati per la pagina a contact (contatti)
│ │ ├── course.ts # dati per la pagina a course (corsi)
│ │ ├── events.ts # dati per la pagina a events (eventi)
│ │ ├── footer.ts # dati per il footer
│ │ ├── gallery.ts # dati per la pagina a gallery (galleria)
│ │ ├── home.ts # dati per la pagina home la home mostra idati anche da altre sezioni
│ │ ├── manageui.ts # dati per la gestione dell'interfaccia
│ │ ├── trainers.ts # dati per la gestione dei trainers (mentors)
│ ├── pages
│ │ ├── About.tsx # pagina about (chi siamo)
│ │ ├── Contact.tsx # pagina contact (contatti)
│ │ ├── CourseDetail.tsx # pagina dettaglio di un corso se il corso prevede un dettaglio
│ │ ├── Courses.tsx # pagina courses (corsi)
│ │ ├── Events.tsx # pagina events (eventi)
│ │ ├── Gallery.tsx # pagina gallery (galleria)
│ │ ├── Home.tsx # pagina home
│ │ ├── Trainers.tsx # pagina trainers (mentors)
│ ├── route
│ │ ├── AppRoutes.tsx # gestione delle rotte del sito
│ ├── utils
│ │ ├── utils.ts # utility varie
