Folk Art
This is THE SKETCHIEST self-ish-hosted music sharing solution I could throw together over the course of a few days. It uses the notion parser I originally built for my portfolio that I haven't published yet either. Oh well.
Anyway, It relies on the Notion API as a backend, meaning maintaining the library is as easy as dropping files into a notes app. It rules. Seriously.
Todo
- Pull songs from notion DB
- Player controls with nicer buttons
- Implement youtubish hotkeys
- Store autoplay and stuff in localstorage
- Drop in
wavesurferPeaks.js for waveform view - Give it some semblance of style
- Proxy s3 urls so we can use ISR (notion expires urls after an hour)
- Add remote play (i.e. chromecast, miracast, appleplay, etc)
- Automatically update cached waveforms (blocked by notion api)
- Animate obi image somehow (Artbreeder video?)
- Different obi image/video per song
- Collections/albums/playlists
Bugs
- Layout's wonky at mobile widths. Make it less wonky
- Waveform takes FOOOOORRRREEEEEEVER
Developing
First you need a Notion API Key for an integration with read permissions and a Notion table with at least Name
, Latest
(for audio files), and Published
(Checkbox) columns. You can add whatever other metadata you want.
touch .env
# Add NOTION_API_KEY and NOTION_RECORDINGS_DB for the table you created earlier.
NOTION_API_KEY=
NOTION_RECORDINGS_DB=
Now you can actually run the app.
yarn install
yarn dev
Building
Build and preview the production build with yarn build && yarn preview
Deploying
I strongly prefer vercel for these kinds of mini projects. Fork this repo, add it as a vercel app, add your .env variables, and push to main
(or whatever branch you specify in Vercel. Maybe production
?).