Code

Pet Projects for iOS Developers: 6 Creative Ideas

Pet Projects for iOS Developers: 6 Creative Ideas

Free Python course: 4 projects for your Portfolio

Learn More

Your Perfect Bus Stop Tracker App

The task difficulty is rated at four stars.

You will gain skills in working with background processes, learn how to track geolocation in real time, and create notifications for users. These skills will help you effectively manage applications and improve user interactions.

To implement the project, you will need the following tools: Swift for development, UIKit for creating the UI, User Notifications for managing notifications, Core Location for working with geolocation, and a map integration framework of your choice. Using these technologies will ensure high-quality and functional development of the application that meets user requirements.

The application is designed to notify users when they are approaching their bus stop. In the basic version, the application stores information about several bus stops and activates a background process when the user approaches them. As a result, users receive local notifications that help them not miss the stop they need.

To successfully implement the project, two key screens must be developed. These screens will be the main interface elements and will play a significant role in the user's interaction with the application. Each screen must be intuitive and functional to ensure a positive user experience.

On the application's start screen, users will be presented with a list of stops. If there are currently no stops, the user will be prompted to add their first stop to begin using the application. If stops have already been added, a list of them will be displayed on the screen with the option to add a new stop, allowing for easy route management and trip planning.

The stop-add screen should be implemented using a mapping framework. It is recommended to choose one of the popular SDKs, such as Apple, Google, or Yandex. The user will be able to easily select a point of interest on the map. After selecting a point, a form for entering a stop name will open, and the save button will remain inactive until the name is entered. It is also possible to cancel a selection and return to the interactive map. This approach ensures the convenience and ease of use of the interface for adding stops.

After saving the point, you must ensure that you have permission to use geolocation. If permission is not granted, the user will be prompted to grant it or manually activate the geolocation function in the device settings. This is important to ensure data accuracy and the ability to fully utilize geolocation-related functionality.

When geolocation is enabled and a checkpoint is set, the application begins tracking the user's location. As soon as the user approaches the specified point within a certain distance, the application automatically creates a local notification. This notification will contain a banner and an audio alert sent through the notification center. This approach ensures that the user is promptly informed of their proximity to important locations.

To successfully implement a project, it is necessary to examine the key aspects that affect its effectiveness. It is crucial to carefully analyze the requirements and goals of the project, determine the target audience and their needs. It is also necessary to consider the methods and tools that will help achieve the stated objectives. Equally important are the timeframes and budget, which must be considered at every stage of the project. A detailed understanding of these aspects will help ensure the successful completion of the project and the desired results. Working with background processes Using CLLocationManager Creating local notifications Map integration (choose a framework to suit your needs) Expanding application functionality Software updates can introduce a number of additional features that can significantly improve the user experience. This may include integrating new tools, improving the interface, adding new customization options, and optimizing performance. It is important to consider user needs and market trends to make the application more competitive and attractive to the target audience.

  • Editing and deleting stops.
  • Activating and deactivating stops (so that they remain in the list, but are not tracked while inactive).
  • Adding schedules: the ability to link tracking to days of the week or specific time intervals.
Sample app interface

Check out the following resources:

Learning Swift and becoming an iOS developer is possible by following a clear step-by-step plan. Start by learning the basics of the Swift programming language, familiarizing yourself with its syntax and key concepts. We recommend using online resources and courses, such as those offered on the Ray Wenderlich website or the Apple Developer website.

Once you have mastered the basics, start building simple apps to reinforce your knowledge and gain practical experience. This will help you understand how to design interfaces, work with APIs, and manage data.

Next, explore development tools like Xcode and learn how to use frameworks like UIKit and SwiftUI. This will give you the ability to create more complex and functional apps.

Don't forget the importance of practice. Contribute to open source projects, create your own apps, and publish them to the App Store to expand your portfolio.

Prepare for interviews by studying typical questions and tasks that may arise during interviews. It is also helpful to familiarize yourself with the principles of app design and architecture.

By following this plan, you will be able to successfully master Swift and become a skilled iOS developer.

Health Diary: Track Your Well-Being with an App

Difficulty Level: 3 out of 5 Stars.

This project uses modern technologies, including Swift, UIKit, Core Data, and Swift Charts. Swift is a powerful programming language that provides high performance and security when developing apps for the iOS platform. UIKit serves as the main framework for creating the user interface, allowing developers to easily design and customize visual elements. Core Data enables efficient data management, allowing you to store and retrieve information with high performance. Swift Charts, in turn, provides data visualization tools, making information analysis more accessible and visual. Using these technologies, you can create innovative and high-quality applications that meet modern user needs.

In this project, you will learn how to effectively work with databases and master data visualization techniques. You will gain practical skills that will help you analyze and present data in an easy-to-understand format. These are important competencies for data analysis specialists, which will help you in your future career.

This application is designed to collect and analyze your health statistics, as well as to assess the impact of external factors on your well-being. With its help, you will be able to track changes in your condition, identify patterns, and make informed decisions to improve your quality of life.

The user independently selects a set of metrics to track. For example, they can record their mood on a scale of 1 to 10, the number of cups of coffee consumed, the outside temperature, and the duration of sleep in hours. Once the metrics are determined, the active data collection process begins, which allows for a better understanding of one's own state and the identification of patterns. This approach promotes more conscious lifestyle management and improves overall well-being.

Users launch the app daily to enter their results. This data is saved locally using Core Data, ensuring secure storage of information. The results are then visualized as graphs on a separate screen, allowing users to easily track their achievements and progress.

In its basic version, the app will consist of three key screens. Each of these screens will perform unique functions, providing users with a convenient and intuitive interface. The main screens of the app will be optimized to enhance the user experience and efficient task completion.

The screen for daily data entry is an important element of the interface. It should include a list of input fields, where each field corresponds to one of the selected indicators. Since this screen is used regularly, it makes sense to make it the starting screen. This will ensure convenient and quick access to the necessary information, which will improve user efficiency.

The indicator settings screen allows the user to add, edit, and delete parameters. It is important to set the name and measurement boundaries for each indicator. For example, for the mood indicator, the range can be from 1 to 10, and for hours of sleep - from 0 to 24. These specified values ​​​​will be used to build graphs, which will allow you to visualize the dynamics of changes and track the state.

The improved version of the application has a function that automatically opens the settings screen if the list of indicators remains empty. This improves the user experience and allows you to quickly configure the necessary parameters.

The statistics screen is a key element of the project, as it presents graphs of various indicators. For best results in data visualization, we recommend using the Swift Charts framework. This tool is specifically designed for creating graphs and charts, allowing you to effectively and clearly display statistical information. Using Swift Charts not only simplifies the development process but also improves user experience, making statistics screens more informative and useful.

The primary goal is to visualize various parameters on a single chart, even if they have different units of measurement and steps. Swift Charts allows you to add a second Y-axis with a custom scale, allowing you to simultaneously display two parameters on a single chart. This improves data comprehension and facilitates analysis, providing a more complete understanding of the relationships between metrics. Using a secondary Y-axis in Swift Charts helps create intuitive visualizations, which is especially important for analysts and developers working with multidimensional data.

In more complex cases, it is necessary to convert all data into a single format. For example, if one scale ranges from 1 to 10 (10 steps) and another from 0 to 24 (25 steps), the overall scale should be 50 divisions, which corresponds to the lowest common multiple of 10 and 25. This will ensure accurate and comparable data representation, which is especially important for analytics and information visualization.

Designing the way data is displayed plays a key role in ensuring its ease of interpretation by users. To enhance the information in your charts, you can use labels for data points and implement tooltips that are activated by long-pressing. These elements will help users better understand the data presented and make the analysis process more intuitive and accessible.

To improve your project, consider exploring alternative charting frameworks. Even if you don't plan to use them, it is important to mention the solutions you explored and justify your choices in the project comments. This will demonstrate your attention to detail and deep understanding of the topic, which will positively impact your image in the eyes of potential employers. Mentioning various frameworks will not only enrich the content of your project but also highlight your willingness to learn and grow professionally in the field of development.

Learn the story of a C++ developer who was able to turn his pet project into a successful startup. Find out what steps he took to achieve success and how his experience can inspire you to create your own project. This story illustrates how persistence and innovation can lead to significant advances in technology.

Creating a Character Stat Sheet for D&D

Project difficulty: three stars out of five.

You will master the careful study of the technical specifications and the basic principles of layout for mobile development. This will allow you to effectively work on projects, taking into account all the nuances and requirements. An in-depth understanding of layout in the context of mobile devices will help you create responsive and convenient interfaces that enhance the user experience.

To work with applications on the iOS platform, you will need the following tools: Swift and UIKit. Swift is a modern programming language developed by Apple, which provides high performance and code security. UIKit, in turn, is a powerful framework that allows you to create interfaces for mobile applications using controls, animations, and gestures. The combination of Swift and UIKit is the primary approach for developing high-quality and functional apps for iPhone and iPad.

This project, while not as technically complex as the previous ones, requires a keen eye for detail and precision. These qualities, often underestimated by novice developers, can be a competitive advantage in the job market. By paying attention to small aspects of your work, you can demonstrate your professional competence and increase your chances of attracting the attention of employers. Ultimately, it is meticulous attention to detail that allows you to create high-quality and successful projects.

The main task is to create an application for character generation and automatic character stats in accordance with the rules of Dungeons & Dragons. If you are new to D&D, some aspects may seem complicated at first. However, if you have experience with the game, you know how important it is to consider all character stats, including race, class, skills, and background. This app is designed to simplify the character creation process, ensuring compliance with all game rules and nuances, making your gaming session more engaging and smooth.

A character in a role-playing game can be described through their backstory and a unique set of characteristics. A character's backstory plays a key role in shaping their personality and motivations, while their characteristics define their abilities and playstyle. Every aspect of character creation contributes to a deeper immersion in the gameplay and allows players to better understand and develop their hero. Thus, attention to detail in a character's backstory and characteristics enriches the gaming experience and makes role-playing more engaging.

  • A backstory is a narrative about the character's life, habits, motivations, and thoughts. For example, a character might be a knight, a jester, or a craftsman, each of which gives them unique properties.
  • Attributes are parameters that help evaluate the success of a character's actions: how far they can move per turn, how much damage they can inflict, whether they can persuade an opponent, etc.

A character's attributes are shaped by many factors, including race, class, profession, skills, and level. An important aspect is the character's background: for example, a merchant's son might have a large amount of wealth, which opens up additional opportunities. At the same time, a warrior, while possessing physical strength and high combat skills, might be less eloquent and less successful in diplomatic negotiations. Such aspects make a character unique and influence their interactions with the world, which in turn enriches gameplay and deepens the story.

Example of the application interface. Image: DALL-E 3 / Skillbox Media

All dependencies are detailed in the game rules, which may change depending on the version and additions. To view a full list of stats, you can find PDF versions of character sheets, such as those for 5th Edition. These materials will help you better understand the game mechanics and optimally customize your character.

Some of these sheets allow you to enter data and calculate stats, but their implementation can be complex due to the use of PDF files with executable code. Interacting with such files on computers is more convenient than on mobile devices such as iPads or iPhones. This makes it difficult to use the functionality on smaller screens, where controls may be less intuitive and more limited.

The main goal of the project is to allow users to select key character stats. Based on these selections, the sheet with calculated values ​​will be automatically populated. Emphasis should be placed on independently developing rules that will subsequently be implemented in code. This will ensure the flexibility and adaptability of the system, as well as improve the user experience.

Good luck with your app development! I can't wait for them to appear in the App Store.

Team lead of the mobile development team at Ozon Tech with experience in iOS since 2019. Graduated from School 21 at Sber and is an expert in mobile development at Skillbox. Possesses deep knowledge of mobile app development and is actively involved in creating innovative solutions for users. Successfully manages projects aimed at improving user experience and implementing new technologies in mobile development. A portfolio of apps built using both UIKit and SwiftUI is a significant advantage for aspiring developers. This demonstrates to employers your deep understanding of different architectures and approaches to interface development. UIKit apps can emphasize the implementation of business logic, while SwiftUI emphasizes visual elements and animations. This diverse experience will help you stand out from other candidates and demonstrate your ability to adapt to diverse project requirements.

Significant Events of This Day in History

Hard Difficulty Level: ⭐⭐⭐⭐✰

Our project involves challenges that require a high degree of complexity. This difficulty level reflects the need for deep analysis and a thoughtful approach to problem solving. It is suitable for those who are ready for intellectual challenges and have experience in the field.

To successfully complete challenges at this level, it is important to have critical thinking skills and the ability to find innovative solutions. We strive to provide high-quality content that will be useful and informative for our audience.

Understanding all the nuances and details associated with a high level of complexity will allow you not only to successfully cope with current tasks but also to develop your professional skills.

In this material, you will gain knowledge of the MVC and MVP architectures, as well as learn how to effectively interact with APIs and make network requests. You will master the fundamental principles of working with these architectures, which will allow you to create more structured and maintainable applications. Understanding interaction with APIs will help you integrate third-party services and retrieve data for your projects. Skills in making network requests will form the basis for working with various protocols and data formats. Learning these concepts will significantly improve your skills in software development.

To develop applications in Swift using UIKit and URLSession, it is necessary to take into account the specifics of working with these tools. Swift is a modern programming language that offers powerful capabilities for creating efficient and secure applications. UIKit provides a comprehensive set of components for creating user interfaces, allowing developers to easily implement interactive elements and responsive design. URLSession, in turn, enables efficient management of network requests, enabling data loading from remote servers and the exchange of information. By using these tools in combination, developers can create high-quality applications that provide users with quick access to the information they need and an improved user experience. It is important to remember that code optimization and proper implementation of network requests directly impact application performance. Effective use of Swift, UIKit, and URLSession will help you create applications that are not only functional but also fast, significantly increasing user satisfaction. In modern programming, developers actively use third-party libraries and tools to solve specialized problems. For example, if your application requires text translation, there is no need to create your own translator – simply integrate a ready-made API. The basic concept of working with the API is that the application sends requests to an external service and receives a response with the necessary data. This significantly reduces development time and allows developers to focus on the application's core functions, improving its performance and functionality. API integration also simplifies updates and support, as developers can use proven solutions, reducing the likelihood of errors and accelerating the development process. The "Significant Events of This Day" application offers users information on important historical facts associated with a selected date. The Numbers API, which provides information in English, is used to retrieve data. The Yandex API can be used to translate this data into Russian, making the information accessible to Russian-speaking users. This application will be a useful tool for those interested in history and want to learn what events occurred on a given day in different years. The first screen is a date entry screen, which can be implemented using the standard DatePicker component. After the user selects a date, they are automatically taken to the next screen. This approach provides a convenient and intuitive interface for users, allowing them to quickly and easily enter the required data.

The second screen is designed to display a fact about the current day. When navigating to this screen, a URL request must be made to the Numbers API to retrieve the corresponding fact. The retrieved data must then be translated using the translator API. While the data is loading, it is recommended to display a loading indicator to inform the user that the information is being processed. Once the loading is complete, the retrieved fact must be displayed on the screen, adding aesthetics, for example, using a frame to improve visual perception.

To send a request from the second screen, the date retrieved on the first screen must be passed. It is recommended to create a common class for handling dates and queries, which will allow both screens to effectively use the same functionality. This optimizes the data transfer process and improves the code structure, ensuring easier maintenance and development of the project.

It is important to note that key points require special attention. Proper understanding of the information can significantly impact the decisions made. This is especially true in a rapidly changing environment. Understanding the importance of details and their impact on the big picture will help you avoid common mistakes. It's also important to remember that regular review and updating of knowledge are essential for success. Remember that ignoring important aspects can lead to undesirable consequences.

Complying with copyright and API usage guidelines is a key aspect of working with translation services. The screen displaying the translated text must display the message "Translated by..." with an active link to the translator's page. This not only complies with legal requirements but also ensures transparency for users. Additionally, it's a good idea to include information about using this service in the Readme file of your GitHub repository. This will help other developers understand how you've integrated the translator into your project and what guidelines they must adhere to.

To improve the quality of your project, it's worth implementing a language selection feature for content translation. This will significantly improve the user experience and make your project more accessible to a wider audience. Furthermore, it's recommended to pay attention to error handling, which will help prevent crashes and improve application stability. You should also consider caching API responses, which will improve loading speed and reduce server load. These measures will help make your project more efficient and attractive to users.

Creating a Game ‘Find a Pair’

Difficulty level: 3 out of 5 stars.

You will master the MVVM architectural approach, learn how to create interfaces using VStack, HStack, and ZStack components. You will also gain skills in working with images, animation, and random number generation, which will allow you to develop more interactive and visually appealing applications.

To develop interfaces on the iOS platform using SwiftUI, you will need several key tools. SwiftUI is a modern framework from Apple that allows you to create user interfaces using declarative syntax. The main tool for working with SwiftUI is Xcode, an integrated development environment (IDE). Xcode provides all the necessary tools for writing, testing, and debugging applications in Swift.

It's also important to have the latest version of macOS, as SwiftUI is only supported on the latest versions of the operating system. Knowing the basics of Swift, the programming language behind SwiftUI, will greatly simplify the development process.

Additionally, to use SwiftUI effectively, you can take advantage of various resources, such as Apple documentation, online courses, and developer forums. These resources will help you deepen your knowledge and improve your skills with SwiftUI, which in turn will lead to the creation of higher-quality and more functional apps.

To successfully develop apps with SwiftUI, it's essential to keep up with framework updates, as Apple regularly adds new features and improvements. This will help you stay on top of the latest trends in iOS development and take full advantage of what SwiftUI has to offer.

This is a fun and simple game where the goal is to remember the locations of pairs of identical cards and then open them. Players must focus on the locations of the cards to successfully find pairs and earn points. This game develops attention, memory, and strategic thinking, making it an excellent choice for entertainment and brain training.

To develop this application, you need to create a screen with cards. This screen will contain a scrolling collection of cards with images on the back. At the beginning of the game, the player is given a few seconds to familiarize themselves with the cards and memorize their order. After this, the cards are turned over, and the player's task is to find pairs of identical images. This makes the game engaging and trains memory, offering the user an interesting challenge.

This project includes interesting tasks, such as creating cards and implementing an animation of their flipping using the rotation3DEffect effect. An important aspect is the logic for storing cards, for which it is recommended to use an array in the View Model. In addition, it is necessary to develop an algorithm for shuffling the cards. After the completion of each round, the array of cards should be shuffled so that they are displayed in a new order. This will ensure dynamism and variety in the gameplay, increasing user interest in the project.

Increasing the complexity of the game can significantly increase the interest and engagement of players. One way to do this is to provide a choice of the number of cards, which will allow you to adapt the difficulty level to each participant. It is also worth adding a counter that will track both successful and unsuccessful attempts of players. This will create an element of competition and provide an opportunity to analyze performance, which can help improve the gameplay.

Visualization of the 'Find a Pair' application interface. Image: DALL-E 3 / Skillbox Media

Effective Self-Presentation in IT

Difficulty Level: 4 out of 5 stars.

You will master the skills of improvisation in app development without having to follow strict technical specifications. You will also learn how to use basic SwiftUI components to create interfaces. This course will help you develop your creativity in programming and confidence in working with modern development tools.

To work with SwiftUI, you will need certain tools. SwiftUI is a powerful framework from Apple that allows you to create interfaces for applications on iOS, macOS, watchOS, and tvOS using a declarative approach. The most important tools for developing with SwiftUI are Xcode, which provides the development environment, and the Swift compiler, which is necessary for running the code. It is also useful to have access to Apple's documentation, where you can find examples and recommendations for working with SwiftUI components. Don't forget the importance of testing on real devices to achieve the best user interface results.

Creating a self-introduction app is an effective way to showcase your SwiftUI development skills and make a positive first impression on a potential employer. In such an app, you can not only showcase your technical skills but also talk about your IT experience and share personal stories, hobbies, and interests. This will allow you to stand out from other candidates and demonstrate your individuality, which is especially important in the creative field. Developing such an app also helps improve programming skills and deepen your understanding of interface principles, which can be useful later.

To enhance the engagement of your app, it is important to use a variety of interface elements on each screen or section. SwiftUI provides a wide selection of customizable components that can significantly enhance your interface. Scrolling photos, zoom and rotate functions, customized text fields, selectors, and sliders—all these tools will help create a unique and interactive user experience. It's important to remember that adding elements should be justified and consistent with the overall functionality of the app, so as not to overload the interface or distract the user from the main task. Using a variety of components not only improves visual perception but also increases user engagement, which ultimately impacts the success of your app.

Your creativity is key when working with components. Although this process may seem complex, it's precisely this that makes it so much more engaging. Don't hesitate to experiment and implement unconventional ideas to help your project stand out from the competition. Good luck on this interesting path to creating unique content!

The Python Developer Profession: 3 Projects for a Successful Career

Want to become a Python developer? Find out how 3 projects will help you advance your career with expert support!

Find out more