Coder Social home page Coder Social logo

vhscom / lumpen-radio Goto Github PK

View Code? Open in Web Editor NEW
0.0 2.0 0.0 3.62 MB

Mirror of Lumpen Radio on Codeberg. πŸ“» React Native app for WLPN 105.5 FM Lumpen Radio Chicago

Home Page: https://codeberg.org/vhs/lumpen-radio

License: BSD 3-Clause "New" or "Revised" License

Ruby 0.40% Objective-C 47.80% Java 6.93% Swift 2.34% C 1.02% JavaScript 41.52%
javascript react-native objective-c cocoapods

lumpen-radio's Introduction

WLPN 105.5 FM Lumpen Radio Chicago

Never listen to a radio commercial again. The free Lumpen Radio app is here!

Lumpen Radio

And StreamingKit reverse proxy...

Skipr

About

Features

  • Streams any audio/mpeg stream listed in Constants.h
  • Includes reverse proxy to update stream without app rebuild
  • Background audio playback and lock screen integration
  • Gorgeous video loop with AirPlay support
  • Intelligent handling of common audio interruptions
  • Detailed connection status and play state messaging
  • Translations for English, Spanish, Chinese, Korean and German
  • Remote control via Bluetooth and compatible headset
  • Supports iPad and iPhone with iOS 8+

Installation

Get the latest version from Apple. Download it from the App Store now.

Usage

  • Tapping radio button starts and stops the audio
  • Long-pressing the radio button restarts the audio
  • If the app crashes for any reason please close and reopen it

Development

Looking to build your own React Native project with ES6/7? Check out my React Native Starter Kit. Otherwise proceed enthusiastically.

  1. Clone this project.

  2. Install dependencies.

    npm install
    pod install
  3. Run npm start to start the Webpack watcher, Webpack Dev Server and the React Packager in a single shot.

    Note: The Webpack watcher builds the index.[platform].js file expected by React Native.

  4. Open WLPN.xcworkspace in XCode and run the project.

Bundling for distribution

  1. Execute npm run bundle to generate the offline JS bundle.
  2. For iOS, update AppDelegate.m to load from pre-bundled file on disk.
  3. Test the application, create an archive and submit to the store.

Learn more about Submitting to App Store.

File structure

β”œβ”€β”€ android                     # Source code for Android
β”œβ”€β”€ iOS                         # Source code for iOS
β”‚   β”œβ”€β”€ Classes                 # Objective-C, Swift classes
β”‚   β”‚   β”œβ”€β”€ AppDelegate         # Application initialization and React Native config
β”‚   β”‚   β”œβ”€β”€ AudioManager        # Lib to access platform APIs and bridge to JS
β”‚   β”‚   └── RootViewController  # RCTRootViewController override to manage Remote Control events
β”‚   β”œβ”€β”€ Images.xcassets         # Launch screens and native image assets
β”‚   β”œβ”€β”€ Resources               # Other native resources
β”‚   β”œβ”€β”€ Constants.h             # Native globals
β”‚   β”œβ”€β”€ Info.plist              # Project configuration
β”‚   β”œβ”€β”€ main.jsbundle           # React Native placeholder file
β”‚   └── main.m                  # Application entry point
β”œβ”€β”€ packages/skipr              # StreamingKit Reverse Proxy (AGPLv3)
β”œβ”€β”€ src                         # Source code
β”‚   β”œβ”€β”€ assets                  # Static resources
β”‚   β”‚   └── videos              # Video assets
β”‚   β”œβ”€β”€ components              # React Native Components
β”‚   β”œβ”€β”€ lib                     # JS libraries
β”‚   β”œβ”€β”€ stores                  # JS persistence with Flux
β”‚   β”œβ”€β”€ actions.es6             # Flux actions
β”‚   β”œβ”€β”€ main.es6                # JS application entry point
β”‚   └── styles.es6              # React Native Style Rules
β”œβ”€β”€ .flowconfig                 # Facebook flow config file
β”œβ”€β”€ .gitignore                  # VCS blacklist
β”œβ”€β”€ Podfile                     # CocoaPods dependency specs
β”œβ”€β”€ Podfile.lock                # Native dependency lock file
β”œβ”€β”€ WLPN-Bridging-Header.h      # Objective-C, Swift bridge support file
β”œβ”€β”€ ignored-modules.js          # RegExp containing modules ignored by watcher
β”œβ”€β”€ npm-shrinkwrap.js           # JS dependency lock file
β”œβ”€β”€ package.json                # NPM dependency specs
β”œβ”€β”€ webpack-watch.js            # Filesystem watcher for JS
└── webpack-config.js           # WebPack configuration

Diagram created using tree written by Steve Baker and contributors.

Todo

Ideas

  • Long-press opens modal with stream restart
  • Long-pauses restart stream or select target
  • Show playing metadata from stream headers
  • Stop background animation with disconnect

Known issues

  • Stream stops playing after a 20s phone call
  • Stream buffer timeout on connection restart

Credits

Designed and developed by VHS.

Splash screen and vectors by Jermiah Chiu.
App interface and icon by VHS.

Turntable loop video by Scott Schiller, BSD and used with permission.
Inspired by open source work by Steffen TrΓΆster.

Many thanks to Public Media Institute, Lumpen Radio and all the wonderful beta testers for helping make this happen. You are beautiful.

  • Ed Marszewski
  • Logan Bay
  • Eric Olson
  • Wayne Wright
  • Elizabeth Rossman
  • Joseph Alfallah
  • Harrison Jones
  • Nick Hausman

Rights

Source code dual-licensed under MIT (Xcode 7, Swift 2) or BSD (Xcode 11, Swift 5). StreamingKit reverse proxy available under AGPLv3 and kept in directory packages/skipr. All other creative assets copyright their respective owners. The text of the source code license is included in the file LICENSE in the source.

lumpen-radio's People

Contributors

filp avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.