디자인 시스템
개요
“윗투게더”는 최근 유행하는 “chill guy” 밈과 멘토링 시스템을 창의적으로 결합한 플랫폼입니다. 이 앱은 스트레스 없이 자연스럽게 성장할 수 있는 환경을 제공하여 멘토와 멘티 모두가 편안하게 목표를 달성할 수 있도록 돕습니다. 주요 특징으로는 부담 없는 목표 설정, 여유로운 성장 트래킹, 상호 피드백 문화, 자연스러운 경험치 시스템, 그리고 편안한 커뮤니티를 통한 지식 공유가 있습니다. 이를 통해 사용자들은 긍정적이고 효과적인 멘토링 경험을 할 수 있습니다.
배운 점 및 느낀 점
이 프로젝트를 진행하면서 멘토링의 중요성과 그 방식이 얼마나 다양할 수 있는지를 배웠습니다. 특히, 스트레스를 최소화하며 자연스럽게 소통하는 것이 멘토와 멘티에게 얼마나 큰 도움이 되는지를 깊이 이해하게 되었습니다. “Chill”이라는 개념이 단순한 여유를 넘어서, 긍정적인 피드백 문화와 지속 가능한 성장 환경을 만드는 데에도 중요한 역할을 한다는 점을 깨달았습니다.
트러블 슈팅을 통해 배운 점
Swift MVVM 패턴에서 서버에서 학교 정보를 불러올때 배열에 학교가 불러와지지 않는 문제가 발생하였습니다.
ViewModel에서 데이터를 처리하여 View에 전달하는 데이터 파싱 과정에서 서버로부터 받은 데이터의 형식이 배열로 받아야 하는데, 실제로는 배열이 아닌 객체 형식으로 응답받아 파싱 오류가 발생했습니다. 이로 인해 배열에 데이터가 받아지지 않았습니다.
데이터 요청 실패: Response could not be decoded because of error:
The data couldn’t be read because it isn’t in the correct format.
위와 같은 에러가 나타났고, 데이터 모델을 수정하여 ArticleResponse 구조체의 data 속성을 배열로 정의합니다. 이를 통해 JSONDecoder가 올바르게 데이터를 파싱할 수 있도록 하였습니다.
{
"status": 1073741824,
"data": [
{
"id": 9007199254740991,
"name": "string",
"content": "string",
"profile_url": "string",
"created_at": "2025-03-10T11:49:30.035Z"
}
]
}
JSON
복사
서버에서 반환한 JSON
import Foundation
struct ArticleModel: Decodable, Identifiable {
let id: Int
let name: String
let content: String
let profile_url: String
let created_at: String
}
struct ArticleResponse : Decodable {
let status: Int
let data: ContactModel
}
Swift
복사
SwiftModel
import Foundation
struct ArticleModel: Decodable, Identifiable {
let id: Int
let name: String
let content: String
let profile_url: String
let created_at: String
}
struct ArticleResponse : Decodable {
let status: Int
let data: [ContactModel]
}
Swift
복사
이 이슈를 통해 뷰의 중요성과 MVVM 패턴의 형식에 대해 더 자세히 알게되었습니다.
주요 사용 기술
•
Swift, SwiftUI, TypeScript, React, Notion
팀원
•
iOS 2명 (본인 포함), 디자인 1명(본인), 프론트엔드 1명, 기획자 1명