/runtime.fm

Trying out an SPA experiment with Preact and `wmr`

Primary LanguageTypeScript

Runtime FM 🎤

Single page app that powers the runtime.fm website!

Design

What started out as wireframing very quickly became quite similar to neo brutalist design.

Since then we have become quite found of this style of design and decided to continue in this direction.

Stack

The site is deployed to Vercel and the API is a PocketBase instance running on Digital Ocean.

Other tools include:

For API setup see this repo.

Pre-rendering

We make extensive use of pre-rendering. To do this effectively we have to fetch data in a suspense friendly way.

Initially we tried to do this with an off the shelf solution, unfortunately we had a number of issues (#950, #957) when doing this, a list of the solutions we tried can be found below:

Tailwind

PostCSS is currently not supported which makes Tailwind usage impossible.

Fortunately twind exists and includes an out of the box WMR integration.

Unfortunately because we are using preact/compat we are required to use className until a fix is found.

Future improvements

  • Use Zod to validate data before sending to Pocketbase.
  • Use Stork to create pre-compiled search index.
  • Use Ranger to handle volume/progress sliders.

Gotcha's

If you are experiencing issues with React types update your tsconfig.json specifically compilerOptions to include the following:

"paths": {
  "react": ["./node_modules/preact/compat/"],
  "react-dom": ["./node_modules/preact/compat/"]
}