DaraDara è un'applicazione web per l'ascolto e la pubblicazione di podcast.
Il nome deriva dall'onomatopea giapponese「だらだら」che, secondo Tofugu, si usa per indicare il "rumore" che si crea quando una persona sta "parlando o spiegando qualcosa di molto poco chiaro e ci sta mettendo tantissimo tempo per farlo"
Per avviare l'applicazione è sufficente collocarsi nel percorso file opportuno e digitare i seguenti comandi sul proprio terminale
pip install -r requirements.txt
flask run
Dopodichè sarà necessario aprire una pagina web all'inidirizzo 127.0.0.1:5000
nel proprio browser preferito (Google Chrome o Firefox).
Per terminare l'applicazione basterà premere CTRL + C
ripetutamente nello stesso terminale
Eventualmente, se non si volessero installare le dipendenze pyhton contenute in requirements.txt a livello globale, prima di avviare i comandi sopra elencati, è possibile creare e attivare un python virtual enviroment con i seguenti comandi
Per macchine OSX / Linux
python3 -m venv venv
. venv/bin/activate
Per macchine Windows
python -m venv venv
. venv/Scripts/activate
per terminare il virtual enviroment è sufficiente digitate deactivate
sempre nello stesso terminale
DaraDara è ideato per funzionare sui moderni smartphone, tablet e desktop (tutti i dispositivi con almeno 375px di larghezza e 600x di altezza)
DaraDara è responsive e si adatta alle dimensoni di vari schermi grazie all'utilizzo di bootstrap
Qui sotto potete trovare elencate una serie di linee guida per utilizzare e debuggare DaraDara
Non esiste un tasto che dalla homepage rimandi direttamente alla registrazione, bisogna prima dirigersi nella pagina di login con il tasto accedi e poi premere sulla scritta rossa "Registrati!"
Ogni icona rappresentante un occhio che indica se si vuole tenere quella data sezione del profilo pubblica o privata a gli altri utenti. Se l'icona è un normale un occhio allora la data sezione è pubblica a gli altri utenti, se c'è una barra sopra l'occhio allora la sezione è privata e solo il proprietario del profilo può vederla
I 4 podcast più in voga, visualizzabili esclusivamente nella home, sono i podcast con più seguaci su DaraDara, condizione necesaria affinché un podcast possa finire in voga è di aver almeno 1 seguace e almeno 1 episodio
Note Se ci sono meno di 4 podcast con almeno 1 seguace e 1 episodio vengono visualizzati quanti se ne può
Il tasto "sorprendimi", presente nella navabar, sceglie semplicemente a caso un podcast tra i vari disponibili su DaraDara e lo mostra all'utente
Per facilitare il debug sono state aggiunte due root "nascoste" per ripulire i dati relativi a Flask-Session e Flask-Login, da utilizzare al bisogno.
- Route per ripulire le sessioni:
/clear_session
- Route per ripulire il login:
/clear_login
Si consieri che queste route non sarebbero ovviamente pubblicate in un applicazione web aperta al pubblico, sono da utilizzare solo a scopo di debugging.
In aggiunta è possibile trovare dentro la cartella data
una sottocartella chiamata backup
dove vi risiedono alcuni file utili a riprendere un backup passato del database
Vi si possono già trovare
- 1 copia di backup del database chiamata
data.db
con tutti i dati di default forniti con questo progetto senza le eventuali aggiunte che possono essere state fatte durante il debugging dell'app - 1 database vuoto chiamato
empty.db
con la stessa struttura di questo database, dov'é possibile riempirlo di dati nuovi, eventualmente con lo scriptdao_filler.py
- 1 script python chiamato
dao_filler.py
che attraverso il DAO aggiunge i dati di base forniti con questo progetto
Si consideri che l'app è progettata per avere un minimo di serie ed episodi e non per essere completamente vuota.
DaraDara è già fornito di alcuni dati di esempio per fornire un esperienza utente basilare per testare tutte le feature messe a disposizione e richieste dal tema d'esame
In DaraDara ci sono già 6 utenti: 2 ascoltatori e 4 creatori
Ogni utente è identificato da un indirizzo email e il suo account è protetto da una password
Note Per motivi di debugging gli utenti forniti di default non rispettano gli standard di sicurezza di DaraDara in materia di password, ovvero le loro password sono lunghe meno di 8 caratteri e contengono solo lettere minuscole. Tuttavia questo non significa che un nuovo utente non debba rispettare questi standard, infatti ogni nuovo utente, come si potrà notare nella UI, deve rispettare una serie di regole in fase di registrazione per quanto riguarda la complessità della password
- John Doe (email:
john.doe@email.com
password:john
) - Jane Smith (email:
jane.smith@email.com
password:jane
) - Robert Johnson (email:
robert.johnson@email.com
password:robert
) - Michael Brown (email:
michael.brown@email.com
password:michael
)
- Emily Williams (email:
emily.williams@email.com
password:emily
) - Massimiliano Carli (email:
admin@daradara.it
password:admin
)
In DaraDara ci sono già 6 serie, solo Soccer e Basketball dispongono già di alcuni episodi, le altre non hanno nessun episodio
Alcuni utenti già seguono alcune serie, altri ancora hanno già salvato degli episodi. Queste informazioni sono facilmente reperibili del database data.db dentro la cartella data, nelle tabelle saves e follows
- Soccer (di John)
- Baseball (di John)
- Golf (di John)
- Football (di Robert)
- Basketball (di Jane)
- Tennis (di Michael)
DaraDara è stato scritto utilizzando i seguenti linguaggi:
- HTML
- CSS
- JavaScript
- Python (server-side)
DaraDara è stato inoltre creato utilizzando varie librerie e risorse esterne, tutte elencate qui sotto:
- Flask (Flask-Login e Flask-Session) abbinato con Jinja per servire la pagine web
- Bootstrap per standardizzare e rendere più intuitiva e responsive la UI
- SQLite per salvare i dati in maniera permanente
- Googlefonts e Fontawesome per font e icone utilizzate nell'applicazione
- La collezione di immagini TechLife di Karthik Srinivas per rendere la UI più gradevole
- Il sito di design Canva per sviluppare il logo visibile nella barra di navigazione e come .ico nella scheda del browser
- I siti Pexels e FreeMusicArchive per reperire le immagini e gli audio già presenti nell'applicazione
- Le librerie python Dateutil e Pillow per gestire le date e la modifica delle immagini server-side
- La libreria javascript Dayjs per gestire le date client-side