This project is a culmination of the skills acquired during the iOS & Swift - The Complete iOS App Development Bootcamp by Angela Yu on Udemy.
![](https://private-user-images.githubusercontent.com/104163003/290343620-d260c94e-37f2-4169-bd74-eaef6c5ad37a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwMzUxODEsIm5iZiI6MTcxOTAzNDg4MSwicGF0aCI6Ii8xMDQxNjMwMDMvMjkwMzQzNjIwLWQyNjBjOTRlLTM3ZjItNDE2OS1iZDc0LWVhZWY2YzVhZDM3YS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyMlQwNTQxMjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT00ZDFlZWQ0MmU3Y2FiMjJhYzQwNTNjZjk3NjE5MzE1YzIxNzYwMDkyYjg4OTUxNmEyYjZhOTA0NDI5YWFiZTQ0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.5aqpQbTluGoaQ8urEBsoIlg6GYz4Fn_xFe2hkH4o2d0)
![](https://private-user-images.githubusercontent.com/104163003/290343621-0c517b43-d15f-4c34-a52d-9420739c79ca.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTkwMzUxODEsIm5iZiI6MTcxOTAzNDg4MSwicGF0aCI6Ii8xMDQxNjMwMDMvMjkwMzQzNjIxLTBjNTE3YjQzLWQxNWYtNGMzNC1hNTJkLTk0MjA3MzljNzljYS5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjQwNjIyJTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI0MDYyMlQwNTQxMjFaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT01YTI5NDgxZTFjMTMyZTg4MDI5YTlhMjk0N2UxYjljOGY2ODRiY2VmOGIwNWRiZGZkZjU2ZDU2ZmYyNjFkNTQ0JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCZhY3Rvcl9pZD0wJmtleV9pZD0wJnJlcG9faWQ9MCJ9.DTp6UdLZPdBfCygFlWHaMoW0rahyzOdRNEfLSwX5Zro)
-
Swift Package Manager + Firebase: Utilized the Swift Package Manager to integrate Firebase services, enabling user authentication (ensuring secure user registration, login, and logout) and cloud-based storage for message data (storing messages, senders, and timestamps, facilitating real-time data synchronization and storage). Error alerts are displayed in case of authentication issues.
-
Messages on a Table View: Utilized table view cells to display messages, senders, and timestamps, providing a structured and organized way to view and interact with the message data.
-
Customized Cell Sizing Logic: Implemented a dynamic cell sizing logic to ensure each message cell adapts to its content and respect constraints, enhancing the overall user interface.
-
IQKeyboardManager Integration: Integrated IQKeyboardManager using Swift Package Manager to handle keyboard interactions seamlessly while users input their messages.
-
MVVM Design Pattern with ViewCode: Transformed the project architecture to adhere to the MVVM (Model-View-ViewModel) design pattern using ViewCode. This adaptation from the initial MVC (Model-View-Controller) and Storyboard structure in the course's project sketch resulted in a more organized and modular codebase.
- Clone the Repository:
git clone https://github.com/guilhermebrv/flash-chat.git
- Open in Xcode:
- Launch the project in Xcode and run it on your preferred iOS simulator or device.
- Explore and start messaging:
- Register, log in, and log out securely using FirebaseAuth.
- Input messages, and witness real-time updates as the data syncs with Firebase Firestore.
- Experience a smooth and intuitive messaging interface with dynamic cell sizing and keyboard management.
- Angela Yu - Udemy Instructor: Grateful for the comprehensive iOS development course that inspired and equipped me to develop this chat messaging app.