Git Product home page Git Product logo

bookreads's Introduction

Bookreads dejó de funcionar debido al cierre de Bookdepository 😢

Bookreads Project

Scrap Bookdepository Deploy API

API (En desarollo) | WEB (En desarollo)

Mockup API Web

Descripción y por qué del proyecto

El proyecto Bookreads es un monorepo que contiene un Scrapper, una API y una página web. El scrapper obtiene información de libros de la página web Bookdepository y la API distribuída en Cloudflare la devuelve en formato JSON. La página web muestra los libros obtenidos de la API con un sistema de reseñas y en un futuro análisis de los datos obtenidos a lo largo del tiempo respecto a los libros más vendidos, los más valorados, etc.

La idea del proyecto nace al ver el proyecto de la Kings League Infojobs) de Midudev y querer hacer algo parecido pero con libros. Además, me gustaría añadir data analysis a los datos obtenidos a lo largo del tiempo.

Tecnologías usadas

API y Scrapper

Para la API uso Web Scraping con Node.js y Cheerio.js, los datos son extraídos repitiendo este script mediante Github Actions programadas en Crontab (ver el fichero .github/workflows) y se almacenan en un fichero JSON (ver fichero db). Al instante que se actualiza la información, se despliega la API en Cloudflare Workers (ver fichero wrangler.toml y api/index.js). La API está desarrollada con Node.js y Hono.

¿Por qué Cloudflare Workers? Porque es un servicio de hosting de APIs gratuito y muy fácil de usar. Además la API se distribuye en puntos alrededor de todo el mundo y esto permite latencias mínimas en todos los países.

¿Por qué no usar una base de datos (como MongoDB)? Aunque no lo descarto a futuro, los datos que manejo son muy pequeños y no necesito una base de datos para almacenarlos. Además, el uso de un fichero JSON me permite tener un control total sobre los datos y no depender de un servicio externo. También recordemos que son datos públicos extraídos de una página web, no es información sensible.

Página web

La página web está desarrollada con el framework Astro para probarlo y, además, aprovechar que es muchísimo más rápido que otros Frameworks o tecnologías como Next.js o React. Para la estilización uso Tailwind para mantener un estilo conciso y no escribir CSS.

API

Dirección de la API: https://api.bookreads.dev/

Para el proyecto se compró un dominio personalizado en Porkbun (https://bookreads.dev/) y se usa el subdominio api para la API.

Endpoints: CONTINUA EN DESARROLLO

  • GET /bestsellers: Devuelve un json con objetos de key fechas y value los bestsellers de esa fecha en Bookdepository.
  • GET /bestsellers/:date: Devuelve los bestsellers de ese día en Bookdepository.
  • GET /bestsellersSpanish: Devuelve un json con objetos de key fechas y value los bestsellers en español de esa fecha en Bookdepository.
  • GET /bestsellersSpanish/:date: Devuelve los bestsellers de ese día en Bookdepository.
  • GET /bestsellersManga: Devuelve un json con objetos de key fechas y value los bestsellers de manga en esa fecha en Bookdepository.
  • GET /bestsellersManga/:date: Devuelve los bestsellers de manga de ese día en Bookdepository.

To-do

  • Scrappear más datos de Bookdepository
  • Scrappear datos de Cúspide
  • Añadir más endpoints a la API
  • Añadir responsive design a la página web
  • Añadir análisis de datos a la página web
  • Añadir sistema de reseñas a la página web
  • Añadir sistema de login a la página web

bookreads's People

Contributors

jortohme avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.