Skip to content

It is the last project of the iOS Nanodegree program at Udacity.

License

Notifications You must be signed in to change notification settings

RLRG/DancingSteps

Repository files navigation

DancingSteps

💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃 💃

This app was created as a final project of the “Become an iOS Developer” Nanodegree program from Udacity.

Objective and audience of the app

The main functionalities of the app are to record all the dancing steps to be learnt by a dancer, organise them by different styles and check the most important dancing events around the user.

The target audience using the app is supposed to be dancers, including dance instructors, learners and all the people interested in the dancing world.

Of course, if any iOS developer who would like to check how to use the frameworks and tools included in the Resources paragraph, is more than welcome. This project is also interesting if you want to see an app example using Clean Architecture along with RxSwift.

Recorded Videos Screen Camera Screen Finish Recording Screen TopChart Screen EventDetails Screen

Motivation

One of my passions is to dance so that I spend so much time learning new steps of different styles and, when I attend to a workshop, at the end of it, we, dance learners, record a video with what we have done during the workshop. Afterwards, we can remember the new movements and steps watching the video again. There are hundreds of dance styles and the problem comes when somebody attends so many workshops that it is difficult to organise all the videos in Albums.

Therefore, I thought of a useful way to have all the videos in the same place arranged by styles. To give added value to the application and to meet all the requirements to pass the iOS Udacity Nanodegree, a list of dancing events around the user can also be seen in the app.

Learning purposes

I wanted to focus on learning new materials which were not covered in the iOS Nanodegree Program, paying special attention to Clean Architecture & RxSwift (Reactive Programming). This paragraph is also intended to collect interesting and useful resources and links related to the aforementioned topics:

In order to create the architecture and the communications of my app I have studied mainly the following projects in addition to the links provided above:

Build and install

Requirements

  • Xcode 8.3.3
  • iOS 10.3 SDK
  • Swift 3.1.

Getting the code

In order to build, run and access the app, the first thing you have to do is to clone my repository:

git clone https://github.com/RLRG/DancingSteps.git

It is important to remark that I have used CocoaPods as the dependency manager of the project so that you will need to execute a ‘pod install’ command in the same path where the PodFile is located to download all the third-party frameworks:

pod install

Running the app

Open DancingSteps.xcworkspace with XCode 8.3.3. Then, it is recommended to install the app in a real device so that you can test the video recording functionality.

Before running it, note that there are two targets:

  • DancingStepsLAB: When you run this target, in the "Videos" tab, you will see an UIBarButtonItem in the navigation bar (DEBUG) in order to open this debug screen. This target, then, includes tools to monitor and get information about the operation of the app in real time (real-time debuggers, logs and so on).
  • DancingSteps: This target would be a simulation of the app if it was going to be submitted to the App Store.

Resources

This paragraph includes all the resources used to create this app project, including frameworks, APIs and other information resources such as tutorials, documentation and so on.

Third-party frameworks

Framework Description
CocoaPods The Cocoa Dependency Manager.
FLEX Debugger An in-app debugger.
SwiftLint A tool to enforce Swift style and conventions.
Alamofire Elegant HTTP Networking in Swift.
SwiftyCam A Snapchat Inspired iOS Camera Framework written in Swift
Kiuwan Automated code review tool to detect vulnerabilities and improve quality. After setting it up, I discovered that moment, Swift was not supported yet. There must be working on it.
Travis CI Continuous Integration used to build the project automatically.
Realm Mobile database used to persist data of the app.
Other Other frameworks related to the ones already mentioned such as: RxAlamofire, ObjectMapper, AlamofireObjectMapper, RxRealm, QueryKit (see PodFile of the project)

APIs

Framework Description
EventBrite API It is used to retrieve the information about the dancing events.

Other information resources

Resource Description
App icon and buttons Icon made by Freepik from www.flaticon.com and all the sizes of the icon were generated with https://makeappicon.com/
Writing READMEs Udacity course In order to document this project.
GitHub documentation to write READMEs In order to document this project.

Future work & Improvements

Among other things:

  • Support of multi-language.
  • Support to landscape orientations.
  • About button which opens a new screen where some information is displayed: version of the app, attributions to mention all the frameworks used, ...
  • Improve the top events experience so that the user can filter the results in any way.
  • Order the dancing events in the top chart by month.
  • Include an animation when the app is launching.
  • Extend the model of the app so that a video can be related to a dancer and to a song (in case the video is recorded with music).
  • ...

If I find enough time to carry out it, I will work on this project to improve it in a way that it is feasible to publish this app in the App Store.

Feedback

As I am continuously learning, I would appreciate if you take a look at my code and you have recommendations to improve it in different ways. You can contact me at [email protected] to do so 😃

License

The contents of this repository are covered under the Apache License 2.0.

About

It is the last project of the iOS Nanodegree program at Udacity.

Resources

License

Stars

Watchers

Forks

Packages

No packages published