Giter Club home page Giter Club logo

se-daily-ios's Introduction

Software Engineering Daily iOS App

logo

Native iOS app for Software Engineering Daily.

Screenshots

App screenshots

Getting Started

The app is 100% Swift. User interface is built mostly in code using SnapKit DSL. The current architecture is MVVM-C, but moving forward we are open to consider some Redux-like state management implementation.

Setup

We are using CocoaPods to manage dependencies. Clone the repo and then run:

$ sudo gem install cocoapods
$ pod install

CocoaPods requires that you open the SEDaily-IOS.xcworkspace.

$ open SEDaily-IOS.xcworkspace

Dependencies

There are +25 various dependencies used in the project. Moving forward some of them may be subject to change/removal. The most important ones are:

Upcoming features

Interested in seeing a particular feature implemented in this app? Please open a new issue with a feature proposal.

Contributing

Checkout CONTRIBUTING.md for details.

se-daily-ios's People

Contributors

berkmolla avatar crablar avatar eddies5 avatar jasonify avatar justinctlam avatar nathanbacon avatar thedc89 avatar thehollidayinn avatar themisterholliday avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

se-daily-ios's Issues

[Feature] Comments Support

This is a significant feature, so probably worth discussing with @themisterholliday if you are interested in taking it on.

The backend endpoints for this are already written.

The picture below shows several new features we want to build eventually. One idea for the comments interface is in the center.

The "related links" feature is also there. You can see the web version of these features live today.

AMA is also in this picture, but we are not working on AMA yet.

mobile designs 11-3-17

Player loses my place in the episode when switching audio apps

Steps to reproduce:
-play an episode on SED
-open a different audio app (Overcast) and play something; or kill the SED app
-come back to SED
-episode progress not there

Suggested fix:
-checkpoint the currently playing episode every 5 secon
-whenever someone switches to the app, or the app starts, load the checkpoint

[Feature] Add a feedback button

I think it would be a good idea to add a feedback button so users can send their issues or feedback. Is there an email we could use for this?

Add downloads page

User made this comment on Twitter:
The app should let me navigate in offline mode, if I don't have an internet connection is impossible to listen to podcasts that I downloaded.

[Improvement] Add support for localization

We may not be supporting any language other than English at the moment but we should build the app in anticipation that we should. This means any user facing strings should use NSLocalizedString. Doing it now would be easier than doing it later.

[Enhancement] Unit tests

Right now SEDaily-IOSTests appears to be the standard empty project that Xcode creates. Are there plans to put some meat on these bones soon, or in the future?

Is Disk the right tool for caching backend data?

Disk doesn't seem to have anyway to update an individual item. It appears you have to fetch all the data for the podcast, update an individual item, clear the file, then rewrite the entire array back into Disk. Is this better than using a db like sqllite, realm or coredata?

Also, Disk doesn't seem to support querying for data based on a predicate/condition.

Mobile Search

Add fuzzy matching, and potentially indexing by tags

Better feedback on Search screen

Main:

  • let me know that something is happening
  • let me know that no results came back

Replicate: Was searching "multithreaded" pointing to prod. Nothing shows up but it seems like it might still be working.

Ideally: auto complete as I type & suggest things (future feature probably)

[Improvement] Seek from Lock Screen/Control Center

When playing an episode from the app, the Lock Screen/Control Center shows the current playback position, but doesn't allow for seeking in the content:
img_5302

By contrast, Podcasts.app does allow for seeking outside the app:
img_5303

[BUG] Feeds are not always loading

Note: iOS 11.1

It seems that on first load (after the spinner is finished) there will be a blank view, this is fixed after navigating away from this view. Going from Open Source and then back to Machine learning will fix this.

img_1023

Any chance of getting this app on IOS 9

I'd love to be able to use the app on my Iphone 4S. This would make it usable for a wider audience too,
as a lot of people don't necessarily want (or can) upgrade to the latest greatest (buggiest) phones.

Failing that, is there's dev documentation, maybe i can take it on. Thoughts?

checkAlreadyLoadedNewToday doesn't seem to be working correctly

checkAlreadyLoadedNewToday doesn't seem to be working correctly.
Every time I launch the app, it will try to fetch data from the network and append the items to Disk.
This would increase the Disk data indefinitely.

We also don't ever clear the data either.

[Feature] Related Links Support

This is a significant feature, so probably worth discussing with @themisterholliday if you are interested in taking it on.

The backend endpoints for this are already written.

The picture below shows several new features we want to build eventually. One idea for the related links interface is in the center.

The "comments" feature is also there. You can see the web version of these features live today.

AMA is also in this picture, but we are not working on AMA yet.

mobile designs 11-3-17

Calls / Bluetooth paring messing playback

"SE daily app for iOS seems to stop playing and lose the current episode frequently (e.g. when I get an incoming call, start/stop my car, or pause the episode overnight)"

Potential build issues with Pods

It seems I might not be the only one experiencing this. Here is what I get on a fresh pull from github:

Analyzing dependencies
[!] The version of CocoaPods used to generate the lockfile (1.4.0.beta.1) is higher than the version of the current executable (1.3.1). Incompatibility issues may arise.
[!] Unable to satisfy the following requirements:

- `KoalaTeaPlayer` required by `Podfile`
- `KoalaTeaPlayer (= 0.1.4)` required by `Podfile.lock`

None of your spec sources contain a spec satisfying the dependencies: `KoalaTeaPlayer, KoalaTeaPlayer (= 0.1.4)`.

You have either:
 * out-of-date source repos which you can update with `pod repo update` or with `pod install --repo-update`.
 * mistyped the name or version.
 * not added the source repo that hosts the Podspec to your Podfile.

Note: as of CocoaPods 1.0, `pod repo update` does not happen on `pod install` by default.

[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

[!] Automatically assigning platform ios with version 10.3 on target SEDaily-IOS because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.
$ open .

After deleting the Podfile.lock (and Pods directory) I get something more like this:

$ pod install
Analyzing dependencies
Downloading dependencies
Installing ActiveLabel (0.7.1)
Installing Alamofire (4.5.1)
Installing Crashlytics (3.8.6)
Installing Eureka (4.0.0)
Installing Fabric (1.6.13)
Installing IQKeyboardManagerSwift (5.0.2)
Installing KTResponsiveUI (0.2.2)
Installing Kingfisher (4.1.0)
Installing KoalaTeaFlowLayout (0.3.0)
Installing KoalaTeaPlayer (0.1.3)
Installing ObjectMapper (3.0.0)
Installing Pageboy (2.0.0)
Installing PureLayout (3.0.2)
Installing Realm (2.10.2)
Installing RealmSwift (2.10.2)
Installing Reusable (4.0.0)
Installing SideMenu (3.0.2)
Installing SnapKit (4.0.0)
Installing SwiftIcons (1.5.1)
Installing SwifterSwift (4.0.0)
Installing SwiftyBeaver (1.4.2)
Installing SwiftyJSON (3.1.4)
Installing Tabman (1.0.2)
Installing UIFontComplete (2.0.1)
Installing XLPagerTabStrip (7.0.0)
Generating Pods project
Integrating client project
Sending stats
Pod installation complete! There are 22 dependencies from the Podfile and 25 total pods installed.

[!] Smart quotes were detected and ignored in your Podfile. To avoid issues in the future, you should not use TextEdit for editing it. If you are not using TextEdit, you should turn off smart quotes in your editor of choice.

[!] Automatically assigning platform ios with version 10.3 on target SEDaily-IOS because no platform was specified. Please specify a platform for this target in your Podfile. See `https://guides.cocoapods.org/syntax/podfile.html#platform`.

Once in Xcode I get something like this (Doing Project->Clean seems to solve these 3) :

diff: /Podfile.lock: No such file or directory
diff: /Manifest.lock: No such file or directory
error: The sandbox is not in sync with the Podfile.lock. Run 'pod install' or update your CocoaPods installation.

Many more errors (16), with ActiveLabel:

Property cannot be marked @IBInspectable because its type cannot be represented in Objective-C
/Users/jasonbautista/playground/sed/se-daily-iOS/Pods/ActiveLabel/ActiveLabel/ActiveLabel.swift:309:20: 'NSFontAttributeName' has been renamed to 'NSAttributedStringKey.font'


/Users/jasonbautista/playground/sed/se-daily-iOS/Pods/UIKit.NSFontAttributeName:4:12: 'NSFontAttributeName' was obsoleted in Swift 3

Have tried:
Opening the SEDaily-IOS.xcworkspace and building as is
Deleting: Pods, Podfile.lock, SEDaily-IOS.xcworkspace -> pod install
Building Clean
Xcode 9.1 beata + Xcode 9.0
Tried upgrading ActiveLabel pod,
Tried commenting out ActiveLabel Pod from Podfile, Xcode moves to similar problems with another Pod (i.e SwiftIcons icons 33 issues)

Have yet to try:

[ ] upgrade pods to 1.4.0.beta.1
[ ] wondering if we make a branch / fork with a working Pods/ directory checked in and seeing if we can build from that? Just a random guess.

Profile view for users

On web we are going to be including a user's listened history, which is still on a branch (on the backend repo).

Just For You tab issue?

The Just For You tab continuously displays a skeleton collection view for me - is this intended behaviour? I would expect it to either be empty (with a message) or showing a properly populated collection view, of course.

Just wanted to check before digging into the code

[Feature] Have an option to delete cache

It might be a good idea to have some UI to allow users to delete the cached items. It allows users to deleted unused data to save some space and help fix potential errors in the database.

"Just for you tab" when not logged in

Should maybe show something saying to log in.

Also need to get better sense of how many recommended episodes show per user even if they are logged in

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.