MusicAlbumApp - Applications for training networking, field validation, screen transitions, and GCD

Overview

MusicAlbumApp

This is an educational application for finding music albums and viewing information about them.

Getting started

The project does not require additional settings to run

About project

The project is designed for educational purposes for training and practice

When developing the project, the following tasks were set:

  1. Registration screen with text field validate
  • First name (only English).
  • Second name (only English).
  • Date of birthday (Choose with calendar and at least 18 years old).
  • Phone number (Format: "+7 (123) 123-11-22" and +7 appear automatically after user entering first number.
  • Email (with correctness check).
  • Password (more 6 characters and at least 1 uppercase character, 1 lowercase character and at least 1 number).
  1. Login screen with validate user information
  • Email and password text fields
  • Check user in database
  • Present main module only for authorization user
  1. Music album screen with searchBar and table View
  • Show logo of found albums
  • Show album name and count of track of found albums
  • Show group name of found albums
  • Search with Russian and English language
  1. Detail album screen after tap of selected album
  • Detail screen need contains album logo, album and group name, date of release and tracks list

The following solutions were used in this project:

  • Swift language
  • Foundation
  • UIKit
  • MVC Architecture
  • Firebase
  • Auto Layout
  • JSON decode
  • GCD
  • TextField validate (Own implementation)
  • Network manager (UrlSession)
  • Only programmaticaly (without storyBoard)
  • Navigation and routing without segue

Modules:

  • Starting module

This screen contains an image with the application logo, and allows you to choose to go to the registration or login module

  • Login module

This screen contains 2 text fields for entering an email and a password, if authorization is successful, it presents the main screen

  • Register module

This screen contains several text fields for entering user information, validation is implemented here. If registration is successful, it presents the main screen

  • Albums module (main)

This screen contains main table View and search bar. When you enter text in the search field, the table begins to be updated with the values obtained using the API. Navigation bar contains "Sign out" button and "About user" button

  • About album module

This screen сontains information about the selected album, for example album name, date of release, track list and album logo

  • About user module

This screen contains user information. Only read, without change something

Presentation

You might also like...
JSONHelper - ✌ Convert anything into anything in one operation; JSON data into class instances, hex strings into UIColor/NSColor, y/n strings to booleans, arrays and dictionaries of these; anything you can make sense of!

JSONHelper Convert anything into anything in one operation; hex strings into UIColor/NSColor, JSON strings into class instances, y/n strings to boolea

ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects to and from JSON.

ObjectMapper is a framework written in Swift that makes it easy for you to convert your model objects (classes and structs) to and from J

YamlSwift - Load YAML and JSON documents using Swift

YamlSwift parses a string of YAML document(s) (or a JSON document) and returns a Yaml enum value representing that string.

A sweet and swifty YAML parser built on LibYAML.
A sweet and swifty YAML parser built on LibYAML.

Yams A sweet and swifty YAML parser built on LibYAML. Installation Building Yams requires Xcode 11.x or a Swift 5.1+ toolchain with the Swift Package

This framework implements a strict JSON parser and generator in Objective-C.

SBJson 5 Chunk-based JSON parsing and generation in Objective-C. Overview SBJson's number one feature is stream/chunk-based operation. Feed the parser

Model framework for Cocoa and Cocoa Touch

Mantle Mantle makes it easy to write a simple model layer for your Cocoa or Cocoa Touch application. The Typical Model Object What's wrong with the wa

Magical Data Modeling Framework for JSON - allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS and tvOS apps.

JSONModel - Magical Data Modeling Framework for JSON JSONModel allows rapid creation of smart data models. You can use it in your iOS, macOS, watchOS

Application where you can build your portfolio with your Educations, Experiences, Projects, and Achievements
Application where you can build your portfolio with your Educations, Experiences, Projects, and Achievements

App Store Link Application where you can build your portfolio with your Educations, Experiences, Projects, and Achievements Description Signup with ne

From JSON to Core Data and back.
From JSON to Core Data and back.

Groot Groot provides a simple way of serializing Core Data object graphs from or into JSON. It uses annotations in the Core Data model to perform the

Owner
Vladislav
Vladislav
Email Validation Example With Swift

EmailValidation Example To run the example project, clone the repo, and run pod install from the Example directory first. Requirements Installation Em

null 1 Dec 4, 2021
Networking, JSON Parsing, APIs and Core Location

Clima Our Goal It’s time to take our app development skills to the next level. We’re going to introduce you to the wonderful world of Application Prog

Dessana Caldeira M. Santos 1 Nov 25, 2021
Quick hack to hide the full screen microphone dot on macOS 12.

undot Quick hack to hide the full screen microphone dot on macOS 12. Usage To build: git clone https://github.com/s4y/undot cd undot make To run: whil

Sidney San Martín 324 Dec 29, 2022
Reflection based (Dictionary, CKRecord, NSManagedObject, Realm, JSON and XML) object mapping with extensions for Alamofire and Moya with RxSwift or ReactiveSwift

EVReflection General information At this moment the master branch is tested with Swift 4.2 and 5.0 beta If you want to continue using EVReflection in

Edwin Vermeer 964 Dec 14, 2022
A fast, convenient and nonintrusive conversion framework between JSON and model. Your model class doesn't need to extend any base class. You don't need to modify any model file.

MJExtension A fast, convenient and nonintrusive conversion framework between JSON and model. 转换速度快、使用简单方便的字典转模型框架 ?? ✍??Release Notes: more details Co

M了个J 8.5k Jan 3, 2023
A protocol to serialize Swift structs and classes for encoding and decoding.

Serpent (previously known as Serializable) is a framework made for creating model objects or structs that can be easily serialized and deserialized fr

Nodes - iOS 287 Nov 11, 2022
Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend

Argo is a library that lets you extract models from JSON or similar structures in a way that's concise, type-safe, and easy to extend. Using Argo

thoughtbot, inc. 3.5k Dec 20, 2022
Decodable Simple and strict, yet powerful object mapping made possible by Swift 2's error handling.

Decodable Simple and strict, yet powerful object mapping made possible by Swift 2's error handling. Greatly inspired by Argo, but without a bizillion

Johannes Lund 1k Jul 15, 2022
Elevate is a JSON parsing framework that leverages Swift to make parsing simple, reliable and composable

Elevate is a JSON parsing framework that leverages Swift to make parsing simple, reliable and composable. Elevate should no longer be used for

Nike Inc. 611 Oct 23, 2022
HandyJSON is a framework written in Swift which to make converting model objects to and from JSON easy on iOS.

HandyJSON To deal with crash on iOS 14 beta4 please try version 5.0.3-beta HandyJSON is a framework written in Swift which to make converting model ob

Alibaba 4.1k Dec 29, 2022