Skip to content

This is a full-featured app (excluding purchases) that allows users to order glasses from the online store.

Notifications You must be signed in to change notification settings

YevhenBiiak/07-RayBan-Store

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

07-RayBan-Store

More screenshots

Description

This is a full-featured app (excluding purchases) that allows users to order glasses from the online store. The app has a shopping cart where users can add and remove items, as well as a wish list where they can keep their favorite items for future purchases. Users can also place orders, choose shipping options, and enter their address for delivery. The app also has a feature that allows users to view their order history.

The Goal

The project was developed for the purpose of studying Clean Architecture and MVP presentation pattern, as well as for learning Firebase frameworks such as AuthFirebase and RealtimeDatabase. Storyboards were not used in the project.

The goal of the project was to build a complex, scalable, and maintainable application that adheres to SOLID principles, features multiple screens (15), and communicates with a real-time database.

Features and Implementation

One of the key features of the app is its use of async/await concurrency. This enables the app to perform multiple tasks at once, such as loading images, fetching product data, and updating the UI, without causing the app to freeze or crash.

For the product list screen was implemented infinite scrolling (with a batch size of 6 products) and shimmer view as a loading indicator. As a network layer for obtaining images was implemented an API using URLSession and custom configuration for image caching.

In addition, the project implements my own approach to handling and displaying errors (since I couldn't find similar articles on the internet). Product data was collected from a website with the same name and converted into a JSON structure for the database.

The AuthFirebase framework was used to implement:

  • facebook login (Facebook SDK)
  • email and password login
  • email and password registration
  • forgot password
  • change email
  • change password

The application uses five types of alerts (see spoiler):

  • inline (for text field errors)
  • toast (for errors that cannot be inline)
  • blocking (for blocking user interaction with app)
  • dialog alert (for confirmation of actions)
  • alert (simple alert with one action for error or success messages)

Used frameworks

  • UIKit
  • Stevia
  • CoreAnimation
  • Firebase SDK (FirebaseAuth, FirebaseDatabase)
  • Facebook SDK
  • Network (NWPathMonitor)
  • URLSession

The technology stack

  • Swift
  • CocoaPods
  • SwiftLint
  • AutoLayout
  • Concurrency (async/await)
  • JSON

Video demo

Login with Facebook
facebook_compressed.mov
Registration with email and password
create_compressed.mov
Login with email and password
login_compressed.mov
Forgot password
forgot_compressed.mov
Products list and products categories
products_compr.mov
Product details and favorite list
details_compressed.mov
Image zooming
zooming_compressed.mov
Adding products to cart
adding_compressed.mov
Shopping bag, Checkout, Create order
checkout_compressed.mov
Order history
orders_compressed.mov
Adding to cart from products list
add_from_products_compressed.mov
Adding to cart from Order history
add_from_orders_compressed.mov
Buy now feature
buy_now_compressed.mov
Profile changing
change_profile_compressed.mov
Email changing
email_change_compressed.mov
Password changing
password_change_compressed.mov

About

This is a full-featured app (excluding purchases) that allows users to order glasses from the online store.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published