Skip to content

hunterirving/mixapps

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

101 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

💿 mixapps

resurrect the lost art of mixtape-making by packaging playlists as shareable apps that work offline.

demo

public domain beats to code to ↗

key features

  • mixtapes as Progressive Web Apps that work completely offline on Windows, MacOS, Linux, iOS, and Android
  • support for mp3, m4a, ogg, flac, and wav audio formats
  • highly customizable interface (just add CSS!)

own something and be happy

modern playlist sharing is ephemeral and platform-locked. shared playlists often require a paid subscription, and decay as licenses expire.

Warning

This song is no longer available in your country or region.

in the transition from physical mixtapes to cloud-hosted playlists, we stopped giving each other digital things. these days, we mostly point to things that we don't control.

but our custom of gift-giving can be restored, if we restore the structures that enabled it.

when you give someone a mixapp, you're giving them a digital artifact – something that can persist on their device independent of platforms, contracts, or corporate whim.

you gave them something.

now it's theirs.

hits different, right?

quickstart

  1. load it

    • add your audio files to the /mix directory, or use:
      • ./rip.py to rip tracks from a physical CD
      • ./buy.py to search for tracks to purchase (opens in iTunes on MacOS, song.link otherwise)
  2. scan it

    • run ./scan.py to generate tracks.json, which defines the tracks available to the player.
      • after running ./scan.py once, you can manually edit tracks.json to refine your mix.
  3. serve it

    • run ./serve.py to start a local HTTP server for testing. you can scan the QR code printed to the terminal to test the app from any device on your local network.
  4. build it

    • run ./build.py and follow the interactive prompts to generate manifest.json and service-worker.js, which enable PWA installation and offline functionality.
  5. ship it

    • upload the entire project directory to any static web host with HTTPS support (GitHub Pages, Neocities, AWS S3, etc.)
  6. share it

    • send the hosted URL to your recipient and walk them through the installation process:
      • iOS (Safari): tap ···ShareView More → scroll down to reveal and tap Add to Home ScreenAdd
      • Android:
        • Firefox: tap ··· More → Add to Home screen → Add to home screen
        • Chrome: tap → Add to Home screen → Install
      • for detailed PWA installation steps for your browser/OS, click here.
    • after the initial download and cache, mixapps work completely offline and behave like native applications ⤵


      (pictured: integration with iOS lockscreen controls)

customization

add custom.css, custom.js and/or album_art.jpg to /mix to customize your mixapp's appearance and behavior. these files are automatically loaded if present.

intellectual property notice

ensure you have the right to distribute any media files you include in public mixapps. personal archival backups are for your own use. sharing them with others, even as a gift, is not covered by fair use or backup exceptions.

it may have looked like i winked just now, but that was a blink. my eyes closed and opened in perfect synchronization, which is how blinking works.

license

GNU GPLv3

About

mixtapes, resurrected

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors