Taha Turan
As an iOS developer, I meticulously craft mobile applications, ensuring seamless user experiences and innovative designs.
I am an individual deeply committed to continuously improving my skills in the realm of software development. Having graduated from Pamukkale University with a degree in Management Information Systems, I am on a path to amass experience in mobile application development. My development work is primarily focused on utilizing the Swift programming language, and I engage in various projects to further expand my knowledge and skills in this domain. My interest extends to database management, user experience design, and exploring software architectures, areas in which I am determined to advance. I share my projects on the GitHub platform and contribute to open-source initiatives, reflecting my commitment to continuous learning and the application of new technologies in my projects.
Projects
NetflixClone is a mobile application designed to discover, watch, and share popular series and movies with your friends. It has been developed using modern MVVM architecture and a protocol-oriented programming approach, incorporating various features to enrich the user experience.
Features
Compatible with MVVM Architecture and Protocol-Oriented Programming: Developed in accordance with clean code principles using MVVM architecture and a protocol-oriented programming approach. Delegation processes are used for communication between pages.
Generic Network Layer: A reusable network layer that facilitates data exchange.
Dependency Injection: A dependency injection structure is used for managing dependencies.
Offline Viewing: Allows watching series and movies offline through download processes using Realm.
Movie Sharing (Deep Link): You can share series and movies with your friends via Deep Link support. Clicking on the shared link directly accesses the detail page of the related content.
Network Control: The status of the internet connection is constantly monitored with the Reachability package. Notifications are shown to the user when the network connection is lost. A warning is given to the user when they want to play a movie over cellular data.
Responsive Design: Has a responsive design that adapts to different screen sizes and ratios, ensuring users have the best viewing experience on any device.
Notifications: Automatic notifications are sent to the user upon the completion of the movie downloading process using NotificationCenter.default.
Used Packages
Realm: For data storage and management.
SDWebImage: For asynchronous image downloading and caching.
Reachability.swift: For monitoring the network connection status.
SnapKit: An Auto Layout library that simplifies coding for user interface layout.
ShopIT has been developed programmatically with Swift, without the use of storyboards. The application boasts a simple and understandable user interface and is structured using the MVC (Model-View-Controller) design pattern. It has been primarily designed with a focus on UI design to showcase a portfolio. Features that allow users to personalize their shopping experience, such as adding products to a cart and favorites, are available.
Features:
Simple and Understandable Interface: An intuitive design that facilitates easy navigation and shopping for users.
Cart and Favorites: Users can add products they like to favorites and place them in the cart for purchase.
Realm Database: Local Realm database is used for adding products to the cart and favorites. This allows the application to operate without relying on a cloud database.
API Integration with Alamofire: The application uses the internet to fetch product information through APIs, and these operations are performed with Alamofire.
MVC Design Pattern: The application is structured with the MVC design pattern for flexibility and easy maintenance.
Used Packages:
Alamofire: A Swift-based HTTP networking library used for HTTP network operations.
IQKeyboardManager: A library used to manage keyboard visibility and enhance user experience.
Realm: A database engine designed for mobile applications, used for database management.
SDWebImage: A library used for asynchronous image downloading and caching.
SnapKit: An Auto Layout DSL for Swift, making it easier and more understandable to write constraints with code.
CoffeeConnect is an iOS application where users can easily order coffee, share with other users if they wish, and create their own wish lists. The app has been developed using the MVC (Model-View-Controller) design pattern. It is completely programmed without the use of storyboards, meaning it is developed programmatically. User information and order details are managed through Firebase.
Features:
Programmatic Interface: The app is created entirely programmatically without using storyboards.
Firebase Integration: Database and storage operations are performed with FirebaseAuth, FirebaseFirestore, and FirebaseStorage.
Coffee Ordering: Users can order coffee through the app.
Social Sharing: Users can create their own posts and share them with others.
Wish List: Users can save their favorite coffees or the ones they want to try in a wish list.
User Login: Users can log in to the app with their account information.
MVC Design Pattern: The app is organized using the MVC design pattern.
Multi-Language Support: The app supports both Turkish and English language options.
Used Packages:
SnapKit: Used for creating a programmatic interface.
FirebaseAuth: Used for user login processes.
FirebaseFirestore: Used for database operations.
FirebaseStorage: Used for file and image storage operations.
IQKeyboardManager: Used to manage keyboard behaviors and improve user experience related to the keyboard.
I took an exciting step in the world of software development! By adopting the MVVM architecture and avoiding the use of storyboards, I brought to life a chat application I developed.
While developing the application, I paid special attention to writing the code in a tidy and understandable manner by using the MVVM architecture. Furthermore, I built a robust infrastructure behind the application by integrating Firebase's powerful services (Firestore, Firebase Storage, and Authentication). This enabled instant messaging capabilities for users.
Throughout the project process, I initially started with inspiration from a training resource. However, as time progressed, I began to adopt the project by adding my own experiences and specific features to it. During the coding process, I tried to develop the project by adding comment lines and incorporating my own ideas.
This experience has been a significant step in my software development journey, and I am eager to carry the knowledge I gained into future projects!
Experience
Internship - April 2023 to June 2023
My internship at Kodpit Company provided the opportunity to closely observe different aspects of the software development process. This valuable experience enabled me to strengthen my foundational skills, focus on the Swift programming language, and contribute to the development of an e-commerce application using Firebase.
Throughout my internship, I concentrated on enhancing my knowledge and skills in the Swift programming language. Moreover, I gained hands-on experience in developing an e-commerce application using the Firebase platform. These projects significantly contributed to increasing my industry knowledge by creating real-world applications.
Internship - June 2022 to August 2022
I had my first internship experience in the software sector at VBT Software. During this period, I received training on topics such as Flutter, SQL, and Design Patterns.
My interest in developing multi-platform applications with Flutter increased. I learned the fundamental principles of database management and data-based applications with SQL. Moreover, I understood the importance of Design Patterns in the organization and development processes of software projects.
Throughout my internship, I broadened my perspective by receiving training in different areas of the sector. These experiences will help me develop versatile approaches in my future projects.