iOS Application
Corona Contact Diary iOS App
About this Project
Project Overview
The Corona Contact Diary is an iOS application developed as a response to the need for effective contact tracing during the pandemic. It provides users with a secure and private way to log their daily encounters with people and visits to locations. All data is stored locally on the user's device and is automatically deleted after 14 days to ensure privacy. The app was built to be a practical tool, helping users quickly recall their recent activities if necessary for health-related reasons.
The Challenge
The primary challenge was to build a robust, user-friendly mobile application that handles sensitive personal data responsibly. This involved designing a secure local storage system with Core Data that enforced the 14-day data retention policy. Integrating multiple iOS frameworks—such as Core Data for persistence, MapKit for location visualization, and the Contacts framework for easy entry—while maintaining a smooth user experience was a key technical hurdle. Another challenge was implementing clean API calls to the Google Maps services for location searching and geocoding without compromising app performance.
Key Features
- Encounter Logging: Create detailed entries for each encounter, including date, time, duration, and whether a mask was worn.
- Contact Management: Add people to encounters either manually or by importing them directly from the device's contacts list.
- Location Services: Pinpoint encounter locations using the device's current GPS coordinates or by searching for a specific address via the Google Maps API.
- Data Privacy: All data is stored locally on the device, and entries older than 14 days are automatically deleted on app launch.
- History View: Easily review past encounters, saved persons, and visited locations through dedicated tabs.
- Interactive Maps: View the precise location of any encounter on an integrated map within the encounter details screen.
Technical Deep Dive
The application is built natively for iOS using the MVC (Model-View-Controller) architecture.
-
Frontend: The user interface was constructed using Swift and UIKit, leveraging Storyboards and XIB files for clear, reusable UI components. Custom
UITableViewCells were created to display information for persons, locations, and encounters consistently. The app integrates Apple's MapKit framework to display interactive maps and CoreLocation to fetch the user's current geographic coordinates. -
Backend (On-Device): The application's persistence layer is powered by Core Data, which manages the local SQLite database. The data model is designed with three main entities:
EncounterCD,PersonCD, andLocationCD, with relationships defined to link people and locations to specific encounters. All data operations, including the 14-day automatic deletion logic, are handled within the app. Networking is managed viaURLSessionto make asynchronous REST API calls to Google's Geocoding and Places APIs, parsing the JSON responses to retrieve location data. -
DevOps/Deployment: The project was developed and managed entirely within Xcode. A suite of unit tests was written using the XCTest framework to ensure the reliability of key functionalities, such as encounter time calculations and data handling logic.
Personal Learnings
This project was a comprehensive exercise in building a full-featured iOS application from the ground up. I gained significant hands-on experience with crucial iOS frameworks like Core Data, MapKit, and CoreLocation. Implementing the networking layer to communicate with third-party APIs and handling asynchronous data flows was a major learning point. Furthermore, I learned to prioritize user privacy by designing a system with local-only data storage and a strict data retention policy, which are critical considerations in modern application development.