Browse Source

Readme updates and file organization

Josh Habdas 4 years ago
parent
commit
7b18d307a6

+ 1
- 1
Podfile View File

@@ -1,6 +1,6 @@
1 1
 source 'git@github.com:/CocoaPods/Specs.git'
2 2
 
3
-platform :ios, '7.0'
3
+platform :ios, '8.0'
4 4
 
5 5
 pod 'StreamingKit', '~> 0.1'
6 6
 

+ 77
- 13
README.md View File

@@ -1,8 +1,12 @@
1
-# WLPN 105.5 FM - Lumpen Radio Chicago
1
+# WLPN 105.5 FM Lumpen Radio Chicago
2
+
3
+[![Stack Share](http://img.shields.io/badge/tech-stack-0690fa.svg?style=flat)](http://stackshare.io/jhabdas/lumpen-radio)
4
+[![Dependency Status](https://david-dm.org/jhabdas/lumpen-radio.svg)](https://david-dm.org/jhabdas/lumpen-radio)
5
+[![devDependency Status](https://david-dm.org/jhabdas/lumpen-radio/dev-status.svg)](https://david-dm.org/jhabdas/lumpen-radio#info=devDependencies)
2 6
 
3 7
 The [Lumpen Radio](http://lumpenradio.com) App is here. Almost...
4 8
 
5
-![App screenshot](https://github.com/jhabdas/lumpen-radio/blob/master/screenshot.png)
9
+![WLPN neon artowrk](https://github.com/jhabdas/lumpen-radio/blob/master/photo-original.jpg)
6 10
 
7 11
 ## Features
8 12
 
@@ -17,6 +21,62 @@ The [Lumpen Radio](http://lumpenradio.com) App is here. Almost...
17 21
 - Plays video loop in background
18 22
 - 20s buffer to help support poor connections
19 23
 
24
+## Getting started
25
+
26
+1. Clone this project
27
+2. Install dependencies:
28
+
29
+    ```sh
30
+    pod install
31
+    npm install
32
+    ```
33
+
34
+    If you run into problems with the Pod installation please review [CocoaPods Troubleshooting](https://guides.cocoapods.org/using/troubleshooting.html) and pay special attetion to any error messages received during the Pod installation.
35
+
36
+3. Run `npm start` to start the Webpack watcher and the React Packager in a single shot.
37
+
38
+   **Note:** The Webpack watcher builds the `index.ios.js` file expected by React Native.
39
+
40
+4. Open `WLPN.xcworkspace` in XCode and run the project.
41
+
42
+## Digging in
43
+
44
+To learn more about React Native and how this app is built check out the video from the talk given to the React group in Chicago on [30 Jun 2015](http://www.meetup.com/React-Chicago/events/222510246/) and the [accompanying slide deck](https://slides.com/jhabdas/streaming-audio-react-native).
45
+
46
+## File Structure
47
+
48
+    ├── iOS                         # Source code
49
+    │   ├── Classes                 # Objective-C, Swift classes
50
+    │   │   ├── AppDelegate         # Application initialization and React Native config
51
+    │   │   ├── AudioManager        # Lib to access platform APIs and bridge to JS
52
+    │   │   └── RootViewController  # RCTRootViewController override to manage Remote Control events
53
+    │   ├── Images.xcassets         # Launch screens and native image assets
54
+    │   ├── Resources               # Other native resources
55
+    │   ├── Constants.h             # Native globals
56
+    │   ├── Info.plist              # Project configuration
57
+    │   ├── main.jsbundle           # React Native placeholder file
58
+    │   └── main.m                  # Application entry point
59
+    ├── src                         # Source code
60
+    │   ├── assets                  # Static resources
61
+    │   │   └── videos              # Video assets
62
+    │   ├── components              # React Native Components
63
+    │   ├── lib                     # JS libraries
64
+    │   ├── stores                  # JS persistence with Flux
65
+    │   ├── actions.es6             # Flux actions
66
+    │   ├── main.es6                # JS application entry point
67
+    │   └── styles.es6              # React Native Style Rules
68
+    ├── .eslintrc                   # JS linter configuration
69
+    ├── .flowconfig                 # Facebook flow config file
70
+    ├── .gitignore                  # VCS blacklist
71
+    ├── Podfile                     # CocoaPods dependency specs
72
+    ├── Podfile.lock                # Native dependency lock file
73
+    ├── WLPN-Bridging-Header.h      # Objective-C, Swift bridge support file
74
+    ├── ignored-modules.js          # RegExp containing modules ignored by watcher
75
+    ├── npm-shrinkwrap.js           # JS dependency lock file
76
+    ├── package.json                # NPM dependency specs
77
+    ├── webpack-watch.js            # Filesystem watcher for JS
78
+    └── webpack-config.js           # WebPack configuration
79
+
20 80
 ## Todo
21 81
 
22 82
 - [x] Add background playback support
@@ -38,20 +98,24 @@ The [Lumpen Radio](http://lumpenradio.com) App is here. Almost...
38 98
 - [ ] Play button does not function when disconnected from the Internet
39 99
 - [x] Launch screen skews on iPad
40 100
 
41
-## Getting started
101
+## Credits
42 102
 
43
-1. Clone this project
44
-2. Install dependencies:
103
+Developed for Public Media Institute by Josh Habdas.
45 104
 
46
-    ```sh
47
-    pod install
48
-    npm install
49
-    ```
105
+Artwork by Jermiah Chiu.
106
+App interface and icon by Josh Habdas.
50 107
 
51
-If you run into problems with the Pod installation please review [CocoaPods Troubleshooting](https://guides.cocoapods.org/using/troubleshooting.html) and pay special attetion to any error messages received during the Pod installation.
108
+Turntable loop video by [Scott Schiller](http://www.scottschiller.com/), BSD.
52 109
 
53
-3. Run `npm start` to start the Webpack watcher and the React Packager in a single shot.
110
+Inspired by [open source work](https://github.com/stetro/domradio-ios/) by Steffen Tröster.
54 111
 
55
-   **Note:** The Webpack watcher builds the `index.ios.js` file expected by React Native.
112
+Many thanks to Public Media Institute, [Lumpen Radio](http://www.lumpenradio.com) and all the wonderful beta testers for helping make this happen. You are beautiful.
56 113
 
57
-4. Open `WLPN.xcworkspace` in XCode and run the project.
114
+- Ed Marszewski
115
+- Logan Bay
116
+- Eric Olson
117
+- Wayne Wright
118
+- Elizabeth Rossman
119
+- Joseph Alfallah
120
+- Harrison Jones
121
+- Nick Hausman

+ 3
- 3
WLPN.xcodeproj/project.pbxproj View File

@@ -141,10 +141,10 @@
141 141
 		78C398B01ACF4ADC00677621 /* RCTLinking.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTLinking.xcodeproj; path = "node_modules/react-native/Libraries/LinkingIOS/RCTLinking.xcodeproj"; sourceTree = "<group>"; };
142 142
 		832341B01AAA6A8300B99B32 /* RCTText.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTText.xcodeproj; path = "node_modules/react-native/Libraries/Text/RCTText.xcodeproj"; sourceTree = "<group>"; };
143 143
 		DD1EC6B21B41DE36002B4339 /* RCTWebSocket.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTWebSocket.xcodeproj; path = "node_modules/react-native/Libraries/WebSocket/RCTWebSocket.xcodeproj"; sourceTree = "<group>"; };
144
-		DD1EC6B81B41DFDE002B4339 /* LaunchScreen~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = "LaunchScreen~ipad.xib"; path = "iOS/LaunchScreen~ipad.xib"; sourceTree = "<group>"; };
144
+		DD1EC6B81B41DFDE002B4339 /* LaunchScreen~ipad.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = "LaunchScreen~ipad.xib"; path = "iOS/Resources/LaunchScreen~ipad.xib"; sourceTree = "<group>"; };
145 145
 		DD3B4C341AFDC76C00BCD40D /* libPods-StreamingKit.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = "libPods-StreamingKit.a"; path = "Pods/../build/Debug-iphoneos/libPods-StreamingKit.a"; sourceTree = "<group>"; };
146 146
 		DD7DC74C1B3B29B000E5D2FC /* WLPN-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "WLPN-Bridging-Header.h"; sourceTree = "<group>"; };
147
-		DD7DC74F1B3B357100E5D2FC /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RootViewController.swift; path = iOS/RootViewController.swift; sourceTree = "<group>"; };
147
+		DD7DC74F1B3B357100E5D2FC /* RootViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = RootViewController.swift; path = iOS/Classes/RootViewController.swift; sourceTree = "<group>"; };
148 148
 		DDB119C01B20C29300589B94 /* Akkurat-Regular.otf */ = {isa = PBXFileReference; lastKnownFileType = file; name = "Akkurat-Regular.otf"; path = "iOS/Resources/Akkurat-Regular.otf"; sourceTree = "<group>"; };
149 149
 		DDE7251D1B02BD0900AA769D /* RCTVideo.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = RCTVideo.xcodeproj; path = "node_modules/react-native-video/RCTVideo.xcodeproj"; sourceTree = "<group>"; };
150 150
 		DDE7252E1B02C17100AA769D /* turntable-loop-1920x500-h264-512kbps-h264.mp4 */ = {isa = PBXFileReference; lastKnownFileType = file; name = "turntable-loop-1920x500-h264-512kbps-h264.mp4"; path = "src/assets/videos/turntable-loop-1920x500-h264-512kbps-h264.mp4"; sourceTree = "<group>"; };
@@ -687,7 +687,7 @@
687 687
 				13B07FB21A68108700A75B9A /* Base */,
688 688
 			);
689 689
 			name = "LaunchScreen~iphone.xib";
690
-			path = iOS;
690
+			path = iOS/Resources;
691 691
 			sourceTree = "<group>";
692 692
 		};
693 693
 /* End PBXVariantGroup section */

iOS/RootViewController.swift → iOS/Classes/RootViewController.swift View File


+ 1
- 1
iOS/Info.plist View File

@@ -33,7 +33,7 @@
33 33
 		<string>audio</string>
34 34
 	</array>
35 35
 	<key>UILaunchStoryboardName</key>
36
-	<string>LaunchScreen</string>
36
+	<string>LaunchScreen~iphone</string>
37 37
 	<key>UIRequiredDeviceCapabilities</key>
38 38
 	<array>
39 39
 		<string>armv7</string>

iOS/Base.lproj/LaunchScreen~iphone.xib → iOS/Resources/Base.lproj/LaunchScreen~iphone.xib View File

@@ -1,18 +1,17 @@
1 1
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 2
 <document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="7706" systemVersion="14D136" targetRuntime="iOS.CocoaTouch" propertyAccessControl="none" useAutolayout="YES" launchScreen="YES" useTraitCollections="YES">
3 3
     <dependencies>
4
-        <deployment identifier="iOS"/>
5 4
         <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="7703"/>
6 5
     </dependencies>
7 6
     <objects>
8 7
         <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
9 8
         <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
10 9
         <view contentMode="scaleToFill" id="iN0-l3-epB">
11
-            <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
10
+            <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
12 11
             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
13 12
             <subviews>
14
-                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="Background" translatesAutoresizingMaskIntoConstraints="NO" id="24i-BS-X8A">
15
-                    <rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
13
+                <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" image="LaunchIphone" translatesAutoresizingMaskIntoConstraints="NO" id="24i-BS-X8A">
14
+                    <rect key="frame" x="0.0" y="0.0" width="414" height="736"/>
16 15
                 </imageView>
17 16
             </subviews>
18 17
             <color key="backgroundColor" white="1" alpha="1" colorSpace="custom" customColorSpace="calibratedWhite"/>
@@ -27,11 +26,11 @@
27 26
                 <constraint firstItem="24i-BS-X8A" firstAttribute="top" secondItem="iN0-l3-epB" secondAttribute="top" id="sow-Db-yp2"/>
28 27
             </constraints>
29 28
             <nil key="simulatedStatusBarMetrics"/>
30
-            <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
29
+            <simulatedScreenMetrics key="simulatedDestinationMetrics" type="retina55"/>
31 30
             <point key="canvasLocation" x="548" y="455"/>
32 31
         </view>
33 32
     </objects>
34 33
     <resources>
35
-        <image name="Background" width="375" height="667"/>
34
+        <image name="LaunchIphone" width="375" height="667"/>
36 35
     </resources>
37 36
 </document>

iOS/LaunchScreen~ipad.xib → iOS/Resources/LaunchScreen~ipad.xib View File


BIN
photo-original.jpg View File


Loading…
Cancel
Save