All Projects → vnglst → peter-and-the-wolf

vnglst / peter-and-the-wolf

Licence: MIT License
Peter and the Wolf (Progressive Web App)

Programming Languages

javascript
184084 projects - #8 most used programming language
CSS
56736 projects
HTML
75241 projects

Projects that are alternatives of or similar to peter-and-the-wolf

TimeTableManager
Simple react application to create a TimeTable based only on your choice of subjects.
Stars: ✭ 30 (-3.23%)
Mutual labels:  progressive-web-app
tune
Make xenharmonic music and create synthesizer tuning files for microtonal scales.
Stars: ✭ 73 (+135.48%)
Mutual labels:  sound-effects
Research
Repo for my blog & technology research
Stars: ✭ 43 (+38.71%)
Mutual labels:  progressive-web-app
create-next-pwa
⚡️ Set up Next.js Progressive Web App with `npx create-next-pwa`
Stars: ✭ 59 (+90.32%)
Mutual labels:  progressive-web-app
schsrch
Simple and intuitive CIE search engine
Stars: ✭ 35 (+12.9%)
Mutual labels:  progressive-web-app
entropass
Maximum-security password manager
Stars: ✭ 21 (-32.26%)
Mutual labels:  progressive-web-app
X-Piano
Now you can make your own piano!
Stars: ✭ 13 (-58.06%)
Mutual labels:  sound-effects
sounds-of-github
This is a Chrome extension to play sound effects whenever you leave a reaction on GitHub.
Stars: ✭ 72 (+132.26%)
Mutual labels:  sound-effects
pwa-angular4
A progressive webapp with Angular 4 (PLEASE NOTE: angular 5 support PWA )
Stars: ✭ 13 (-58.06%)
Mutual labels:  progressive-web-app
sfxr-qt
Qt port of SFXR, a sound effect generator, to generate retro-gaming like sound effects.
Stars: ✭ 54 (+74.19%)
Mutual labels:  sound-effects
eureka
HTML-first crack at a Flexible Media Browser progressively enhanced with React
Stars: ✭ 18 (-41.94%)
Mutual labels:  progressive-web-app
react-redux-nextjs-bootstrap-pwa-starter
a progressive web app starter with next js redux + redux-persist + bootstrap
Stars: ✭ 69 (+122.58%)
Mutual labels:  progressive-web-app
battery-status-progressive-web-app
Progressive Web App (PWA) https://irekrog.github.io/battery-status-progressive-web-app/
Stars: ✭ 17 (-45.16%)
Mutual labels:  progressive-web-app
gatsby-pwa-demo
PWA Example: Progressive Web App E-Commerce with Gatsby.js
Stars: ✭ 68 (+119.35%)
Mutual labels:  progressive-web-app
purescript-workers
An API wrapper around Web Workers (Dedicated, Shared and Service)
Stars: ✭ 24 (-22.58%)
Mutual labels:  progressive-web-app
figaro
Real-time voice-changer for voice-chat, etc. Will support many different voice-filters and features in the future. 🎵
Stars: ✭ 362 (+1067.74%)
Mutual labels:  sound-effects
jsfxr
JavaScript sound effects generator.
Stars: ✭ 120 (+287.1%)
Mutual labels:  sound-effects
FlipED
A LMS built specifically for Thailand's Education 4.0 system.
Stars: ✭ 24 (-22.58%)
Mutual labels:  progressive-web-app
react-app-rewire-workbox
Customise the service worker for create-react-app apps without ejecting - using Google's Workbox webpack plugins instead of the old sw-precache
Stars: ✭ 44 (+41.94%)
Mutual labels:  progressive-web-app
choo-pwa
PWA with Choo
Stars: ✭ 18 (-41.94%)
Mutual labels:  progressive-web-app

Peter and the Wolf PWA

My second attempt at a Progressive Web App (with Safari iOS in mind). The idea was to create an audio player, with some fun sound buttons around Prokofiev's symphonic fairy tale for children "Peter and the Wolf". The app was to be kids friendly, fun to use and also introduce kids to the story and music of Prokofiev. The result can be found here:

screenshot app

https://peter-and-the-wolf.netlify.com

It turned out that making large audio files available offline using Service Workers was more challenging than I expected. My initial thought was to download all the audio on registration of the service worker. But that lead to several problems: service worker registration could fail if downloads hadn't fully completed, but also bad performance of the app at startup. And that was on Chrome, I don't even want to go into Safari on iOS. In the end I think the combination of web audio (with all it's workarounds) and service workers, is not a happy one.

My current implementation of the service workers loads and caches all the app shell files (js, css, html, etc.) on startup. The mp3's are cached when those are requested by the app. This works pretty well for the short sound files, but not for the large audio file. That one only works when an internet connection is available and the audio can be streamed. Maybe I will come back to this app and topic sometime in the future.

Under the hood

  • howler.js - audio (especially the old audio web element) is still full of unpleasant suprises. Especially on Safari. At first I tried to work around all those myself, but I should have started a library much earlier. Howler seems to work pretty well.
  • material-ui-icon - I really wish treeshaking would be better supported. Now I'm stuck with all of @material-ui/core even though I'm only using four svg icons. I will extract those latter to optimize the build size. Inlined all svg's
  • For the Service Workers I'm using the webpack plugin sw-precache-webpack-plugin, which is a Webpack wrapper around the standard sw-precache plugin. I switched to workbox-webpack-plugin, which works more or less the same, but offers a lot more flexibility and also has better documentation.
  • And the standard libraries like React, webpack, babel, etc.
  • Hosted on netlify.com, also using their domain registration service 😍😍😍

PWA tips

Credits

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].