Story time
Too much time was spent trying to get Next.js to build the app
as a PWA. Maybe I've been trying to do this at an unlucky time
when something somewhere in the dependency stack leading up to
next-pwa is only temporarily broken.
At this point enough hours have been spent thorough the project
getting this or that and that to play nice with Next.js, and the
benefits to this project were at best questionable.
When next-pwa didn't deliver a PWA experience with the promised
"zero configuration" setup, and even failed to do so with a lot
of fiddling around and following several issue discussions in
its repo I thought back at all the other nuisances stemming from
trying to get Next.js to play nice in the app's context and
decided it was time for it to go.
Writing this frankenstein of a commit that forces the project
from its Next.js structure into more-or-less the structure of a
vanilla create-react-app project felt like a breeze compared to
any more time spent reading github issues lingering unanswered
or bumping into Stack Overflow threads from a time when none
of the answers are right any longer. Some top answers in Stack
Overflow don't even look like they were ever right.
I don't like the big component switch that I wrote to replace
the seemingly elegant app routing from Next.js. The new app
routing I wrote is a kludge designed to minimize the amount of
code fixes I'd need to do when it came to navigation, but I am
glad to no longer parse numbers out of URLs, put dynamic() calls
in nearly every page, use wrapper Link and Image components so
Next.js can do some magic and a few other problems that right
now I forget. I also appreciate the smaller bundle.
This isn't some content publishing app, full of meaningful URLs
to be shared over the net with other users. There's really only
the skeleton of the app with a few very simple views to navigate
to and then there's the local data generated by the user that the
app just hosts locally.
The choice for pulling HTML data instead of Wiki markup from
Wiktionary was made because the markup content would have
required a lot of code to expand the template data into user
readable content.
Move some business logic out of the page components. They are now
responsible for just filtering out the unsuccessful render paths
and selecting between an error view or a success view passing the
successfully fetched data.
A lingering problem exists where the content is allowed to expand
indefinitely vertically. This might be an issue with the stacks of
flex elements near the root of the DOM.
Since the value fixing this is still uncertain I'll leave as it is
for now.