Starter code for the Flash Chat project in the Complete iOS Development Bootcamp

Overview

App Brewery Banner

Flash-Chat

Our Goal

One of the most fundamental component of modern iOS apps is the Table View. Table Views are used everywhere from the Mail app to the Messages app. It’s a crucial part of every iOS developer’s tool belt. In this tutorial we’ll be getting to grips with Table Views, creating custom cells, and making our own cloud-based backend database. It’s going to be epic, so buckle up.

What you will create

Flash Chat is an internet based messaging app similar to WhatsApp, the popular messaging app that was bought by Facebook for $22 billion. We will be using a service called Firebase Firestore as a backend database to store and retrieve our messages from the cloud.

What you will learn

  • How to integrate third party libraries in your app using Cocoapods and Swift Package Manager.
  • How to store data in the cloud using Firebase Firestore.
  • How to query and sort the Firebase database.
  • How to use Firebase for user authentication, registration and login.
  • How to work with UITableViews and how to set their data sources and delegates.
  • How to create custom views using .xib files to modify native design components.
  • How to embed View Controllers in a Navigation Controller and understand the navigation stack.
  • How to create a constants file and use static properties to store Strings and other constants.
  • Learn about Swift loops and create animations using loops.
  • Learn about the App Lifecycle and how to use viewWillAppear or viewWillDisappear.
  • How to create direct Segues for navigation.

Constants

struct K {
    static let cellIdentifier = "ReusableCell"
    static let cellNibName = "MessageCell"
    static let registerSegue = "RegisterToChat"
    static let loginSegue = "LoginToChat"
    
    struct BrandColors {
        static let purple = "BrandPurple"
        static let lightPurple = "BrandLightPurple"
        static let blue = "BrandBlue"
        static let lighBlue = "BrandLightBlue"
    }
    
    struct FStore {
        static let collectionName = "messages"
        static let senderField = "sender"
        static let bodyField = "body"
        static let dateField = "date"
    }
}

This is a companion project to The App Brewery's Complete App Developement Bootcamp, check out the full course at www.appbrewery.co

End Banner

You might also like...
A chat textbar for iOS inspired in whatssap app

ECMagicBar [![CI Status](https://img.shields.io/travis/Eduard Calero/ECMagicBar.

Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching
Anonymous chat app leveraging Google's Firebase, a NoSQL backend and WebSocket for real time data synching

Chaty Chaty is an anonymous chat app that allows millions of users to chat at the same time. Firebase is Google's real time NoSQL Backend as a Service

Real time chat app written in Swift 5 using Firebase

Quick Chat for iOS Quick Chat for iOS is a real time chat app written in Swift 5 using Firebase. Quick Chat allows to send and receive text messages,

Real time chat application in Swift 5 using Firebase

Real time chat application in Swift 5 using Firebase

Fully Functional iOS14 Swift Chat app Using Firebase as backend.
Fully Functional iOS14 Swift Chat app Using Firebase as backend.

Social Chat Messenger App This iOS14 Chat App is built with Swift in Xcode12 and Using Firebase as backend to authenticate users. Features Light and D

Create a real time chat application in Swift 5 using Firebase

Messenger Real Time Chat App Project to create a real time chat application in Swift 5 using Firebase. Features Facebook Log In Google Sign In Email/P

SwiftUIChatApp - SwiftUI Chat App
SwiftUIChatApp - SwiftUI Chat App

Simple chat application What is there to notice in this demo-app ? Animations Fi

Telegram iOS Source Code Compilation Guide

Telegram iOS Source Code Compilation Guide We welcome all developers to use our API and source code to create applications on our platform. There are

iOS-mail — ProtonMail iOS client app

iOS-mail Introduction iOS-mail — ProtonMail iOS client app The app is intended for all users of the ProtonMail service. Whether they are paid or free,

Comments
  • animateLogo

    animateLogo

    animate the logo by looping over a String and append each letter in the titleLabel.text with a delay. used a forEach loop instead of the for in loop showed in the course.

    opened by MerouaneBellaha 0
  • connect screens : added Navigation Controller, added Segues

    connect screens : added Navigation Controller, added Segues

    Embed the welcome screen in a Navigation Controller to allow user to navigate back to previous screen and deallocate memory used by screens not displayed. Added segues to connect screens together.

    opened by MerouaneBellaha 0
  • CLTypingLabel. ArgumentError - Illformed requirement ` 0.4.0"` ">

    CLTypingLabel. ArgumentError - Illformed requirement `"~-> 0.4.0"`

    `bijeshkawan@Bijeshs-MacBook-Pro Flash-Chat-iOS13 % pod install xcode-select: error: tool 'xcodebuild' requires Xcode, but active developer directory '/Library/Developer/CommandLineTools' is a command line tools instance

    ――― MARKDOWN TEMPLATE ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

    Command

    /usr/local/bin/pod install
    

    Report

    • What did you do?

    • What did you expect to happen?

    • What happened instead?

    Stack

       CocoaPods : 1.9.1
            Ruby : ruby 2.6.3p62 (2019-04-16 revision 67580) [universal.x86_64-darwin19]
        RubyGems : 3.0.3
            Host : Mac OS X 10.15.3 (19D76)
           Xcode :  ()
             Git : git version 2.21.0 (Apple Git-122.2)
    Ruby lib dir : /System/Library/Frameworks/Ruby.framework/Versions/2.6/usr/lib
    Repositories : trunk - CDN - https://cdn.cocoapods.org/
    

    Plugins

    cocoapods-deintegrate : 1.0.4
    cocoapods-plugins     : 1.0.0
    cocoapods-search      : 1.0.0
    cocoapods-stats       : 1.1.0
    cocoapods-trunk       : 1.4.1
    cocoapods-try         : 1.1.0
    

    Podfile

    platform :ios, '13.0'
    
    target 'Flash Chat iOS13' do
      
      use_frameworks!
    
      # Pods for Flash Chat iOS13
    
    pod 'CLTypingLabel', '~-> 0.4.0'
    
    end
    

    Error

    ArgumentError - Illformed requirement `"~-> 0.4.0"`
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:63:in `parse'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `block in initialize'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `map!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:88:in `initialize'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:34:in `new'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/requirement.rb:34:in `create'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/dependency.rb:101:in `initialize'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:979:in `new'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:979:in `block in pod_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:975:in `map'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:975:in `pod_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:96:in `non_inherited_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-core-1.9.1/lib/cocoapods-core/podfile/target_definition.rb:74:in `dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:44:in `block in from_podfile'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:43:in `each'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer/podfile_dependency_cache.rb:43:in `from_podfile'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer/analyzer.rb:85:in `initialize'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:416:in `new'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:416:in `create_analyzer'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:228:in `resolve_dependencies'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/installer.rb:156:in `install!'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command/install.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/claide-1.0.3/lib/claide/command.rb:334:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/lib/cocoapods/command.rb:52:in `run'
    /Library/Ruby/Gems/2.6.0/gems/cocoapods-1.9.1/bin/pod:55:in `<top (required)>'
    /usr/local/bin/pod:23:in `load'
    /usr/local/bin/pod:23:in `<main>'
    

    ――― TEMPLATE END ――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――

    [!] Oh no, an error occurred.

    Search for existing GitHub issues similar to yours: https://github.com/CocoaPods/CocoaPods/search?q=Illformed+requirement+%60%22~-%3E+0.4.0%22%60&type=Issues

    If none exists, create a ticket, with the template displayed above, on: https://github.com/CocoaPods/CocoaPods/issues/new

    Be sure to first read the contributing guide for details on how to properly submit a ticket: https://github.com/CocoaPods/CocoaPods/blob/master/CONTRIBUTING.md

    Don't forget to anonymize any private data!

    Looking for related issues on cocoapods/cocoapods...

    • CocoaPods 1.0 doesn't handle lockfiles that used to have :head declared https://github.com/CocoaPods/CocoaPods/issues/4710 [closed] [4 comments] 05 Jan 2016

    • ArgumentError - Illformed requirement " Source = 0.0.1" https://github.com/CocoaPods/CocoaPods/issues/2850 [closed] [4 comments] 20 Nov 2014

    bijeshkawan@Bijeshs-MacBook-Pro Flash-Chat-iOS13 % `

    opened by bijeshkawan 1
Owner
The App Brewery
The Best Programming School in the World
The App Brewery
Chat-App - GV Chat App is an iOS app built with Swift

GV Chat App - iOS Explore the docs » Report Bug · Request Feature About The Proj

Cyrus Dumbwani 0 Jan 25, 2022
A chat simulator app that uses FireBase for Authentication and chat storage

Chat-App Description Flash chat is a chat simulator app that uses FireBase for Authentication and chat storage Tools Used - Swift (Programming Languag

Victor Alvarenga 0 Oct 14, 2021
Swift-Chat-Application - Swift Chat Application Using Firebase , messagekit

Swift-Chat-Application Using Firebase , messagekit

Metin ATALAY 7 Oct 9, 2022
A native iOS video chat app based on WebRTC

AppRTC - iOS implementation of the Google WebRTC Demo About This Xcode project is a native wrapper for the Google's WebRTC Demo. It organizes the WebR

ISBX 1.3k Dec 31, 2022
Bluetooth LE Mesh Chat for iOS and Android

BLEMeshChat Bluetooth LE mesh chat prototype for iOS. Android version over here. Goals Use the Bluetooth 4.0 Low Energy APIs on iOS and Android to all

Chris Ballinger 479 Dec 29, 2022
ChatSecure is a free and open source encrypted chat client for iOS that supports OTR and OMEMO encryption over XMPP.

ChatSecure ChatSecure is a free and open source XMPP messaging client for iOS that integrates OTR and OMEMO encrypted messaging support, and has optio

ChatSecure 3.1k Dec 31, 2022
Open source, native iOS Messenger, with realtime chat conversations (full offline support).

OVERVIEW This is a native iOS Messenger app, with realtime chat conversations (full offline support). NEW FEATURES Passcode support GraphQL server sup

Related Code 4.5k Dec 26, 2022
Messenger Clone - Real-time iOS Chat with Firebase Firestore written in Swift

Real time Swift iOS Chat with Firebase - Messenger Clone This is an extremely simple chat app source code of an iOS Swift Chat app. It leverages Messa

Instamobile 615 Dec 27, 2022
Legacy mobile Rocket.Chat client in Swift for iOS

IMPORTANT: PLEASE READ THIS FIRST Rocket.Chat mobile is moving to React Native. Development on this repository by Rocket.Chat has now ceased. If your

Rocket.Chat 1k Dec 22, 2022
Spika is universal chat module with backend, web, ios and Android client.

Spika Spika is messenger module for Web/iOS/Android with backend. You can include messenger feature to your app or service with minimum code. For deta

Clover Studio 608 Dec 23, 2022