Offline-First with Node.js and Hoodie: A Practical Introduction to Progressive Web Apps