
Questo è stato il mio primo progetto in Nest.js, realizzato per imparare ad utilizzare il framework. Ho implementato un endpoint che riceve un URL da analizzare e restituisce una serie di statistiche sul contenuto della pagina web, come il numero di parole totali, gli spazi e le parole più usate.
Ho iniziato creando un progetto da zero con il boilerplate di Nest.js e osservato come funzionava l'Hello World. Successivamente, ho sviluppato un modulo per lo scraper, integrandolo nel modulo principale e aggiungendo test per verificarne il funzionamento.
Infine, ho creato un Dockerfile per eseguire l'intero progetto all'interno di un container, facilitando così la distribuzione e l'esecuzione su diverse piattaforme.
Esegui questi comandi nella cartella della repo:
docker build -t nest-web-scraper .
Oppure puoi pullare la dockerimage già pronta senza nemmeno scaricare la repo:
docker pull vikappa/vincenzocostantininestwebscraper
Quindi fai partire il container:
docker run -p XXXX:3000 nest-web-scraper
(sostituisci XXXX con la porta su cui vuoi esporre il container)
A questo punto il container è pronto è dovresti poter visualizzare il container dal client DockerDesktop o digitando in console il comando:
docker ps
Esegui questi comandi nella cartella della repo:
nest run build
nest start
A questo punto dovresti poter inviare una richiesta POST all'endpoint /scrape con un body come questo:
{ "urlToScrape": "https://it.wikipedia.org/wiki/Cyberpunk_2077" }
Attenzione! Per favore, non usare URL di siti come YouTube o Facebook perchè contengono sistemi anti scraping che mandano in errore il sistema.
Per usare l'applicazione senza dover installare Docker o Node.js, ho creato un front-end user-ready. Questo front-end è stato sviluppato utilizzando React e TypeScript. L'applicazione back end è stata hostata su Koyeb, mentre il front-end è stato distribuito su Vercel.