WordQuizDaily is a SwiftUI vocabulary learning app that helps learners review one Korean word every day, solve short quizzes, and keep a steady study rhythm through reminders.
The project is built as a real App Store product, with localized resources, widget support, push notification integration, and a local learning-word model designed to keep the core study flow available even when remote services are unavailable.
View App Store · Product Page · Project Docs
- Product-minded iOS implementation: today word, quiz, reminder, widget, and App Store presentation are treated as one user journey.
- Offline-first learning data: the MVP learning content is stored locally so definitions, examples, romanization, and feedback can load without depending on a server.
- Localized learner experience: Korean, English, and Japanese resources support a broader learner audience.
- Maintainable SwiftUI structure: screens, view models, models, network clients, services, helpers, and localization resources are separated by responsibility.
- Recruiter-friendly documentation: product scope, architecture notes, QA checklist, and implementation boundaries are documented for reviewers.
| Area | Description |
|---|---|
| Today Word | Shows a daily Korean word with learner-friendly definition, romanization, part of speech, difficulty, and example sentence. |
| Quiz | Generates multiple-choice quizzes from the local learning-word repository and gives answer feedback after submission. |
| Feedback | Explains the correct answer with meaning, example, romanization, difficulty, and review hints. |
| Reminder | Supports notification-driven study habits through Firebase Cloud Messaging integration. |
| Widget | Provides a home-screen widget target for quick daily-word exposure. |
| Localization | Maintains Korean, English, and Japanese resource files for app labels and learning flow text. |
- Language/UI: Swift, SwiftUI
- Architecture: MVVM-style screen state with
ObservableObjectview models - Data: Local
LearningWordRepositorysample data and validation rules - Networking/Media: Naver image search integration, Kingfisher image loading
- Notifications/Analytics: Firebase Analytics, Firebase Messaging
- Monetization: Google Mobile Ads banner integration
- Distribution Assets: App Store screenshots and GitHub Pages product page
WordQuizDaily/
├── WordQuizDaily/
│ ├── WordQuizDaily/ # Main SwiftUI app target
│ │ ├── Models/ # Learning words, Naver response models
│ │ ├── Views/ # Home, quiz, settings, AdMob views
│ │ ├── Network/ # Naver API clients
│ │ ├── Services/ # FCM service and notification manager
│ │ ├── Helpers/ # Localization and formatting helpers
│ │ └── Resources/Localizations # ko, en, ja strings
│ ├── WordQuizWidget/ # Widget extension
│ └── NotificationServiceExtension/
├── AppStoreScreenshots/ # Store-ready screenshots
├── docs/ # Product page and project documentation
└── tools/ # Screenshot framing utility
- macOS with Xcode 15 or newer
- iOS 17.0+ deployment target for the main app
- CocoaPods if you want to install pod-based dependencies
- Firebase configuration file for local notification/analytics builds
- Clone the repository.
- Run
pod installinside theWordQuizDaily/directory if thePods/support files are not present locally. - Copy
WordQuizDaily/WordQuizDaily/Config.xcconfig.exampletoWordQuizDaily/WordQuizDaily/Config.xcconfigand fill in local API/ad identifiers. - Add a valid
GoogleService-Info.plistto the app target when building Firebase-enabled flows. - Open
WordQuizDaily/WordQuizDaily.xcworkspacein Xcode. - Confirm signing settings for the app, widget, and notification extension targets.
- Build and run the
WordQuizDailyscheme on an iOS simulator or device.
GoogleService-Info.plist and local .xcconfig files are intentionally ignored by Git because they contain environment-specific configuration.
- Documentation Index
- Architecture Overview
- Foreign Learner MVP Scope
- Current Structure Analysis
- Reviewer QA Checklist
The next product milestone focuses on foreign Korean learners. The MVP keeps the existing today-word, quiz, and reminder flows, then strengthens them with:
- English meaning
- Easy Korean definition
- Romanization
- Part of speech
- Difficulty
- Korean example sentence
- English example translation
- Incorrect-answer feedback
This keeps the learning experience clear, reviewable, and resilient without requiring a new backend during the MVP phase.
WordQuizDaily does not require account creation for the core learning flow. The MVP learning content is local-first and does not depend on server-side personal study history.
- Developer: Jongwon Jeong
- Email: jjwon2149@gmail.com
feat: new featurefix: bug fixdocs: documentation updatestyle: formatting-only changerefactor: code refactortest: test updatechore: build or maintenance task
