All Projects → justinribeiro → Blog Pwa

justinribeiro / Blog Pwa

Licence: apache-2.0
An experiment in mixing Hugo, lit-element, and Polymer PRPL into a progressive web app blog.

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Blog Pwa

Vue Wordpress Pwa
An offline-first SPA using Vue.js, the WordPress REST API and Progressive Web Apps
Stars: ✭ 665 (+1521.95%)
Mutual labels:  pwa, progressive-web-app
Hugo Theme Terminal
A simple, retro theme for Hugo
Stars: ✭ 832 (+1929.27%)
Mutual labels:  blog, hugo
Hugo Tranquilpeak Theme
A gorgeous responsive theme for Hugo blog framework
Stars: ✭ 686 (+1573.17%)
Mutual labels:  blog, hugo
Hugo Theme Hello Friend
Pretty basic theme for Hugo that covers all of the essentials. All you have to do is start typing!
Stars: ✭ 586 (+1329.27%)
Mutual labels:  blog, hugo
Fuel Price
⛽ Check fuel prices daily in most of the states in India
Stars: ✭ 20 (-51.22%)
Mutual labels:  pwa, progressive-web-app
Ox Hugo
A carefully crafted Org exporter back-end for Hugo
Stars: ✭ 591 (+1341.46%)
Mutual labels:  blog, hugo
Hellobooks
A Single-Page Library Management App built with nodejs, express and react and redux
Stars: ✭ 37 (-9.76%)
Mutual labels:  pwa, progressive-web-app
Awesome Meta And Manifest
⚡ Awesome collection of meta tags & manifest properties.
Stars: ✭ 499 (+1117.07%)
Mutual labels:  pwa, progressive-web-app
Yesplaymusic
高颜值的第三方网易云播放器,支持 Windows / macOS / Linux
Stars: ✭ 12,981 (+31560.98%)
Mutual labels:  pwa, progressive-web-app
Dominhhai.github.io
My Blog
Stars: ✭ 8 (-80.49%)
Mutual labels:  blog, hugo
React Progressive Web App
An opinionated React based repository which is optimized for Progressive Web App development.
Stars: ✭ 548 (+1236.59%)
Mutual labels:  pwa, progressive-web-app
Alumna
[Alpha release of v3] Development platform for humans / Plataforma de desenvolvimento para humanos
Stars: ✭ 32 (-21.95%)
Mutual labels:  pwa, progressive-web-app
Hugo Paper
🥛 A simple, clean, flexible Hugo theme
Stars: ✭ 538 (+1212.2%)
Mutual labels:  blog, hugo
Ionic Pwa Toolkit
Build lightning fast Progressive Web Apps with zero config and best practices built-in. Go from zero to production ready with Ionic and Stencil (Web Components).
Stars: ✭ 629 (+1434.15%)
Mutual labels:  web-components, pwa
Upup
✈️ Easily create sites that work offline as well as online
Stars: ✭ 4,777 (+11551.22%)
Mutual labels:  pwa, progressive-web-app
Demo Progressive Web App
🎉 A demo for progressive web application with features like offline, push notifications, background sync etc,
Stars: ✭ 798 (+1846.34%)
Mutual labels:  pwa, progressive-web-app
Offline Plugin
Offline plugin (ServiceWorker, AppCache) for webpack (https://webpack.js.org/)
Stars: ✭ 4,444 (+10739.02%)
Mutual labels:  pwa, progressive-web-app
Angular Shoppingcart
ShoppingCart (Ecommerce) 🛒 Application using Angular10, Firebase, PWA, Drag&Drop, Materialized Bootstrap and i18n 🚀🔥👨‍💻
Stars: ✭ 483 (+1078.05%)
Mutual labels:  pwa, progressive-web-app
Gdg.es
The GDG Spain official website
Stars: ✭ 16 (-60.98%)
Mutual labels:  web-components, pwa
Slidecontrol
Slidecontrol enables you to control your slides with your phone 📱
Stars: ✭ 30 (-26.83%)
Mutual labels:  pwa, progressive-web-app

blog-pwa

What started as an experiment in mixing Hugo, Polymer, and the PRPL pattern to build a progressive web app blog that turned into my actual blog.

Features

  • It's a progressive web app with all the fixin's (service worker, PRPL pattern, H2, et cetera)
  • The base PWA component and it's bundle weight just 17.1KB gzip'ed.
  • Renders if there is no JavaScript via <noscript> injected fallback to static generation
  • Renders metadata to linkbots when sharing without the need for client JavaScript via server side detection and alternative render path

The basics

  • lit-element app shell and web components
  • Hugo to manage posts and metadata
  • workbox for generating precache and runtime caching service worker
  • rollup for component bundles and splitting for our PRPL loading
  • h2-push via http2push-gae for Google App Engine for serving
  • Polyfills only load on need; no extra bytes shipped (including for dynamic imports).

The not-so-basics

I wrote a couple zsh utility scripts to power most of the shuffle and build of the site. Why not an npm script or a gulp or grunt task you ask? Frankly, because I just felt like writing some shell scripts. Don't you want to sometimes just write some shell scripts? Is that just me?

The gist of the tools employed and their uses include.

  • sed is amazing and helps wrangle some of the JSON output from Hugo (years of old posts + multiple times moved = fun!)
  • zmv is the thing you've probably never heard of about but might want to try. Renames files fast to proper type (Hugo won't output pure JSON at moment)
  • jq is blazing fast over lots of files; validates my json output so I know things will load in the PWA and Python
  • polymer-cli handles the dev serving
  • workbox-cli handles the service worker generation
  • rollup-cli handles the es modules and bundles splitting for prod builds
  • http2-push-manifest is super useful and works out of the box with http2push-gae
  • make has a basic set of commands that alias the zsh script for easy use
  • Okay, so there is app/package.json with prettier linting and some build commands in the yarn for rollup and what not. It's mix and match. :-)

Setup

➜ git clone [email protected]:justinribeiro/blog-pwa.git
➜ cd blog-pwa
➜ chmod +x utilities/builder.zsh

# check for tooling
➜ make setup

# run dev env
➜ make dev

# run GAE deploy silently
➜ make deploy-no-promote

By the web perf numbers

A progressive web app is only as good as the web performance it offers. I mean, who wants to sit around waiting 10 seconds for a blog post to initially load? No one.

Pulling up a trusty Moto G4 on 3G over on WebPageTest, we can see just how fast we are:

image

Just want the traces and the raw numbers? Check out the results on WebPageTest.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].