Number: 010, Date: 2025-03-17

2025.03.10 ~ 2025.03.16

✈️ Side Project Design


Steps for designing a side project: Architecture pattern → Design resources → Planning → Technologies to use

Before starting the side project, I considered various architecture patterns.I watched a lecture on GUI architecture patterns, and my key takeaway was that instead of using architecture patterns to solve problems, it is crucial to choose the right architecture based on the development environment.

I found some useful templates for different architecture patterns:

When developing a side project, design considerations are also important. Searching in Figma Community provides various mobile design templates and resources.

From a service planning perspective, I brainstormed ideas for what kind of project to build.

From a technical perspective, I debated whether to store data on a server or locally on the device.I decided to try SwiftData, which I hadn’t used before. I also discovered that Firebase provides an Emulator that allows running services locally in a dev environment without incurring costs.

🙋🏻‍♂️ Other Notes


  1. For iOS project security, I used .gitignore to prevent Swift files from being uploaded. Another approach is setting variables in xcconfig files.
  2. When designing a service related to maps and addresses in Korea, it is important to consider whether to use administrative districts, legal districts, or road names as the standard for planning and design.
    • Additionally, codes are provided for each type of address.
  3. I identified and fixed a race condition in concurrent programming by enabling TSan (Thread Sanitizer) in Xcode.
    • While using sync for read/write operations or a barrier is an option, in this case, there was no need for execution on a separate queue, so I modified it to avoid sending the task to a global queue.
  4. I tested a sample of the Tmap EDC SDK, which enables app-to-app data transfer from the Tmap app to another app. Interestingly, in Android, despite being a third-party app, the data transfer process was seamless.