https://github.com/vhscom/lumpen-radio
Mirror of Lumpen Radio on Codeberg. π» React Native app for WLPN 105.5 FM Lumpen Radio Chicago
https://github.com/vhscom/lumpen-radio
cocoapods javascript objective-c react-native
Last synced: 24 days ago
JSON representation
Mirror of Lumpen Radio on Codeberg. π» React Native app for WLPN 105.5 FM Lumpen Radio Chicago
- Host: GitHub
- URL: https://github.com/vhscom/lumpen-radio
- Owner: vhscom
- License: bsd-3-clause
- Created: 2022-02-19T06:01:14.000Z (over 4 years ago)
- Default Branch: trunk
- Last Pushed: 2022-02-19T06:02:16.000Z (over 4 years ago)
- Last Synced: 2025-03-11T08:51:27.635Z (about 1 year ago)
- Topics: cocoapods, javascript, objective-c, react-native
- Language: Objective-C
- Homepage: https://codeberg.org/vhs/lumpen-radio
- Size: 3.54 MB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# WLPN 105.5 FM Lumpen Radio Chicago
Never listen to a radio commercial again. The free [Lumpen Radio app](https://appsto.re/us/NedV7.i) is here!
[](https://vhs.codeberg.page/code/lumpen-radio/assets/5_6226640352183320745.mp4)
And StreamingKit reverse proxy...
[](https:///codeberg.org/vhs/lumpen-radio/src/branch/master/packages/skipr)
## About
- [StreamingKit](https://github.com/tumtumtum/StreamingKit/) iOS audio provider
- Built with [React Native](https://facebook.github.io/react-native/) and [Webpack](https://webpack.js.org/)
- Created using [RN Webpack Starter Kit](https://vhs.codeberg.page/code/react-native-webpack-starter-kit)
## 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](https://appsto.re/us/NedV7.i) 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](https://codeberg.org/vhs/react-native-webpack-starter-kit). Otherwise proceed enthusiastically.
1. Clone this project.
2. Install dependencies.
```sh
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](https://facebook.github.io/react-native/docs/running-on-device-ios.html#using-offline-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](https://vhs.codeberg.page/reflecting-on-react-native-development/#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](https://mama.indstate.edu/users/ice/tree/) written by Steve Baker and contributors.
## Todo
- [ ] Add [Expo](https://expo.io/) and [TypeScript](https://www.typescriptlang.org/) support
## 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
- [x] Stream buffer timeout on connection restart
## Credits
Designed and developed by VHS.
Splash screen and vectors by [Jermiah Chiu](https://jeremiahchiu.com).
App interface and icon by [VHS](https://vhs.codeberg.page).
Turntable loop video by [Scott Schiller](https://www.scottschiller.com/), BSD and used with permission.
Inspired by [open source work](https://github.com/stetro/domradio-ios/) by Steffen TrΓΆster.
Many thanks to [Public Media Institute](https://www.publicmediainstitute.com/), [Lumpen Radio](https://www.lumpenradio.com) 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.