I did some serious work on that PWA project today and I'm really happy that it's all working nicely now.
I ended up going with a network-first approach because we're on Chromebooks. More often than not, students will have an internet connection. That first load will re-cache all the assets. At home, if they launch, it should pop the cached index page and then load the project from localStorage as if nothing happened.
I need to do more testing, but I think it's about there.